*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary-50: #eff6ff;--primary-100: #dbeafe;--primary-200: #bfdbfe;--primary-300: #93c5fd;--primary-400: #60a5fa;--primary-500: #3b82f6;--primary-600: #2563eb;--primary-700: #1d4ed8;--primary-800: #1e40af;--primary-900: #1e3a8a;--accent-400: #2dd4bf;--accent-500: #14b8a6;--accent-600: #0d9488;--success-400: #4ade80;--success-500: #22c55e;--success-600: #16a34a;--error-400: #f87171;--error-500: #ef4444;--error-600: #dc2626;--warning-400: #fbbf24;--warning-500: #f59e0b;--warning-600: #d97706;--info-500: #3b82f6;--neutral-50: #fafafa;--neutral-100: #f4f4f5;--neutral-200: #e4e4e7;--neutral-300: #d4d4d8;--neutral-400: #a1a1aa;--neutral-500: #71717a;--neutral-600: #52525b;--neutral-700: #3f3f46;--neutral-800: #27272a;--neutral-900: #18181b;--gradient-primary: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);--gradient-header: linear-gradient(135deg, #3b82f6 0%, #2563eb 50%, #1e40af 100%);--gradient-card: linear-gradient(180deg, rgba(255, 255, 255, .9) 0%, rgba(255, 255, 255, .7) 100%);--gradient-button: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);--gradient-success: linear-gradient(135deg, #22c55e 0%, #14b8a6 100%);--gradient-warm: linear-gradient(135deg, #f97316 0%, #ec4899 100%);--gradient-cool: linear-gradient(135deg, #06b6d4 0%, #3b82f6 100%);--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .2);--glass-blur: blur(20px);--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-size-4xl: 2.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--spacing-1: .25rem;--spacing-2: .5rem;--spacing-3: .75rem;--spacing-4: 1rem;--spacing-5: 1.25rem;--spacing-6: 1.5rem;--spacing-8: 2rem;--spacing-10: 2.5rem;--spacing-12: 3rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.25rem;--radius-3xl: 1.5rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .12);--shadow-xl: 0 16px 48px rgba(0, 0, 0, .16);--shadow-glow: 0 0 40px rgba(59, 130, 246, .3);--shadow-card: 0 4px 20px rgba(0, 0, 0, .08), 0 0 0 1px rgba(0, 0, 0, .02);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1);--transition-bounce: .5s cubic-bezier(.68, -.55, .265, 1.55);--z-dropdown: 100;--z-sticky: 200;--z-modal: 300;--z-toast: 400;--safe-area-top: env(safe-area-inset-top, 0);--safe-area-bottom: env(safe-area-inset-bottom, 0)}html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.6;color:var(--neutral-800);background:linear-gradient(180deg,#f8fafc,#f1f5f9);min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}#root{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}a{color:var(--primary-600);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--primary-700)}img{max-width:100%;height:auto;display:block}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;transition:all var(--transition-fast)}button:disabled{cursor:not-allowed;opacity:.6}input,textarea,select{font-family:inherit;font-size:var(--font-size-base);border:2px solid var(--neutral-200);border-radius:var(--radius-xl);padding:var(--spacing-3) var(--spacing-4);width:100%;background:#fff;transition:all var(--transition-fast);outline:none}input:focus,textarea:focus,select:focus{border-color:var(--primary-400);box-shadow:0 0 0 4px #3b82f61a}input::placeholder{color:var(--neutral-400)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-6);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);border-radius:var(--radius-xl);transition:all var(--transition-base);cursor:pointer;border:none;text-decoration:none;position:relative;overflow:hidden}.btn:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.2) 0%,transparent 100%);opacity:0;transition:opacity var(--transition-fast)}.btn:hover:before{opacity:1}.btn:active{transform:scale(.97)}.btn-primary{background:var(--gradient-button);color:#fff;box-shadow:0 4px 14px #3b82f666}.btn-primary:hover{box-shadow:0 6px 20px #3b82f680;transform:translateY(-2px)}.btn-secondary{background:#fff;color:var(--neutral-700);border:2px solid var(--neutral-200)}.btn-secondary:hover{background:var(--neutral-50);border-color:var(--neutral-300)}.btn-success{background:var(--gradient-success);color:#fff;box-shadow:0 4px 14px #22c55e66}.btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;box-shadow:0 4px 14px #ef444466}.btn-outline{background:transparent;border:2px solid var(--primary-400);color:var(--primary-600)}.btn-outline:hover{background:var(--primary-50)}.btn-lg{padding:var(--spacing-4) var(--spacing-8);font-size:var(--font-size-lg);border-radius:var(--radius-2xl)}.btn-sm{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-sm)}.btn-block{width:100%}.btn-icon{width:44px;height:44px;padding:0;border-radius:var(--radius-full)}.card{background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-card);overflow:hidden;transition:all var(--transition-base)}.card:hover{box-shadow:var(--shadow-lg)}.card-glass{background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border)}.card-header{padding:var(--spacing-4) var(--spacing-5);border-bottom:1px solid var(--neutral-100)}.card-body{padding:var(--spacing-4) var(--spacing-5)}.card-footer{padding:var(--spacing-4) var(--spacing-5);border-top:1px solid var(--neutral-100)}.input-group{margin-bottom:var(--spacing-5)}.input-label{display:block;margin-bottom:var(--spacing-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--neutral-700)}.input-field{display:flex;align-items:center;gap:var(--spacing-3);background:#fff;border:2px solid var(--neutral-200);border-radius:var(--radius-xl);padding:var(--spacing-3) var(--spacing-4);transition:all var(--transition-fast)}.input-field:focus-within{border-color:var(--primary-400);box-shadow:0 0 0 4px #3b82f61a}.input-field input{border:none;padding:0;flex:1;background:transparent}.input-field input:focus{outline:none;box-shadow:none}.input-icon{color:var(--neutral-400);font-size:var(--font-size-lg);flex-shrink:0}.badge{display:inline-flex;align-items:center;padding:var(--spacing-1) var(--spacing-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:var(--radius-full);letter-spacing:.02em}.badge-success{background:linear-gradient(135deg,#22c55e26,#14b8a626);color:var(--success-600)}.badge-warning{background:#f59e0b26;color:var(--warning-600)}.badge-error{background:#ef444426;color:var(--error-600)}.badge-info{background:#3b82f626;color:var(--info-500)}.page{flex:1;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#f1f5f9);min-height:100vh}.page-header{background:var(--gradient-header);padding:var(--spacing-4) var(--spacing-5);padding-top:calc(var(--spacing-4) + var(--safe-area-top));position:relative;overflow:hidden}.page-header:before{content:"";position:absolute;top:-50%;right:-20%;width:60%;height:200%;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);pointer-events:none}.page-header h1{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:#fff}.page-content{flex:1;padding:var(--spacing-5);overflow-y:auto;-webkit-overflow-scrolling:touch}.bottom-navbar{display:flex;justify-content:space-around;align-items:center;background:#fff;border-radius:var(--radius-3xl) var(--radius-3xl) 0 0;box-shadow:0 -4px 30px #0000001a;padding:var(--spacing-3) var(--spacing-4);padding-bottom:calc(var(--spacing-3) + var(--safe-area-bottom));position:fixed;bottom:0;left:0;right:0;z-index:var(--z-sticky)}.nav-item{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-1);padding:var(--spacing-2) var(--spacing-4);color:var(--neutral-400);font-size:var(--font-size-xs);text-decoration:none;transition:all var(--transition-fast);cursor:pointer;background:none;border:none}.nav-item svg,.nav-item .nav-icon{font-size:1.5rem}.nav-item.center{position:relative;margin-top:-28px}.nav-item.center .nav-icon{background:var(--gradient-button);color:#fff;width:60px;height:60px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px #3b82f666;transition:all var(--transition-base)}.loading-minimal{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background:var(--gradient-primary);color:#fff;gap:var(--spacing-4)}.loading-minimal img{width:72px;height:72px;border-radius:var(--radius-xl);background:#fff;padding:var(--spacing-2);box-shadow:var(--shadow-xl)}.loading-minimal p{font-size:var(--font-size-sm);opacity:.9;letter-spacing:.5px}.skeleton{background:linear-gradient(90deg,var(--neutral-200) 25%,var(--neutral-100) 50%,var(--neutral-200) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-lg)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-2xl{font-size:var(--font-size-2xl)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.text-white{color:#fff}.text-primary{color:var(--primary-600)}.text-success{color:var(--success-500)}.text-error{color:var(--error-500)}.text-warning{color:var(--warning-500)}.text-muted{color:var(--neutral-500)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--spacing-2)}.gap-3{gap:var(--spacing-3)}.gap-4{gap:var(--spacing-4)}.flex-1{flex:1}.p-2{padding:var(--spacing-2)}.p-3{padding:var(--spacing-3)}.p-4{padding:var(--spacing-4)}.p-5{padding:var(--spacing-5)}.mt-2{margin-top:var(--spacing-2)}.mt-4{margin-top:var(--spacing-4)}.mb-2{margin-bottom:var(--spacing-2)}.mb-4{margin-bottom:var(--spacing-4)}.rounded{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:var(--radius-full)}.shadow{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.hidden{display:none!important}@media(min-width:768px){.page-content{max-width:600px;margin:0 auto;width:100%}}@media(min-width:1024px){.page-content{max-width:480px}}@media print{.bottom-navbar,.page-header{display:none}}.welcome-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#052b6963,#0226738e),url(/assets/bg_header-C622Gvb3.png);background-size:cover;background-position:center;background-repeat:no-repeat;padding:var(--spacing-6);position:relative;overflow:hidden}.welcome-bg{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}.bg-circle{position:absolute;border-radius:50%;filter:blur(80px);opacity:.6}.bg-circle-1{width:300px;height:300px;top:-50px;right:-50px;background:#3b82f666;animation:float 15s ease-in-out infinite}.bg-circle-2{width:400px;height:400px;bottom:-100px;left:-100px;background:#8b5cf64d;animation:float 20s ease-in-out infinite reverse}.bg-circle-3{width:250px;height:250px;top:40%;left:30%;background:#0ea5e94d;animation:float 18s ease-in-out infinite}@keyframes float{0%,to{transform:translate(0) scale(1)}50%{transform:translate(30px,-30px) scale(1.1)}}.welcome-content{position:relative;z-index:10;width:100%;max-width:380px;padding:40px 30px;background:#ffffff1a;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.2);border-radius:30px;text-align:center;color:#fff;box-shadow:0 25px 50px -12px #00000080;animation:slideUpFade 1s cubic-bezier(.16,1,.3,1)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.welcome-logo{margin-bottom:30px;display:inline-block;position:relative}.welcome-logo:before{content:"";position:absolute;inset:-10px;background:radial-gradient(circle,rgba(255,255,255,.4) 0%,transparent 70%);border-radius:50%;z-index:-1;animation:pulseGlow 3s infinite}.welcome-logo img{width:100px;height:100px;background:#fff;border-radius:24px;padding:15px;box-shadow:0 15px 35px #0000004d;transition:transform .4s cubic-bezier(.34,1.56,.64,1)}.welcome-logo:hover img{transform:scale(1.1) rotate(5deg)}@keyframes pulseGlow{0%,to{opacity:.5;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.welcome-text{margin-bottom:40px}.welcome-title{font-size:2rem;font-weight:800;margin-bottom:8px;letter-spacing:-.03em;background:linear-gradient(to right,#fff,#e0e7ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 4px 12px rgba(0,0,0,.1)}.welcome-subtitle{font-size:1.1rem;font-weight:500;color:#ffffffe6;margin-bottom:12px;letter-spacing:.02em}.welcome-desc{font-size:.9rem;color:#ffffffb3;line-height:1.6;max-width:280px;margin:0 auto}.welcome-actions{margin-bottom:30px}.btn-welcome{display:inline-flex;align-items:center;justify-content:center;gap:12px;width:100%;max-width:280px;padding:16px 24px;background:#fff;color:#1e40af;font-size:1.1rem;font-weight:700;border-radius:20px;border:none;cursor:pointer;box-shadow:0 10px 25px -5px #0000004d;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.btn-welcome:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent);transform:translate(-100%);transition:transform .5s}.btn-welcome:hover{transform:translateY(-4px);box-shadow:0 20px 30px -10px #0006;background:#fff}.btn-welcome:hover:before{transform:translate(100%)}.btn-welcome:active{transform:scale(.98)}.btn-welcome svg{transition:transform .3s ease}.btn-welcome:hover svg{transform:translate(4px)}.welcome-version{font-size:.75rem;color:#ffffff80;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.login-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#052b6999,#022673e6),url(/assets/bg_header-C622Gvb3.png);background-size:cover;background-position:center;background-repeat:no-repeat;padding:var(--spacing-5);position:relative;overflow:hidden}.login-page:before{content:"";position:absolute;width:600px;height:600px;background:radial-gradient(circle,rgba(59,130,246,.15) 0%,transparent 70%);border-radius:50%;top:-200px;right:-200px;z-index:0;animation:float 20s infinite ease-in-out}.login-page:after{content:"";position:absolute;width:500px;height:500px;background:radial-gradient(circle,rgba(139,92,246,.1) 0%,transparent 70%);border-radius:50%;bottom:-150px;left:-150px;z-index:0;animation:float 25s infinite ease-in-out reverse}.login-container{background:#fffffff2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:32px;padding:40px 30px;width:100%;max-width:420px;box-shadow:0 20px 50px -12px #00000080,0 0 0 1px #ffffff80 inset;position:relative;z-index:10;animation:slideUpFade .6s cubic-bezier(.16,1,.3,1)}@keyframes slideUpFade{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:32px}.login-logo{margin-bottom:24px;display:inline-block;position:relative}.login-logo:after{content:"";position:absolute;inset:-10px;background:radial-gradient(circle,rgba(59,130,246,.2) 0%,transparent 70%);z-index:-1;border-radius:50%}.login-logo img{width:80px;height:80px;border-radius:20px;padding:12px;background:#fff;box-shadow:0 10px 25px -5px #0000001a;transition:transform .3s ease}.login-logo:hover img{transform:scale(1.05) rotate(3deg)}.login-header h1{font-size:1.75rem;font-weight:800;background:linear-gradient(135deg,#1e3a8a,#3b82f6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px;letter-spacing:-.02em}.login-header p{color:var(--neutral-500);font-size:.95rem;font-weight:500}.login-form{margin-bottom:24px}.login-error{display:flex;align-items:flex-start;gap:12px;padding:16px;background:#fef2f2;color:#b91c1c;border-radius:16px;margin-bottom:24px;font-size:.9rem;border:1px solid #fecaca;animation:shake .4s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.input-group{margin-bottom:20px}.input-label{display:block;margin-bottom:8px;font-size:.9rem;font-weight:600;color:var(--neutral-700);margin-left:4px}.input-field{display:flex;align-items:center;gap:12px;background:var(--neutral-50);border:2px solid var(--neutral-200);border-radius:16px;padding:14px 16px;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.input-field:focus-within{background:#fff;border-color:var(--primary-500);box-shadow:0 0 0 4px #3b82f626,0 4px 12px #0000000d;transform:translateY(-1px)}.input-field input{border:none;background:transparent;flex:1;font-size:1rem;padding:0;color:var(--neutral-900);font-weight:500}.input-field input::placeholder{color:var(--neutral-400);font-weight:400}.input-icon{color:var(--neutral-400);flex-shrink:0;transition:color .2s}.input-field:focus-within .input-icon{color:var(--primary-500)}.password-toggle{padding:8px;margin:-8px;color:var(--neutral-400);background:none;border:none;cursor:pointer;border-radius:8px;transition:all .2s}.password-toggle:hover{color:var(--neutral-700);background:#0000000d}.btn-primary.btn-block{margin-top:12px;padding:16px;font-size:1.05rem;background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 10px 25px -5px #2563eb80;transition:all .3s cubic-bezier(.34,1.56,.64,1);border-radius:16px;gap:10px}.btn-primary.btn-block:hover{transform:translateY(-2px);box-shadow:0 15px 30px -5px #2563eb99;filter:brightness(110%)}.btn-primary.btn-block:active{transform:scale(.98)}.login-footer{text-align:center;border-top:1px solid var(--neutral-100);padding-top:24px}.login-footer p{font-size:.9rem;color:var(--neutral-500);margin-bottom:16px}.login-security{display:inline-flex;align-items:center;gap:8px;font-size:.75rem!important;font-weight:600;color:#64748b!important;padding:8px 16px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:20px}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes float{0%,to{transform:translate(0)}50%{transform:translate(20px,-20px)}}.digital-clock{text-align:center;padding:var(--spacing-5);background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-card);margin:var(--spacing-4) 0;position:relative;overflow:hidden}.digital-clock:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--gradient-button)}.clock-time{font-size:3rem;font-weight:var(--font-weight-bold);background:var(--gradient-header);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.clock-date{font-size:var(--font-size-sm);color:var(--neutral-500);margin-top:var(--spacing-2);font-weight:var(--font-weight-medium)}.digital-clock.dark{background:#ffffff1a;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1)}.digital-clock.dark:before{display:none}.digital-clock.dark .clock-time{background:none;-webkit-text-fill-color:white;color:#fff}.digital-clock.dark .clock-date{color:#fffc}.bottom-navbar{display:flex;justify-content:space-around;align-items:flex-end;background:#fff;border-radius:var(--radius-3xl) var(--radius-3xl) 0 0;box-shadow:0 -4px 30px #00000014;padding:var(--spacing-2) var(--spacing-2);padding-bottom:calc(var(--spacing-2) + var(--safe-area-bottom));position:fixed;bottom:0;left:0;right:0;z-index:var(--z-sticky)}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--spacing-1);color:var(--neutral-400);background:none;border:none;cursor:pointer;transition:all var(--transition-fast);min-width:52px;flex:1}.nav-item:hover,.nav-item.active{color:var(--primary-600)}.nav-item.disabled{opacity:.5;cursor:not-allowed}.nav-icon{display:flex;align-items:center;justify-content:center}.nav-icon svg{width:22px;height:22px}.nav-label{font-size:10px;font-weight:var(--font-weight-medium);white-space:nowrap}.nav-item.center{position:relative;margin-top:-28px;flex:1.2}.nav-item.center .nav-icon{background:var(--gradient-button);color:#fff;width:56px;height:56px;border-radius:var(--radius-full);box-shadow:0 8px 24px #3b82f666;transition:all var(--transition-base);border:3px solid white}.nav-item.center .nav-icon svg{stroke:#fff;width:24px;height:24px}.nav-item.center:hover .nav-icon{transform:scale(1.08);box-shadow:0 12px 32px #3b82f680}.nav-item.center.disabled .nav-icon{background:linear-gradient(135deg,#a1a1aa,#71717a);box-shadow:0 8px 24px #0003}.toast-container{position:fixed;top:var(--spacing-4);left:50%;transform:translate(-50%);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--spacing-2);width:calc(100% - var(--spacing-8));max-width:400px}.toast{display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3) var(--spacing-4);background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);opacity:0;transform:translateY(-10px);transition:all var(--transition-base)}.toast.visible{opacity:1;transform:translateY(0)}.toast-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.toast-message{flex:1;font-size:var(--font-size-sm);color:var(--neutral-800)}.toast-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:var(--spacing-1);color:var(--neutral-400);cursor:pointer;background:none;border:none}.toast-close:hover{color:var(--neutral-600)}.toast-success{border-left:4px solid var(--success-500)}.toast-success .toast-icon{color:var(--success-500)}.toast-error{border-left:4px solid var(--error-500)}.toast-error .toast-icon{color:var(--error-500)}.toast-warning{border-left:4px solid var(--warning-500)}.toast-warning .toast-icon{color:var(--warning-500)}.toast-info{border-left:4px solid var(--info-500)}.toast-info .toast-icon{color:var(--info-500)}.violation-lock-screen{min-height:100vh;min-height:100dvh;background:linear-gradient(180deg,#1a0a0a,#2d1515,#1a0a0a);display:flex;flex-direction:column;padding:var(--spacing-5);padding-top:calc(var(--spacing-5) + var(--safe-area-top));padding-bottom:calc(var(--spacing-5) + var(--safe-area-bottom));overflow-y:auto}.violation-header{text-align:center;margin-bottom:var(--spacing-6)}.warning-icon-container{width:120px;height:120px;margin:0 auto var(--spacing-5);display:flex;align-items:center;justify-content:center;background:radial-gradient(circle,rgba(239,68,68,.2) 0%,transparent 70%);border-radius:50%;animation:pulseWarning 2s ease-in-out infinite}@keyframes pulseWarning{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}.violation-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:#ef4444;margin:0 0 var(--spacing-2);text-shadow:0 0 20px rgba(239,68,68,.5)}.violation-subtitle{font-size:var(--font-size-sm);color:#ffffffb3;margin:0}.user-info-card{display:flex;align-items:center;gap:var(--spacing-4);padding:var(--spacing-4);background:#ffffff0d;border-radius:var(--radius-xl);border:1px solid rgba(239,68,68,.2);margin-bottom:var(--spacing-5)}.user-avatar{width:60px;height:60px;flex-shrink:0}.user-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;border:2px solid rgba(239,68,68,.5)}.avatar-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#374151,#1f2937);border-radius:50%;border:2px solid rgba(239,68,68,.5);color:#ffffff80}.user-details h3{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:#fff;margin:0 0 var(--spacing-1)}.user-details p{font-size:var(--font-size-xs);color:#fff9;margin:0}.violation-list{flex:1;margin-bottom:var(--spacing-5)}.violation-list .section-title{display:flex;align-items:center;gap:var(--spacing-2);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:#fff;margin:0 0 var(--spacing-4)}.violation-list .section-title svg{color:#ef4444}.violation-card{background:#ffffff0d;border-radius:var(--radius-xl);border:1px solid rgba(239,68,68,.2);padding:var(--spacing-4);margin-bottom:var(--spacing-3);transition:all var(--transition-base)}.violation-card:hover{border-color:#ef444466;background:#ffffff14}.violation-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-3);flex-wrap:wrap;gap:var(--spacing-2)}.violation-badge{padding:var(--spacing-1) var(--spacing-3);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px}.badge-ringan{background:#f59e0b33;color:#fbbf24;border:1px solid rgba(245,158,11,.3)}.badge-sedang{background:#f9731633;color:#fb923c;border:1px solid rgba(249,115,22,.3)}.badge-berat{background:#ef444433;color:#f87171;border:1px solid rgba(239,68,68,.3)}.violation-date{font-size:var(--font-size-xs);color:#ffffff80}.violation-card-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:#fff;margin:0 0 var(--spacing-2)}.violation-description{font-size:var(--font-size-xs);color:#fff9;margin:0;line-height:1.5}.warning-message{display:flex;align-items:flex-start;gap:var(--spacing-3);padding:var(--spacing-4);background:#ef44441a;border-radius:var(--radius-xl);border:1px solid rgba(239,68,68,.3);margin-bottom:var(--spacing-5)}.warning-message svg{flex-shrink:0;color:#ef4444;margin-top:2px}.warning-message p{margin:0;font-size:var(--font-size-sm);color:#fffc;line-height:1.6}.warning-message strong{color:#fbbf24}.violation-actions{padding-top:var(--spacing-4);border-top:1px solid rgba(255,255,255,.1)}.violation-actions .logout-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-4);background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-xl);color:#fff;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base)}.violation-actions .logout-btn:hover{background:#ffffff26;border-color:#ffffff4d}.violation-actions .logout-btn:active{transform:scale(.98)}.modal-overlay{position:fixed;inset:0;background:#000c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--spacing-5);animation:fadeIn .2s ease-out}.modal-content{background:linear-gradient(180deg,#1e293b,#0f172a);border-radius:var(--radius-2xl);padding:var(--spacing-6);max-width:360px;width:100%;text-align:center;border:1px solid rgba(255,255,255,.1);box-shadow:0 25px 50px #00000080;animation:slideUp .3s ease-out}.modal-icon{margin-bottom:var(--spacing-4)}.modal-content h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:#fff;margin:0 0 var(--spacing-2)}.modal-content p{font-size:var(--font-size-sm);color:#ffffffb3;margin:0 0 var(--spacing-5)}.modal-buttons{display:flex;gap:var(--spacing-3)}.modal-buttons button{flex:1;padding:var(--spacing-3) var(--spacing-4);border-radius:var(--radius-xl);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-base)}.btn-cancel{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff}.btn-cancel:hover{background:#ffffff26}.btn-confirm{background:linear-gradient(135deg,#ef4444,#dc2626);border:none;color:#fff;box-shadow:0 4px 12px #ef444466}.btn-confirm:hover{transform:translateY(-2px);box-shadow:0 6px 16px #ef444480}.btn-confirm:active{transform:translateY(0)}.home-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--neutral-50);padding-bottom:100px}.home-header{background:linear-gradient(135deg,#052b695c,#02267300),url(/assets/header_home-BuCwNkC_.png);background-size:cover;background-position:center;background-repeat:no-repeat;padding:var(--spacing-5) var(--spacing-5) var(--spacing-10);padding-top:calc(var(--spacing-4) + var(--safe-area-top));padding-bottom:20px;color:#fff;position:relative;overflow:hidden;border-bottom-left-radius:0;border-bottom-right-radius:0;box-shadow:0 10px 30px #3b82f633}.home-header:before{content:"";position:absolute;width:300px;height:300px;background:radial-gradient(circle,rgba(255,255,255,.15) 0%,transparent 70%);border-radius:50%;top:-100px;right:-50px;z-index:0}.home-header:after{content:"";position:absolute;width:200px;height:200px;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);border-radius:50%;bottom:-50px;left:-50px;z-index:0}.profile-section{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1}.profile-info{display:flex;align-items:center;gap:var(--spacing-4);padding:var(--spacing-2);border-radius:var(--radius-2xl);transition:background .2s ease}.profile-info:active{background:#ffffff1a}.profile-avatar{width:52px;height:52px;border-radius:var(--radius-full);background:#fff3;display:flex;align-items:center;justify-content:center;overflow:hidden;border:2px solid rgba(255,255,255,.6);box-shadow:0 4px 12px #00000026;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.profile-avatar img{width:100%;height:100%;object-fit:cover}.profile-details{display:flex;flex-direction:column}.profile-details h3{font-size:var(--font-size-lg);font-weight:700;margin:0;line-height:1.2;text-shadow:0 2px 4px rgba(0,0,0,.1)}.profile-details p{font-size:var(--font-size-xs);opacity:.9;margin:2px 0 0;font-weight:500;letter-spacing:.02em}.logout-btn-home{width:44px;height:44px;border-radius:var(--radius-xl);background:#ffffff26;color:#fff;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.2);cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all var(--transition-base);box-shadow:0 4px 12px #0000001a}.logout-btn-home:hover{background:#ffffff40;transform:translateY(-2px);box-shadow:0 6px 16px #00000026}.logout-btn-home:active{transform:scale(.95)}.home-content{flex:1;padding:0 var(--spacing-5);margin-top:-30px;position:relative;z-index:2;display:flex;flex-direction:column;gap:var(--spacing-1)}.home-content .digital-clock{background:#fff;border-radius:var(--radius-2xl);padding:var(--spacing-4);box-shadow:0 10px 30px -5px #0000001a;text-align:center;position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.5)}.home-content .digital-clock:before{content:"";position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,var(--primary-400),var(--primary-600))}.home-content .digital-clock .clock-time{color:var(--neutral-800);font-size:2.25rem;font-weight:800;line-height:1;margin-bottom:4px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.home-content .digital-clock .clock-date{color:var(--neutral-500);font-size:var(--font-size-sm);font-weight:500;text-transform:uppercase;letter-spacing:.1em}.offline-warning{display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3) var(--spacing-4);background:#fffbeb;border:1px solid #fcd34d;border-radius:var(--radius-xl);box-shadow:0 4px 6px -1px #0000000d;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.warning-icon{width:32px;height:32px;background:#f59e0b;color:#fff;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;flex-shrink:0}.warning-text{flex:1}.warning-text h4{font-size:var(--font-size-sm);font-weight:700;color:#b45309;margin:0}.warning-text p{font-size:11px;color:#92400e;margin:2px 0 0}.today-status{background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-card);overflow:hidden;transition:transform .3s ease,box-shadow .3s ease}.today-status:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.today-status .card-body{padding:var(--spacing-4) var(--spacing-5)}.today-status h4{font-size:var(--font-size-xs);font-weight:700;margin:0 0 var(--spacing-4) 0;color:var(--neutral-400);text-transform:uppercase;letter-spacing:.1em;display:flex;align-items:center;gap:8px}.today-status h4:after{content:"";flex:1;height:1px;background:var(--neutral-100)}.status-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-4)}.status-item{position:relative;padding:var(--spacing-3);background:var(--neutral-50);border-radius:var(--radius-xl);border:1px solid var(--neutral-100);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-2);transition:all .2s ease}.status-item:hover{background:#fff;border-color:var(--primary-200);box-shadow:0 4px 12px #3b82f61a}.status-photo{width:56px;height:56px;border-radius:var(--radius-xl);overflow:hidden;border:3px solid white;box-shadow:0 4px 10px #0000001a;margin-bottom:4px}.status-photo img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.status-photo img:hover{transform:scale(1.1)}.status-label{font-size:11px;font-weight:600;color:var(--neutral-500);text-transform:uppercase;letter-spacing:.05em;background:#00000008;padding:2px 8px;border-radius:var(--radius-full)}.status-value{font-size:1.5rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;color:var(--neutral-300)}.status-value.success{background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.status-value.late{background:linear-gradient(135deg,#ef4444,#b91c1c);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.attendance-loading{display:flex;flex-direction:column;gap:var(--spacing-4)}.skeleton-item{background:var(--neutral-50)!important;border:1px solid var(--neutral-100)!important}.skeleton-photo{width:56px;height:56px;border-radius:var(--radius-xl);background:var(--neutral-200)}.skeleton-label{width:48px;height:12px;border-radius:var(--radius-full);background:var(--neutral-200)}.skeleton-value{width:72px;height:28px;border-radius:var(--radius-lg);background:var(--neutral-200)}.shimmer{position:relative;overflow:hidden}.shimmer:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.5) 50%,transparent 100%);animation:shimmerSlide 1.8s ease-in-out infinite}@keyframes shimmerSlide{0%{left:-100%}to{left:100%}}.loading-indicator{display:flex;align-items:center;justify-content:center;gap:var(--spacing-3);padding:var(--spacing-3) 0;animation:fadeInUp .4s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.loading-spinner{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.spinner-ring{width:20px;height:20px;border:2.5px solid var(--neutral-200);border-top-color:var(--primary-500);border-radius:50%;animation:spinRing .8s linear infinite}@keyframes spinRing{to{transform:rotate(360deg)}}.loading-text{font-size:var(--font-size-xs);font-weight:600;color:var(--neutral-400);letter-spacing:.02em;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.update-card{position:relative;border-radius:var(--radius-2xl);overflow:hidden;animation:slideUpFadeIn .5s cubic-bezier(.34,1.56,.64,1)}@keyframes slideUpFadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.update-card-glow{position:absolute;inset:0;background:linear-gradient(135deg,#667eea,#04f,#f97316);border-radius:var(--radius-2xl);z-index:0}.update-card-content{position:relative;z-index:1;margin:2px;background:#fff;border-radius:calc(var(--radius-2xl) - 2px);padding:var(--spacing-4) var(--spacing-5);display:flex;flex-direction:column;gap:var(--spacing-3)}.update-card-header{display:flex;align-items:center;gap:var(--spacing-3)}.update-icon-wrapper{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#667eea,#04f);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 8px 20px -4px #667eea80;animation:downloadBounce 2s ease-in-out infinite}@keyframes downloadBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.update-badge{font-size:11px;font-weight:800;letter-spacing:.08em;padding:5px 12px;border-radius:var(--radius-full);background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e;border:1px solid #fcd34d;animation:badgePulse 2s ease-in-out infinite}@keyframes badgePulse{0%,to{box-shadow:0 0 #fcd34d66}50%{box-shadow:0 0 0 6px #fcd34d00}}.update-close-btn{margin-left:auto;width:32px;height:32px;border:none;background:var(--neutral-100);border-radius:var(--radius-lg);color:var(--neutral-400);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;flex-shrink:0}.update-close-btn:hover{background:var(--neutral-200);color:var(--neutral-600)}.update-info{display:flex;flex-direction:column;gap:var(--spacing-2)}.update-title{font-size:var(--font-size-base);font-weight:700;color:var(--neutral-800);margin:0;line-height:1.3}.update-version-row{display:flex;align-items:center;gap:var(--spacing-2)}.version-current{font-size:var(--font-size-xs);font-weight:600;color:var(--neutral-400);background:var(--neutral-100);padding:3px 10px;border-radius:var(--radius-full);text-decoration:line-through}.version-new{font-size:var(--font-size-xs);font-weight:700;background:linear-gradient(135deg,#3f55ff,#04f);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;padding:3px 10px;border:1px solid rgba(102,126,234,.3);border-radius:var(--radius-full)}.update-version-row svg{color:var(--neutral-300);flex-shrink:0}.update-description{font-size:var(--font-size-xs);color:var(--neutral-500);margin:0;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.update-download-btn{display:flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-5);background:linear-gradient(135deg,#667eea,#04f);color:#fff;border:none;border-radius:var(--radius-xl);font-size:var(--font-size-sm);font-weight:700;text-decoration:none;cursor:pointer;transition:all .3s ease;box-shadow:0 8px 20px -4px #667eea80;letter-spacing:.02em}.update-download-btn:hover{transform:translateY(-2px);box-shadow:0 12px 25px -4px #667eea99}.update-download-btn:active{transform:translateY(0) scale(.98)}.update-download-btn svg{animation:downloadArrow 1.5s ease-in-out infinite}@keyframes downloadArrow{0%,to{transform:translateY(0)}50%{transform:translateY(3px)}}.menu-section{margin-top:var(--spacing-2)}.section-title{font-size:var(--font-size-sm);font-weight:700;color:var(--neutral-800);margin:0 0 var(--spacing-3) 0;display:flex;align-items:center;justify-content:space-between}.menu-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-3)}.menu-item{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-1);background:#fff;border:1px solid transparent;border-radius:20px;cursor:pointer;transition:all .3s cubic-bezier(.34,1.56,.64,1);box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000005}.menu-item:hover{transform:translateY(-4px);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;border-color:#00000005}.menu-item:active{transform:scale(.96)}.menu-icon{width:48px;height:48px;border-radius:16px;display:flex;align-items:center;justify-content:center;transition:transform .3s ease;margin-bottom:2px}.menu-icon svg{width:24px;height:24px}.menu-item:hover .menu-icon{transform:scale(1.1) rotate(5deg)}.menu-label{font-size:11px;font-weight:600;color:var(--neutral-600);text-align:center;line-height:1.2;transition:color .2s}.menu-item:hover .menu-label{color:var(--neutral-900)}.menu-blue .menu-icon{background:linear-gradient(135deg,#60a5fa,#3b82f6);color:#fff;box-shadow:0 8px 16px -4px #3b82f666}.menu-purple .menu-icon{background:linear-gradient(135deg,#a78bfa,#8b5cf6);color:#fff;box-shadow:0 8px 16px -4px #8b5cf666}.menu-green .menu-icon{background:linear-gradient(135deg,#4ade80,#22c55e);color:#fff;box-shadow:0 8px 16px -4px #22c55e66}.menu-yellow .menu-icon{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff;box-shadow:0 8px 16px -4px #f59e0b66}.menu-indigo .menu-icon{background:linear-gradient(135deg,#818cf8,#6366f1);color:#fff;box-shadow:0 8px 16px -4px #6366f166}.menu-pink .menu-icon{background:linear-gradient(135deg,#f472b6,#ec4899);color:#fff;box-shadow:0 8px 16px -4px #ec489966}.menu-red .menu-icon{background:linear-gradient(135deg,#f87171,#ef4444);color:#fff;box-shadow:0 8px 16px -4px #ef444466}.menu-teal .menu-icon{background:linear-gradient(135deg,#2dd4bf,#14b8a6);color:#fff;box-shadow:0 8px 16px -4px #14b8a666}.menu-orange .menu-icon{background:linear-gradient(135deg,#fb923c,#f97316);color:#fff;box-shadow:0 8px 16px -4px #f9731666}.menu-gray .menu-icon{background:linear-gradient(135deg,#94a3b8,#64748b);color:#fff;box-shadow:0 8px 16px -4px #64748b66}.menu-placeholder{opacity:.4;pointer-events:none;filter:grayscale(1);box-shadow:none!important;background:transparent;border:2px dashed var(--neutral-200)}.menu-placeholder .menu-icon{box-shadow:none!important;background:var(--neutral-100)!important;color:var(--neutral-300)}.update-data-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-4);background:#fff;border:1px solid var(--neutral-200);border-radius:var(--radius-xl);font-size:var(--font-size-sm);font-weight:600;color:var(--neutral-500);cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #00000008}.update-data-btn:hover{border-color:var(--primary-300);color:var(--primary-600);background:var(--primary-50);transform:translateY(-1px);box-shadow:0 4px 6px #0000000d}.update-data-btn:active{transform:translateY(0)}.update-data-btn:disabled{opacity:.6;cursor:not-allowed}.update-data-btn .spinning{animation:spin 1s linear infinite}@media(max-width:380px){.menu-grid{grid-template-columns:repeat(3,1fr);gap:var(--spacing-2)}.menu-item{padding:var(--spacing-2)}.menu-icon{width:42px;height:42px}.menu-label{font-size:10px}.status-photo{width:48px;height:48px}.home-content .digital-clock .clock-time{font-size:2rem}}.attendance-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#0f172a,#1e293b)}.attendance-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4) var(--spacing-5);padding-top:calc(var(--spacing-4) + var(--safe-area-top));color:#fff}.attendance-header h1{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.data-source-badge{display:flex;align-items:center;gap:6px;margin:0 var(--spacing-5) var(--spacing-3);padding:6px 12px;border-radius:var(--radius-full);font-size:11px;font-weight:600;letter-spacing:.02em;width:fit-content;animation:fadeInBadge .4s ease-out}@keyframes fadeInBadge{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.data-source-badge.from-server{background:#22c55e26;border:1px solid rgba(34,197,94,.3);color:#4ade80}.data-source-badge.from-local{background:#f59e0b26;border:1px solid rgba(245,158,11,.3);color:#fbbf24}.data-source-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;animation:dotPulse 2s ease-in-out infinite}.from-server .data-source-dot{background:#22c55e;box-shadow:0 0 6px #22c55e99}.from-local .data-source-dot{background:#f59e0b;box-shadow:0 0 6px #f59e0b99}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.data-source-text{line-height:1}.warning-banner{margin:0 var(--spacing-5) var(--spacing-4);padding:var(--spacing-4);background:linear-gradient(135deg,#f59e0b33,#d9770633);border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-xl);color:#fbbf24;text-align:center;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.attendance-actions{position:fixed;bottom:0;left:0;right:0;padding:var(--spacing-5);padding-bottom:calc(var(--spacing-5) + var(--safe-area-bottom));background:linear-gradient(to top,#0f172a,#0f172af2 70%,#0f172a00);z-index:50;display:flex;justify-content:center}.attendance-btn{width:100%;max-width:500px;margin-bottom:0;display:flex;align-items:center;justify-content:center;gap:var(--spacing-3);padding:var(--spacing-5);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:#fff;border:none;border-radius:var(--radius-2xl);cursor:pointer;transition:all var(--transition-base)}.attendance-complete{text-align:center;padding:var(--spacing-6);background:#ffffff0d;border-radius:var(--radius-2xl);border:1px solid rgba(76,175,80,.3)}.attendance-complete .complete-icon{margin-bottom:var(--spacing-4);animation:scaleIn .5s ease-out}@keyframes scaleIn{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.attendance-complete h3{font-size:var(--font-size-lg);margin:0}.attendance-complete p{margin:0}.attendance-complete .attendance-summary{text-align:left}.scanning-line{position:absolute;left:10%;right:10%;height:3px;border-radius:2px;animation:scanLine 2s ease-in-out infinite;z-index:10}.scanning-line.checkin-scan{background:linear-gradient(90deg,transparent,#22c55e,transparent);box-shadow:0 0 20px #22c55ecc}.scanning-line.checkout-scan{background:linear-gradient(90deg,transparent,#6366f1,transparent);box-shadow:0 0 20px #6366f1cc}@keyframes scanLine{0%{top:10%;opacity:0}10%{opacity:1}90%{opacity:1}to{top:90%;opacity:0}}.scanning-indicator{position:absolute;bottom:20%;left:50%;transform:translate(-50%);background:#000c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;padding:var(--spacing-3) var(--spacing-5);border-radius:var(--radius-2xl);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);z-index:10;animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.attendance-btn.scanning{animation:buttonPulse 1s ease-in-out infinite}@keyframes buttonPulse{0%,to{transform:scale(1)}50%{transform:scale(.98)}}.success-modal-overlay{position:fixed;inset:0;background:#000000d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn .3s ease-out}.success-modal{background:linear-gradient(180deg,#1e293b,#0f172a);border-radius:var(--radius-3xl);padding:var(--spacing-8);margin:var(--spacing-5);max-width:380px;width:100%;text-align:center;box-shadow:0 25px 80px #00000080;border:1px solid rgba(255,255,255,.1);animation:slideUp .4s ease-out}.success-checkmark{margin-bottom:var(--spacing-6)}.checkmark-svg{display:block;margin:0 auto}.checkmark-circle{stroke-dasharray:314;stroke-dashoffset:314;animation:drawCircle .6s ease-out .2s forwards}@keyframes drawCircle{to{stroke-dashoffset:0}}.checkmark-path{stroke-dasharray:75;stroke-dashoffset:75;animation:drawCheck .4s ease-out .6s forwards}@keyframes drawCheck{to{stroke-dashoffset:0}}.success-text-content{color:#fff}.success-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin-bottom:var(--spacing-2);background:linear-gradient(135deg,#22c55e,#16a34a);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.success-subtitle{font-size:var(--font-size-sm);color:#ffffffb3;margin-bottom:var(--spacing-6)}.success-details{background:#ffffff0d;border-radius:var(--radius-xl);padding:var(--spacing-4);display:flex;flex-direction:column;gap:var(--spacing-3)}.success-detail-item{display:flex;align-items:center;gap:var(--spacing-3);font-size:var(--font-size-xs);color:#ffffffb3;text-align:left}.success-detail-item svg{flex-shrink:0;color:#22c55e}.shift-info-banner{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:var(--spacing-2);margin:0 var(--spacing-5) var(--spacing-3);padding:6px 12px;background:linear-gradient(135deg,#3b82f626,#2563eb26);border:1px solid rgba(59,130,246,.2);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.shift-name-display{display:flex;align-items:center;gap:4px}.shift-label{display:none}.shift-badge-display{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;color:#fff;box-shadow:0 1px 2px #0000001a;text-transform:uppercase;letter-spacing:.5px}.shift-time-display{font-size:12px;font-weight:600;color:#ffffffe6;text-align:right;letter-spacing:.5px;padding-top:0;text-shadow:none}.offline-warning-overlay{position:fixed;inset:0;background:#000000d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .3s ease-out;padding:var(--spacing-5)}.offline-warning-modal{background:linear-gradient(180deg,#1e293b,#0f172a);border-radius:var(--radius-3xl);padding:var(--spacing-7) var(--spacing-6);max-width:380px;width:100%;text-align:center;box-shadow:0 25px 80px #00000080,0 0 0 1px #f59e0b26,inset 0 1px #ffffff0d;border:1px solid rgba(245,158,11,.2);animation:slideUp .4s ease-out}.offline-warning-icon{margin-bottom:var(--spacing-4);animation:warningBounce .6s ease-out}@keyframes warningBounce{0%{transform:scale(.3) rotate(-10deg);opacity:0}50%{transform:scale(1.1) rotate(3deg)}to{transform:scale(1) rotate(0);opacity:1}}.offline-warning-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:#fbbf24;margin:0 0 var(--spacing-3)}.offline-warning-desc{font-size:var(--font-size-sm);color:#ffffffb3;margin:0 0 var(--spacing-4);line-height:1.6}.offline-warning-desc strong{color:#fbbf24}.offline-warning-info{display:flex;align-items:flex-start;gap:var(--spacing-3);padding:var(--spacing-4);background:#f59e0b1a;border:1px solid rgba(245,158,11,.15);border-radius:var(--radius-xl);margin-bottom:var(--spacing-5);text-align:left}.offline-warning-info svg{flex-shrink:0;color:#f59e0b;margin-top:1px}.offline-warning-info span{font-size:var(--font-size-xs);color:#fff9;line-height:1.5}.offline-warning-info strong{color:#fbbf24}.offline-warning-btn{width:100%;padding:var(--spacing-4) var(--spacing-5);background:linear-gradient(135deg,#f59e0b,#d97706);color:#0f172a;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);border:none;border-radius:var(--radius-xl);cursor:pointer;transition:all var(--transition-fast);box-shadow:0 4px 16px #f59e0b4d}.offline-warning-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px #f59e0b66}.offline-warning-btn:active{transform:translateY(0)}.working-day-warning{margin:16px;padding:16px 20px;background:linear-gradient(135deg,#fff3e0,#ffecb3);border-radius:16px;border-left:4px solid #ff9800;box-shadow:0 4px 15px #ff980026}.warning-content{display:flex;align-items:center;gap:16px}.warning-content svg{color:#e65100;flex-shrink:0}.warning-text h3{margin:0 0 4px;font-weight:700;font-size:1rem;color:#e65100}.warning-text p{margin:0;font-size:.9rem;color:#bf360c;line-height:1.4}@media(prefers-color-scheme:dark){.working-day-warning{background:linear-gradient(135deg,#ff980033,#ffc10726);border-left-color:#ffb74d}.warning-content svg{color:#ffb74d}.warning-text h3{color:#ffe0b2}.warning-text p{color:#ffcc80}}body.dark-mode .working-day-warning{background:linear-gradient(135deg,#ff980033,#ffc10726);border-left-color:#ffb74d}body.dark-mode .warning-content svg{color:#ffb74d}body.dark-mode .warning-text h3{color:#ffe0b2}body.dark-mode .warning-text p{color:#ffcc80}.history-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#e2e8f0)}.page-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4) var(--spacing-5);padding-top:calc(var(--spacing-4) + var(--safe-area-top));background:linear-gradient(135deg,#05f,#0040cc);color:#fff;border-bottom-left-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl)}.page-header h1{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);margin:0}.back-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#fff3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-xl);color:#fff;cursor:pointer;transition:all var(--transition-fast)}.page-content{flex:1;padding:var(--spacing-5);padding-bottom:calc(var(--spacing-5) + 100px);overflow-y:auto}.stats-overview{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-3);margin-bottom:var(--spacing-6)}.stat-card{background:#fff;box-shadow:0 4px 16px #0000000f;border-radius:var(--radius-xl);padding:var(--spacing-4);text-align:center;border:1px solid #e2e8f0}.stat-icon{width:44px;height:44px;margin:0 auto var(--spacing-3);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center}.stat-card.stat-hadir .stat-icon{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.stat-card.stat-terlambat .stat-icon{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.stat-card.stat-denda .stat-icon{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.stat-content{text-align:center}.stat-number{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:#0f172a;margin-bottom:2px}.stat-card.stat-denda .stat-number{font-size:var(--font-size-sm)}.stat-label{font-size:var(--font-size-xs);color:#64748b}.section-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:#475569;margin-bottom:var(--spacing-3)}.filter-section{margin-bottom:var(--spacing-5)}.filter-chips{display:flex;gap:var(--spacing-2);overflow-x:auto;padding-bottom:var(--spacing-2)}.filter-chip{display:flex;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-4);background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-xl);color:#64748b;font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast)}.filter-chip:hover{background:#f8fafc;border-color:#cbd5e1}.filter-chip.active{background:var(--gradient-button);border-color:transparent;color:#fff}.chip-count{background:#0000001a;padding:2px 8px;border-radius:var(--radius-lg);font-size:var(--font-size-xs)}.filter-chip.active .chip-count{background:#ffffff4d}.month-filter-section{margin-bottom:var(--spacing-5)}.month-select{width:100%;padding:var(--spacing-4);background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-lg);color:#0f172a;font-size:var(--font-size-base);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:20px;cursor:pointer}.month-select:focus{outline:none;border-color:var(--primary-500);box-shadow:0 0 0 3px #6366f11a}.timeline-section{margin-bottom:var(--spacing-5)}.timeline-loading,.timeline-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-10);text-align:center;color:#94a3b8}.timeline-empty svg{opacity:.5;margin-bottom:var(--spacing-4)}.timeline-empty h3{margin:0 0 var(--spacing-2) 0;font-size:var(--font-size-lg);color:#64748b}.timeline-empty p{margin:0;font-size:var(--font-size-sm)}.timeline-container{display:flex;flex-direction:column}.timeline-item{display:flex;gap:var(--spacing-4)}.timeline-line{display:flex;flex-direction:column;align-items:center;width:20px}.timeline-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;z-index:1}.timeline-dot.present{background:#22c55e;box-shadow:0 0 12px #22c55e80}.timeline-dot.late{background:#f59e0b;box-shadow:0 0 12px #f59e0b80}.timeline-connector{width:2px;flex:1;background:#e2e8f0;margin:var(--spacing-1) 0}.timeline-content{flex:1;padding-bottom:var(--spacing-4)}.timeline-card{background:#fff;box-shadow:0 4px 16px #0000000f;border-radius:var(--radius-xl);padding:var(--spacing-4);border:1px solid #e2e8f0;transition:all var(--transition-base)}.timeline-card.present{border-left:3px solid #22c55e}.timeline-card.late{border-left:3px solid #f59e0b}.timeline-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-3)}.timeline-date-info{display:flex;align-items:center;gap:var(--spacing-2);color:#475569;font-size:var(--font-size-sm)}.timeline-status{padding:var(--spacing-1) var(--spacing-3);border-radius:var(--radius-lg);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold)}.timeline-status.present{background:#22c55e26;color:#16a34a}.timeline-status.late{background:#f59e0b26;color:#d97706}.timeline-times{display:flex;gap:var(--spacing-4);margin-bottom:var(--spacing-3)}.time-entry{display:flex;align-items:center;gap:var(--spacing-2);color:#64748b}.time-data{display:flex;flex-direction:column}.time-label{font-size:var(--font-size-xs);color:#94a3b8}.time-value{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:#0f172a}.timeline-indicators{display:flex;flex-wrap:wrap;gap:var(--spacing-2)}.indicator-item{display:flex;align-items:center;gap:var(--spacing-1);padding:var(--spacing-1) var(--spacing-2);background:#f1f5f9;border:none;border-radius:var(--radius-md);font-size:var(--font-size-xs);color:#64748b;cursor:pointer;transition:all var(--transition-fast)}button.indicator-item:hover{background:#e2e8f0}.indicator-item.penalty{background:#ef44441a;color:#dc2626}.photo-modal-overlay{position:fixed;inset:0;background:#000c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out}.photo-modal-content{background:#fff;border-radius:var(--radius-2xl);width:90%;max-width:500px;max-height:90vh;overflow:hidden;animation:slideUp .3s ease-out}.photo-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4) var(--spacing-5);border-bottom:1px solid #e2e8f0}.photo-modal-header h3{margin:0;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:#0f172a}.close-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#f1f5f9;border:none;border-radius:var(--radius-lg);color:#64748b;cursor:pointer;transition:all var(--transition-fast)}.photo-modal-body{padding:var(--spacing-5)}.photo-modal-body img{width:100%;border-radius:var(--radius-lg)}@keyframes slideUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}.profile-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#fff,#ebeff5)}.profile-header{background:linear-gradient(135deg,#052b69,#2364ef),url(../assets/bg_header.jpeg);background-size:cover;background-position:center;background-repeat:no-repeat;padding:var(--spacing-8) var(--spacing-5);padding-top:calc(var(--spacing-8) + var(--safe-area-top));text-align:center;color:#fff}.profile-avatar-large{width:100px;height:100px;margin:0 auto var(--spacing-4);border-radius:50%;overflow:hidden;border:4px solid rgba(255,255,255,.3);background:#fff3}.profile-avatar-large img{width:100%;height:100%;object-fit:cover}.avatar-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff9}.profile-header h1{margin:0 0 var(--spacing-1) 0;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.profile-header p{margin:0;font-size:var(--font-size-sm);opacity:.8}.profile-content{flex:1;padding:var(--spacing-5);padding-bottom:calc(var(--spacing-5) + 100px)}.offline-warning-card{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-4);padding:var(--spacing-4);background:linear-gradient(135deg,#f59e0b1a,#d977061a);border:1px solid rgba(245,158,11,.3);border-radius:var(--radius-xl);margin-bottom:var(--spacing-5)}.warning-icon{width:48px;height:48px;border-radius:var(--radius-lg);background:linear-gradient(135deg,#f59e0b,#d97706);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.warning-text{flex:1;min-width:150px}.warning-text h4{margin:0 0 var(--spacing-1) 0;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:#b45309}.warning-text p{margin:0;font-size:var(--font-size-xs);color:#78716c}.sync-btn{display:flex;align-items:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-4);background:transparent;border:1px solid #f59e0b;border-radius:var(--radius-lg);color:#b45309;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.sync-btn:hover:not(:disabled){background:#f59e0b1a}.sync-btn:disabled{opacity:.6;cursor:not-allowed}.sync-btn .spinning{animation:spin 1s linear infinite}.card{background:#fff;box-shadow:0 4px 16px #0000000f;border:1px solid #e2e8f0;border-radius:var(--radius-xl);padding:var(--spacing-5);margin-bottom:var(--spacing-4)}.card h3{margin:0 0 var(--spacing-4) 0;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:#0f172a}.info-list{display:flex;flex-direction:column;gap:var(--spacing-4)}.info-item{display:flex;align-items:flex-start;gap:var(--spacing-3)}.info-item svg{color:var(--primary-500);flex-shrink:0;margin-top:2px}.info-content{display:flex;flex-direction:column}.info-label{font-size:var(--font-size-xs);color:#94a3b8;margin-bottom:2px}.info-value{font-size:var(--font-size-sm);color:#0f172a;font-weight:var(--font-weight-medium)}.settings-list{display:flex;flex-direction:column;gap:var(--spacing-3)}.setting-item{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-3)}.setting-info{display:flex;align-items:flex-start;gap:var(--spacing-3);flex:1}.setting-info svg{color:var(--primary-500);flex-shrink:0;margin-top:2px}.setting-text{display:flex;flex-direction:column}.setting-label{font-size:var(--font-size-sm);color:#0f172a;font-weight:var(--font-weight-medium)}.setting-desc{font-size:var(--font-size-xs);color:#94a3b8}.toggle-switch{position:relative;display:inline-block;width:50px;height:28px;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;inset:0;background:#cbd5e1;border-radius:28px;transition:all var(--transition-fast)}.toggle-slider:before{position:absolute;content:"";height:22px;width:22px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:all var(--transition-fast);box-shadow:0 2px 4px #0000001a}.toggle-switch input:checked+.toggle-slider{background:var(--gradient-success)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(22px)}.menu-list{display:flex;flex-direction:column;gap:var(--spacing-2);margin-bottom:var(--spacing-5)}.menu-item-btn{display:flex;align-items:center;gap:var(--spacing-3);width:100%;padding:var(--spacing-4);background:#fff;border:1px solid #e2e8f0;border-radius:var(--radius-xl);color:#0f172a;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);box-shadow:0 2px 8px #0000000a}.menu-item-btn:hover{background:#f8fafc;box-shadow:0 4px 12px #00000014}.menu-item-btn span{flex:1;text-align:left}.menu-item-btn svg:first-child{color:var(--primary-500)}.menu-item-btn svg:last-child{color:#94a3b8}.app-version{text-align:center;padding:var(--spacing-4);color:#94a3b8;font-size:var(--font-size-xs)}.logout-btn{display:flex;align-items:center;justify-content:center;gap:var(--spacing-2);width:100%;padding:var(--spacing-4);background:linear-gradient(135deg,#ef4444,#dc2626);border:none;border-radius:var(--radius-xl);color:#fff;font-size:var(--font-size-base);font-weight:var(--font-weight-bold);cursor:pointer;transition:all var(--transition-base)}.logout-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px #ef444466}.slip-gaji-page{min-height:100vh;display:flex;flex-direction:column;background:var(--neutral-100)}.page-header{display:flex;align-items:center;gap:var(--spacing-3);background:var(--gradient-header);padding:var(--spacing-4);padding-top:calc(var(--spacing-4) + var(--safe-area-top));color:#fff}.page-header h1{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.back-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:none;border-radius:var(--radius-full);color:#fff;cursor:pointer}.page-content{flex:1;padding:var(--spacing-4)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-8);color:var(--neutral-400);text-align:center}.empty-state svg{margin-bottom:var(--spacing-4)}.slip-list{display:flex;flex-direction:column;gap:var(--spacing-3)}.slip-card{display:flex;align-items:center;padding:var(--spacing-4);cursor:pointer;transition:transform var(--transition-fast)}.slip-card:active{transform:scale(.98)}.slip-period{display:flex;flex-direction:column}.period-month{font-weight:var(--font-weight-semibold)}.period-year{font-size:var(--font-size-sm);color:var(--neutral-500)}.slip-amount{flex:1;text-align:right;margin-right:var(--spacing-3)}.amount-label{display:block;font-size:var(--font-size-xs);color:var(--neutral-500)}.amount-value{font-weight:var(--font-weight-bold);color:var(--success-500)}.slip-arrow{color:var(--neutral-400)}.slip-detail-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.loading-state,.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-10);text-align:center}.error-state svg{color:var(--error-500);margin-bottom:var(--spacing-4)}.error-state h3{margin-bottom:var(--spacing-2)}.error-state p{color:var(--neutral-500);margin-bottom:var(--spacing-4)}.slip-detail-page .page-content{padding:var(--spacing-3)}.receipt-container{background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-lg);margin:0;overflow:hidden}.receipt-header{background:var(--gradient-header);color:#fff;text-align:center;padding:var(--spacing-5)}.receipt-header h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin-bottom:var(--spacing-1)}.receipt-header .company-name{font-size:var(--font-size-sm);opacity:.9;margin-bottom:var(--spacing-2)}.receipt-header .slip-number{font-size:var(--font-size-xs);opacity:.7;font-family:monospace}.employee-infos{padding:16px;border-bottom:1px dashed #e2e8f0;display:block;width:100%;box-sizing:border-box}.employee-infos .info-row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #f1f5f9;width:100%;writing-mode:horizontal-tb}.employee-infos .info-row:last-child{border-bottom:none}.employee-infos .info-row .label{color:#64748b;font-size:14px;font-weight:500;flex:0 0 auto;white-space:nowrap;writing-mode:horizontal-tb}.employee-infos .info-row .value{font-size:14px;font-weight:600;color:#1e293b;text-align:right;flex:1 1 auto;margin-left:12px;word-break:break-word;writing-mode:horizontal-tb}.employee-infos .status-badge{display:inline-block;font-size:12px;padding:4px 10px;border-radius:12px;font-weight:600;writing-mode:horizontal-tb}.employee-infos .status-badge.received{background:#dcfce7;color:#16a34a}.employee-infos .status-badge.pending{background:#fef3c7;color:#d97706}.section{padding:var(--spacing-4);border-bottom:1px dashed var(--neutral-200)}.section-title{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--neutral-500);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--spacing-3);padding-bottom:var(--spacing-2);border-bottom:2px solid var(--primary-500)}.item-list{display:flex;flex-direction:column;gap:var(--spacing-2)}.item-list.compact .item-row{padding:var(--spacing-1) 0;font-size:var(--font-size-sm)}.item-row{display:flex;justify-content:space-between;padding:var(--spacing-2) 0}.item-row.total{border-top:1px solid var(--neutral-200);margin-top:var(--spacing-2);padding-top:var(--spacing-3);font-weight:var(--font-weight-bold);color:var(--success-600)}.item-row.total.deduction{color:var(--error-600)}.item-row.penalty{color:var(--error-500);font-size:var(--font-size-sm)}.final-section{background:linear-gradient(135deg,var(--success-500) 0%,var(--success-600) 100%);padding:var(--spacing-5)}.final-row{display:flex;justify-content:space-between;align-items:center;color:#fff}.final-row span:first-child{font-weight:var(--font-weight-semibold)}.final-amount{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold)}.receipt-footer{padding:var(--spacing-4);text-align:center;color:var(--neutral-400);font-size:var(--font-size-xs)}.receipt-footer p{margin-bottom:var(--spacing-1)}.signature-section{position:relative;background:#f8fafc}.signature-input-wrapper{margin-top:var(--spacing-2)}.signature-pad-container{background:#fff;padding:var(--spacing-3);border-radius:var(--radius-lg);border:1px solid var(--neutral-300);animation:fadeIn .3s ease-in-out}.signature-instruction{font-size:var(--font-size-sm);color:var(--neutral-500);margin-bottom:var(--spacing-2);text-align:center}.canvas-wrapper{border:2px dashed var(--neutral-300);border-radius:var(--radius-md);background:#fff;margin-bottom:var(--spacing-4);overflow:hidden;height:200px;position:relative;display:flex}.signature-canvas{width:100%!important;height:100%!important;display:block}.signature-actions{display:grid;grid-template-columns:1fr 2fr;gap:var(--spacing-2)}.signature-actions .btn-text{grid-column:1 / -1;margin-top:var(--spacing-1);color:var(--neutral-500)}.signature-display{text-align:center;padding:var(--spacing-2)}.signature-display img{max-width:100%;height:auto;max-height:150px;margin-bottom:var(--spacing-2)}.signature-display .signed-date{font-size:var(--font-size-xs);color:var(--neutral-500)}.btn{padding:10px 16px;border-radius:var(--radius-lg);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);cursor:pointer;transition:all .2s;border:none;display:inline-flex;align-items:center;justify-content:center}.btn-primary{background:var(--primary-500);color:#fff}.btn-primary:hover{background:var(--primary-600)}.btn-outline{background:transparent;border:1px solid var(--primary-500);color:var(--primary-500)}.btn-outline:active{background:var(--primary-50)}.btn-secondary{background:var(--neutral-200);color:var(--neutral-700)}.btn-text{background:transparent;color:var(--neutral-600);text-decoration:underline}.w-full{width:100%}.leave-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#e2e8f0)}.leave-page-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4) var(--spacing-5);padding-top:calc(var(--spacing-4) + var(--safe-area-top));background:var(--gradient-header);color:#fff;border-bottom-left-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl)}.leave-page-header h1{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);margin:0}.leave-page-header .back-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#fff3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-xl);color:#fff;cursor:pointer;transition:all var(--transition-fast)}.leave-page-header .back-btn:hover{background:#ffffff4d}.leave-content{flex:1;padding:var(--spacing-5);padding-bottom:calc(var(--spacing-5) + 100px)}.section-title{color:#0f172a;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-4)}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-10);color:#64748b}.spinner-large{width:48px;height:48px;border:3px solid #e2e8f0;border-top-color:var(--primary-500);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--spacing-4)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-10);text-align:center;color:#94a3b8}.empty-state svg{opacity:.5;margin-bottom:var(--spacing-4)}.empty-state h3{margin:0 0 var(--spacing-2) 0;font-size:var(--font-size-lg);color:#64748b}.empty-state p{margin:0;font-size:var(--font-size-sm)}.leave-list{display:flex;flex-direction:column;gap:var(--spacing-3)}.leave-card{display:flex;align-items:center;gap:var(--spacing-4);padding:var(--spacing-4);background:#fff;box-shadow:0 4px 16px #0000000f;border:1px solid #e2e8f0;border-radius:var(--radius-xl);cursor:pointer;transition:all var(--transition-base)}.leave-card:hover{background:#f8fafc;transform:translate(4px);box-shadow:0 8px 24px #0000001a}.leave-status-icon{width:44px;height:44px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;flex-shrink:0}.leave-status-icon.success{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.leave-status-icon.danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.leave-status-icon.warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.leave-info{flex:1;min-width:0}.leave-info h4{margin:0 0 var(--spacing-1) 0;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:#0f172a}.leave-date{font-size:var(--font-size-sm);color:#64748b;margin:0 0 var(--spacing-1) 0}.leave-status{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);margin:0}.leave-status.success{color:#16a34a}.leave-status.danger{color:#dc2626}.leave-status.warning{color:#d97706}.leave-note{font-size:var(--font-size-xs);color:#94a3b8;margin:var(--spacing-1) 0 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leave-arrow{color:#94a3b8}.fab-button{position:fixed;bottom:calc(80px + var(--safe-area-bottom) + var(--spacing-5));right:var(--spacing-5);width:56px;height:56px;border-radius:50%;background:var(--gradient-button);color:#fff;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 8px 24px #3b82f666;transition:all var(--transition-base);z-index:100}.fab-button:hover{transform:scale(1.1);box-shadow:0 12px 32px #3b82f680}.modal-overlay-leave{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:flex-end;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out}.modal-content-leave{background:#fff;border-radius:var(--radius-3xl) var(--radius-3xl) 0 0;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease-out}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-5);border-bottom:1px solid #e2e8f0;position:sticky;top:0;background:#fff;z-index:10}.modal-header h2{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:#0f172a}.close-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#f1f5f9;border:none;border-radius:var(--radius-lg);color:#64748b;cursor:pointer;transition:all var(--transition-fast)}.close-btn:hover{background:#e2e8f0;color:#0f172a}.modal-body{padding:var(--spacing-5)}.detail-card{background:#f8fafc;border-radius:var(--radius-xl);padding:var(--spacing-5);border:1px solid #e2e8f0}.detail-card h3{margin:0 0 var(--spacing-4) 0;font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:#0f172a}.detail-item{display:flex;flex-direction:column;gap:var(--spacing-1);margin-bottom:var(--spacing-4);color:#0f172a}.detail-item:last-child{margin-bottom:0}.detail-item strong{font-size:var(--font-size-xs);color:#64748b;text-transform:uppercase;letter-spacing:.5px}.detail-item span{font-size:var(--font-size-base)}.detail-item.photo img{margin-top:var(--spacing-2);max-width:100%;border-radius:var(--radius-lg)}.status-badge{display:inline-block;padding:var(--spacing-1) var(--spacing-3);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.status-badge.success{background:#22c55e26;color:#16a34a}.status-badge.danger{background:#ef444426;color:#dc2626}.status-badge.warning{background:#f59e0b26;color:#d97706}.leave-form{display:flex;flex-direction:column;gap:var(--spacing-4)}.input-group{display:flex;flex-direction:column;gap:var(--spacing-2)}.input-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:#475569}.leave-form input,.leave-form select,.leave-form textarea{width:100%;padding:var(--spacing-4);background:#f8fafc;border:1px solid #e2e8f0;border-radius:var(--radius-lg);color:#0f172a;font-size:var(--font-size-base);transition:all var(--transition-fast)}.leave-form input:focus,.leave-form select:focus,.leave-form textarea:focus{outline:none;border-color:var(--primary-500);background:#fff;box-shadow:0 0 0 3px #3b82f61a}.leave-form select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:20px;padding-right:44px}.btn-outline{display:flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-4);background:transparent;border:1px solid #e2e8f0;border-radius:var(--radius-lg);color:#475569;font-size:var(--font-size-base);cursor:pointer;transition:all var(--transition-fast)}.btn-outline:hover{background:#f8fafc;border-color:#cbd5e1}.photo-preview{margin-top:var(--spacing-3);border-radius:var(--radius-lg);overflow:hidden}.photo-preview img{width:100%;max-height:200px;object-fit:cover}.btn-primary{width:100%;padding:var(--spacing-4);background:var(--gradient-button);color:#fff;border:none;border-radius:var(--radius-xl);font-size:var(--font-size-base);font-weight:var(--font-weight-bold);cursor:pointer;transition:all var(--transition-base)}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 24px #3b82f666}.btn-primary:disabled{opacity:.6;cursor:not-allowed}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.business-trip-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.info-alert{background:linear-gradient(135deg,#ffc1071a,#ffc1070d);border:1px solid rgba(255,193,7,.3);border-radius:16px;padding:16px;margin-bottom:24px;display:flex;align-items:flex-start;gap:12px}.info-icon{color:#f59e0b;flex-shrink:0;margin-top:2px}.info-text{font-size:.9rem;line-height:1.5;color:#92400e}.trip-list{display:flex;flex-direction:column;gap:12px}.trip-card{background:#fff;border-radius:var(--radius-xl);padding:16px;box-shadow:var(--shadow-card);cursor:pointer;transition:all .2s ease;border:1px solid transparent}.trip-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #0000001a;border-color:var(--primary-100)}.trip-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.trip-title{font-size:1rem;font-weight:600;color:var(--neutral-800);margin:0 12px 0 0;flex:1}.trip-dates{display:flex;align-items:center;gap:8px;color:var(--primary-600);font-size:.85rem;font-weight:500;margin-bottom:8px}.trip-desc{font-size:.85rem;color:var(--neutral-500);margin:0;line-height:1.4}.status-badge{font-size:.75rem;padding:4px 10px;border-radius:20px;font-weight:600;text-transform:capitalize;white-space:nowrap}.status-approved{background:#dcfce7;color:#166534}.status-rejected{background:#fee2e2;color:#991b1b}.status-pending{background:#fef3c7;color:#92400e}.fab-button{position:fixed;bottom:90px;right:20px;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--primary-500) 0%,var(--primary-700) 100%);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px #6366f166;transition:all .3s ease;z-index:50}.fab-button:hover{transform:scale(1.1);box-shadow:0 6px 25px #6366f180}.modal-content-trip{background:#fff;border-radius:var(--radius-2xl);width:100%;max-width:500px;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease}.modal-header-trip{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--neutral-100);position:sticky;top:0;background:#fff;z-index:10;border-radius:var(--radius-2xl) var(--radius-2xl) 0 0}.modal-close-trip{background:var(--neutral-100);border:none;padding:8px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--neutral-600)}.trip-form{padding:20px}.form-input:focus,.form-textarea:focus{outline:none;border-color:var(--primary-400);background:#fff;box-shadow:0 0 0 4px #6366f11a}.form-textarea{resize:vertical;min-height:80px}.location-control{display:flex;align-items:center;justify-content:space-between;background:var(--neutral-50);padding:12px;border-radius:var(--radius-xl);border:1px solid var(--neutral-200)}.location-text{font-size:.9rem}.location-success{display:flex;align-items:center;gap:6px;color:var(--success-600);font-weight:500}.location-empty{color:var(--neutral-400);font-style:italic}.btn-location{background:#fff;border:1px solid var(--primary-200);color:var(--primary-600);padding:6px 12px;border-radius:8px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-location:hover{background:var(--primary-50);border-color:var(--primary-300)}.form-row{display:flex;gap:12px;margin-bottom:16px}.form-group.half{flex:1;margin-bottom:0}.photo-upload-box{width:100%;aspect-ratio:1;border:2px dashed var(--neutral-300);border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;background:var(--neutral-50);overflow:hidden;transition:all .2s}.photo-upload-box:hover{border-color:var(--primary-400);background:var(--primary-50)}.upload-placeholder-small{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--neutral-400)}.upload-placeholder-small span{font-size:.8rem;font-weight:500}.photo-thumb{width:100%;height:100%;object-fit:cover}.trip-detail{padding:20px}.photos-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}.detail-photo{display:flex;flex-direction:column;gap:6px}.photo-label{font-size:.75rem;font-weight:600;color:var(--neutral-500)}.detail-photo img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;border:1px solid var(--neutral-200)}@media(max-width:480px){.page-header{padding:14px 16px}.page-content{padding:16px 12px 100px}.trip-card{padding:14px}.modal-content{max-height:85vh}.trip-form,.trip-detail{padding:16px}}.overtime-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.filter-section{margin-bottom:var(--spacing-4)}.month-filter{width:100%;padding:var(--spacing-3) var(--spacing-4);background:#fff;border:1px solid var(--neutral-200);border-radius:var(--radius-xl);font-size:var(--font-size-sm);color:var(--neutral-700);cursor:pointer}.summary-card{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-3);margin-bottom:var(--spacing-4)}.summary-item{background:#fff;border-radius:var(--radius-xl);padding:var(--spacing-4);text-align:center;box-shadow:var(--shadow-sm)}.summary-value{display:block;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--primary-600);margin-bottom:var(--spacing-1)}.summary-label{font-size:var(--font-size-xs);color:var(--neutral-500);text-transform:uppercase;letter-spacing:.03em}.loading-state,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-10);text-align:center}.loading-state .spinner{width:40px;height:40px;border:3px solid var(--neutral-200);border-top-color:var(--primary-500);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--spacing-4)}.empty-state p{color:var(--neutral-500);font-size:var(--font-size-sm)}.overtime-list{display:flex;flex-direction:column;gap:var(--spacing-3)}.overtime-card{background:#fff;border-radius:var(--radius-xl);padding:var(--spacing-4);box-shadow:var(--shadow-sm)}.overtime-date{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-3);padding-bottom:var(--spacing-3);border-bottom:1px solid var(--neutral-100)}.date-text{font-weight:var(--font-weight-semibold);color:var(--neutral-700)}.status-badge{font-size:var(--font-size-xs);padding:var(--spacing-1) var(--spacing-2);border-radius:var(--radius-full)}.status-badge.completed{background:var(--success-100);color:var(--success-600)}.status-badge.ongoing{background:var(--warning-100);color:var(--warning-600)}.overtime-details{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-3)}.detail-item{display:flex;flex-direction:column}.detail-label{font-size:var(--font-size-xs);color:var(--neutral-500);margin-bottom:2px}.detail-value{font-weight:var(--font-weight-medium);color:var(--neutral-800)}.detail-value.upah{color:var(--success-600);font-weight:var(--font-weight-bold)}.overtime-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#0f172a,#1e293b)}.overtime-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-4) var(--spacing-5);padding-top:calc(var(--spacing-4) + var(--safe-area-top));color:#fff}.overtime-header h1{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.back-btn,.history-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-xl);color:#fff;cursor:pointer;transition:all var(--transition-fast)}.back-btn:hover,.history-btn:hover{background:#fff3}.location-status{display:flex;align-items:center;gap:var(--spacing-3);margin:0 var(--spacing-5) var(--spacing-4);padding:var(--spacing-4);border-radius:var(--radius-xl);background:#ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}.location-status.valid{background:#22c55e26;border-color:#22c55e4d}.location-status.invalid{background:#ef444426;border-color:#ef44444d}.location-icon{width:40px;height:40px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;flex-shrink:0}.location-status.valid .location-icon{background:var(--gradient-success);color:#fff}.location-status.invalid .location-icon{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.location-text{flex:1;color:#fff}.location-text strong{display:block;font-size:var(--font-size-sm);margin-bottom:2px}.location-text span{font-size:var(--font-size-xs);opacity:.7}.refresh-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg);color:#fff;cursor:pointer;transition:all var(--transition-fast)}.refresh-btn:hover{background:#fff3}.refresh-btn:disabled{opacity:.5}.refresh-btn .spinning{animation:spin 1s linear infinite}.schedule-card{margin:0 var(--spacing-5) var(--spacing-4);padding:var(--spacing-4);background:#ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-xl)}.schedule-header{display:flex;align-items:center;gap:var(--spacing-2);margin-bottom:var(--spacing-3);color:var(--primary-300);font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:var(--spacing-2)}.schedule-content{display:flex;flex-direction:column;gap:var(--spacing-2)}.schedule-item{display:flex;justify-content:space-between;font-size:var(--font-size-sm)}.schedule-item .label{color:var(--neutral-400)}.schedule-item .value{color:#fff;font-weight:var(--font-weight-medium)}.camera-container{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--spacing-5)}.camera-wrapper{position:relative;width:100%;max-width:360px;aspect-ratio:3/4;border-radius:var(--radius-3xl);overflow:hidden;background:var(--neutral-800);box-shadow:0 20px 60px #00000080;border:4px solid rgba(255,255,255,.1)}.camera-video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.camera-overlay{position:absolute;top:0;left:0;right:0;padding:var(--spacing-4);background:linear-gradient(180deg,rgba(0,0,0,.6) 0%,transparent 100%)}.camera-overlay .digital-clock{background:#0000004d;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);padding:var(--spacing-3);border-radius:var(--radius-xl);border:1px solid rgba(255,255,255,.1);margin:0;box-shadow:none}.camera-overlay .digital-clock:before{display:none}.camera-overlay .clock-time{font-size:1.5rem;background:none;-webkit-text-fill-color:white}.camera-overlay .clock-date{font-size:var(--font-size-xs);color:#fffc}.face-guide{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:180px;height:240px;border:3px solid rgba(255,255,255,.4);border-radius:50%;pointer-events:none;box-shadow:0 0 0 9999px #0003}.attendance-actions{padding:var(--spacing-5);padding-bottom:calc(var(--spacing-5) + var(--safe-area-bottom))}.attendance-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--spacing-3);padding:var(--spacing-5);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:#fff;border:none;border-radius:var(--radius-2xl);cursor:pointer;transition:all var(--transition-base)}.attendance-btn.checkin{background:var(--gradient-success);box-shadow:0 8px 24px #22c55e66}.attendance-btn.checkout{background:var(--gradient-button);box-shadow:0 8px 24px #6366f166}.attendance-btn:hover:not(:disabled){transform:translateY(-3px)}.attendance-btn:active:not(:disabled){transform:translateY(-1px)}.attendance-btn:disabled{background:linear-gradient(135deg,#52525b,#3f3f46);box-shadow:none;cursor:not-allowed}.attendance-btn .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.performance-report-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.performance-report-page .page-header{display:flex;align-items:center;padding:16px 20px;background:var(--gradient-header);color:#fff;box-shadow:0 4px 15px #00000026;border-bottom-right-radius:20px;border-bottom-left-radius:20px;position:sticky;top:0;z-index:100}.performance-report-page .page-header h1{margin:0 40px 0 0;font-size:1.25rem;font-weight:600;flex:1;text-align:center}.performance-report-page .back-btn{background:#fff3;border:none;padding:8px;border-radius:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:background .3s}.performance-report-page .back-btn:hover{background:#ffffff4d}.performance-report-page .page-content{flex:1;padding:20px 16px 100px;overflow-y:auto}.report-section{margin-bottom:20px}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-state p{margin-top:16px;color:var(--neutral-500);font-size:.875rem}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-card)}.report-list{display:flex;flex-direction:column;gap:12px}.report-card{display:flex;align-items:center;background:#fff;border-radius:var(--radius-xl);padding:16px;box-shadow:var(--shadow-card);cursor:pointer;transition:all .2s ease;border:1px solid transparent}.report-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #0000001a;border-color:var(--primary-100)}.report-card:active{transform:translateY(0)}.report-card-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-50) 0%,var(--primary-100) 100%);border-radius:12px;margin-right:14px;flex-shrink:0}.report-card-icon svg{color:var(--primary-600)}.report-card-content{flex:1;min-width:0}.report-title{font-size:.95rem;font-weight:600;color:var(--neutral-800);margin:0 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.report-date{font-size:.8rem;color:var(--primary-600);margin:0 0 4px;font-weight:500}.report-desc{font-size:.8rem;color:var(--neutral-500);margin:0;line-height:1.4}.report-card-arrow{flex-shrink:0;color:var(--neutral-400);margin-left:8px}.fab-button{position:fixed;bottom:90px;right:20px;width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--primary-500) 0%,var(--primary-700) 100%);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px #3b82f666;transition:all .3s ease;z-index:50}.fab-button:hover{transform:scale(1.1);box-shadow:0 6px 25px #3b82f680}.modal-content-performance{background:#fff;border-radius:var(--radius-2xl);width:100%;max-width:500px;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease}.modal-header h2{margin:0;font-size:1.1rem;font-weight:600;color:var(--neutral-800)}.modal-close-performance{background:var(--neutral-100);border:none;padding:8px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--neutral-600);transition:all .2s}.modal-close-performance:hover{background:var(--neutral-200);color:var(--neutral-800)}.report-form{padding:20px}.form-group{margin-bottom:16px}.form-label{display:block;font-size:.875rem;font-weight:600;color:var(--neutral-700);margin-bottom:8px}.form-input,.form-textarea{width:100%;padding:12px 16px;border:2px solid var(--neutral-200);border-radius:var(--radius-xl);font-size:.95rem;transition:all .2s ease;background:var(--neutral-50);box-sizing:border-box}.form-input:focus,.form-textarea:focus{outline:none;border-color:var(--primary-400);background:#fff;box-shadow:0 0 0 4px #3b82f61a}.form-textarea{resize:vertical;min-height:100px}.file-input{display:none}.file-input-label{display:flex;align-items:center;gap:10px;padding:12px 16px;border:2px dashed var(--neutral-300);border-radius:var(--radius-xl);cursor:pointer;transition:all .2s ease;color:var(--neutral-600);font-size:.9rem}.file-input-label:hover{border-color:var(--primary-400);background:var(--primary-50);color:var(--primary-600)}.photo-preview{position:relative;margin-top:12px;border-radius:var(--radius-xl);overflow:hidden;background:var(--neutral-100)}.photo-preview img{width:100%;max-height:200px;object-fit:cover;display:block}.remove-photo{position:absolute;top:8px;right:8px;width:32px;height:32px;background:#ef4444e6;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:all .2s}.remove-photo:hover{background:#dc2626;transform:scale(1.1)}.report-detail{padding:20px}.detail-card{background:var(--neutral-50);border-radius:var(--radius-xl);padding:20px}.detail-title{font-size:1.2rem;font-weight:700;color:var(--neutral-800);margin:0 0 20px;padding-bottom:16px;border-bottom:1px solid var(--neutral-200)}.detail-info{display:flex;flex-direction:column;gap:16px}.detail-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.detail-row-column{flex-direction:column}.detail-label{font-size:.85rem;font-weight:600;color:var(--primary-600);flex-shrink:0}.detail-value{font-size:.9rem;color:var(--neutral-700);text-align:right;line-height:1.5}.detail-row-column .detail-value{text-align:left;margin-top:6px}.detail-photo{margin-top:8px;border-radius:var(--radius-lg);overflow:hidden}.detail-photo img{width:100%;max-height:300px;object-fit:cover;display:block}.btn-block{width:100%;margin-top:8px}@media(max-width:480px){.performance-report-page .page-header{padding:14px 16px}.performance-report-page .page-header h1{font-size:1.1rem;margin-right:32px}.performance-report-page .page-content{padding:16px 12px 100px}.report-card{padding:14px}.report-card-icon{width:44px;height:44px}.modal-content{max-height:85vh}.modal-header,.report-form,.report-detail{padding:16px}.fab-button{bottom:80px;right:16px;width:52px;height:52px}}.guide-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.page-header{display:flex;align-items:center;padding:16px 20px;background:linear-gradient(135deg,#989fff,#0235bf);color:#fff;box-shadow:0 4px 15px #00000026;border-bottom-right-radius:20px;border-bottom-left-radius:20px;position:sticky;top:0;z-index:100}.page-header h1{margin:0 40px 0 0;font-size:1.25rem;font-weight:600;flex:1;text-align:center}.page-content{flex:1;padding:20px 16px 100px;overflow-y:auto}.section-header{margin-bottom:16px}.section-title{font-size:1.1rem;font-weight:600;color:var(--neutral-800);margin:0}.loading-state,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.loading-state .spinner{width:40px;height:40px;border:3px solid var(--neutral-200);border-top-color:var(--primary-500);border-radius:50%;animation:spin .8s linear infinite}.empty-state{background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-card)}.empty-state svg{color:var(--neutral-300);margin-bottom:16px}.empty-state h3{font-size:1.1rem;font-weight:600;color:var(--neutral-700);margin:0 0 8px}.empty-state p{font-size:.875rem;color:var(--neutral-500);margin:0}.guide-list{display:flex;flex-direction:column;gap:12px}.guide-card{display:flex;align-items:center;background:#fff;border-radius:var(--radius-xl);padding:16px;box-shadow:var(--shadow-card);cursor:pointer;transition:all .2s ease;border:1px solid transparent}.guide-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #0000001a;border-color:var(--primary-100)}.guide-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-50) 0%,var(--primary-100) 100%);border-radius:12px;margin-right:14px;flex-shrink:0;color:var(--primary-600)}.guide-content{flex:1;min-width:0}.guide-content h3{font-size:1rem;font-weight:600;color:var(--neutral-800);margin:0 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.guide-content p{font-size:.85rem;color:var(--neutral-500);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.4}.guide-arrow{flex-shrink:0;color:var(--neutral-400);margin-left:8px}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .2s ease}.modal-content{background:#fff;border-radius:var(--radius-2xl);width:100%;max-width:500px;max-height:80vh;overflow-y:auto;animation:slideUp .3s ease;display:flex;flex-direction:column}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--neutral-100);position:sticky;top:0;background:#fff;z-index:10;border-radius:var(--radius-2xl) var(--radius-2xl) 0 0}.modal-header h2{margin:0;font-size:1.1rem;font-weight:600;color:var(--neutral-800);flex:1;padding-right:16px}.modal-close{background:var(--neutral-100);border:none;padding:8px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--neutral-600);flex-shrink:0}.guide-detail{padding:24px}.guide-text{font-size:.95rem;line-height:1.6;color:var(--neutral-700);white-space:pre-wrap;margin-bottom:24px}.guide-footer{text-align:right;padding-top:16px;border-top:1px solid var(--neutral-100)}.guide-footer small{color:var(--neutral-500);font-size:.8rem}@media(max-width:480px){.page-header{padding:14px 16px}.page-content{padding:16px 12px 100px}.guide-card{padding:14px}.guide-icon{width:40px;height:40px}.modal-content{max-height:85vh}.modal-header,.guide-detail{padding:16px}}.pengaduan-page{min-height:100vh;display:flex;flex-direction:column;background:var(--neutral-100)}.page-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:linear-gradient(135deg,#989fff,#0235bf);color:#fff;box-shadow:0 4px 15px #00000026;border-bottom-right-radius:20px;border-bottom-left-radius:20px;position:sticky;top:0;z-index:100}.page-header h1{margin:0 40px 0 0;font-size:1.25rem;font-weight:600;flex:1;text-align:center;letter-spacing:.5px;text-shadow:0 1px 2px rgba(0,0,0,.2)}.back-btn{background:#fff3;border:none;padding:8px;border-radius:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:background .3s}.back-btn:hover{background:#ffffff4d}.page-content{flex:1;padding:20px 20px 100px}.pengaduan-form{background:#fff;padding:24px;border-radius:20px;box-shadow:0 4px 20px #0000000d}.form-group{margin-bottom:20px}.form-label{display:flex;align-items:center;margin-bottom:8px;font-weight:600;color:var(--neutral-700);font-size:.9rem}.form-control{width:100%;padding:12px 16px;border:2px solid var(--neutral-200);border-radius:12px;font-size:1rem;transition:all .2s ease;background:var(--neutral-50);color:var(--neutral-800);box-sizing:border-box}.form-control:focus{border-color:var(--primary-400);background:#fff;outline:none;box-shadow:0 0 0 4px #6366f11a}textarea.form-control{resize:vertical;min-height:100px}.photo-upload-container{border:2px dashed var(--neutral-300);border-radius:16px;padding:20px;text-align:center;cursor:pointer;transition:all .3s ease;background:var(--neutral-50);position:relative;overflow:hidden}.photo-upload-container:hover{border-color:var(--primary-400);background:var(--primary-50)}.upload-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px 0}.upload-placeholder svg{color:var(--primary-500);margin-bottom:12px}.upload-placeholder p{color:var(--neutral-500);margin:0;font-weight:500;font-size:.9rem}.preview-wrapper{position:relative;width:100%;border-radius:12px;overflow:hidden}.photo-preview{width:100%;max-height:250px;object-fit:cover;display:block;border-radius:12px}.change-photo-overlay{position:absolute;bottom:0;left:0;right:0;background:#0009;padding:8px;color:#fff;font-size:.85rem;font-weight:500;opacity:0;transition:opacity .2s}.preview-wrapper:hover .change-photo-overlay{opacity:1}.location-info{font-size:.9rem;color:var(--neutral-600);margin-top:5px;display:flex;align-items:center;gap:10px;padding:14px;background:var(--neutral-50);border-radius:12px;border:1px solid var(--neutral-200)}.location-info svg{color:var(--primary-500);flex-shrink:0}.retry-location-btn{margin-left:auto;background:none;border:none;color:var(--primary-600);font-weight:600;font-size:.85rem;cursor:pointer;padding:4px 8px}.retry-location-btn:hover{text-decoration:underline}.btn-submit{width:100%;padding:16px;background:linear-gradient(135deg,var(--primary-500) 0%,var(--primary-700) 100%);color:#fff;border:none;border-radius:14px;font-weight:600;font-size:1rem;margin-top:24px;box-shadow:0 4px 15px #6366f14d;transition:all .3s ease;cursor:pointer}.btn-submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px #6366f166}.btn-submit:active{transform:translateY(0)}.btn-submit:disabled{opacity:.7;cursor:not-allowed;transform:none}@media(max-width:480px){.page-header{padding:14px 16px}.page-header h1{font-size:1.1rem;margin-right:32px}.page-content{padding:16px 16px 100px}.pengaduan-form{padding:16px}}.simple-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.page-header{display:flex;align-items:center;gap:var(--spacing-3);background:var(--gradient-header);padding:var(--spacing-4) var(--spacing-5);padding-top:calc(var(--spacing-4) + var(--safe-area-top));color:#fff;position:relative;overflow:hidden}.page-header:before{content:"";position:absolute;width:200px;height:200px;background:#ffffff14;border-radius:50%;top:-80px;right:-40px}.page-header h1{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.back-btn{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-xl);color:#fff;cursor:pointer;transition:all var(--transition-fast)}.back-btn:hover{background:#fff3}.page-content{flex:1;padding:var(--spacing-5)}.coming-soon{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--spacing-10);background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-card)}.coming-soon svg{margin-bottom:var(--spacing-5);color:var(--neutral-300);padding:var(--spacing-4);background:var(--neutral-50);border-radius:var(--radius-full)}.coming-soon h3{color:var(--neutral-800);margin-bottom:var(--spacing-2);font-size:var(--font-size-lg)}.coming-soon p{color:var(--neutral-500);font-size:var(--font-size-sm);max-width:280px}.simple-form{padding:var(--spacing-5);background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-card)}.schedule-info{display:flex;gap:var(--spacing-8);margin-top:var(--spacing-5);padding-top:var(--spacing-5);border-top:1px solid var(--neutral-100)}.schedule-item{display:flex;flex-direction:column}.schedule-item .label{font-size:var(--font-size-xs);color:var(--neutral-500);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--spacing-2)}.schedule-item .value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);background:var(--gradient-header);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-10);color:var(--neutral-400);text-align:center}.empty-state svg{margin-bottom:var(--spacing-4);padding:var(--spacing-4);background:var(--neutral-100);border-radius:var(--radius-full)}.work-schedule-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f8fafc,#f1f5f9)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-10);text-align:center}.empty-state svg{color:var(--neutral-300);margin-bottom:var(--spacing-4)}.empty-state h3{color:var(--neutral-700);margin-bottom:var(--spacing-2)}.empty-state p{color:var(--neutral-500)}.schedule-card{background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-card);overflow:hidden;margin-bottom:var(--spacing-4)}.schedule-header{background:var(--gradient-header);color:#fff;padding:var(--spacing-5);display:flex;align-items:center;gap:var(--spacing-4)}.schedule-icon{width:48px;height:48px;background:#fff3;border-radius:var(--radius-xl);display:flex;align-items:center;justify-content:center}.schedule-info h3{font-weight:var(--font-weight-bold);margin-bottom:2px}.schedule-info p{font-size:var(--font-size-sm);opacity:.85}.day-list{padding:var(--spacing-3)}.day-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-3) var(--spacing-4);border-bottom:1px solid var(--neutral-100);transition:background var(--transition-fast)}.day-item:last-child{border-bottom:none}.day-item:hover,.day-item.off{background:var(--neutral-50)}.day-name{font-weight:var(--font-weight-semibold);color:var(--neutral-700);min-width:80px}.shift-info{display:flex;flex-direction:column;align-items:flex-end;text-align:right}.shift-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--primary-600)}.shift-time{font-size:var(--font-size-xs);color:var(--neutral-500)}.off-label{font-size:var(--font-size-sm);color:var(--neutral-400);font-style:italic}.legend-card{background:#fff;border-radius:var(--radius-xl);padding:var(--spacing-4);box-shadow:var(--shadow-sm)}.legend-card h4{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--neutral-500);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--spacing-3)}.legend-list{display:flex;flex-direction:column;gap:var(--spacing-2)}.legend-item{display:flex;justify-content:space-between;padding:var(--spacing-2);background:var(--neutral-50);border-radius:var(--radius-lg);font-size:var(--font-size-sm)}.legend-name{font-weight:var(--font-weight-medium)}.legend-time{color:var(--neutral-500)}.edit-btn{background:var(--primary-500);color:#fff;border:none;padding:var(--spacing-2) var(--spacing-4);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);margin-left:auto;cursor:pointer;transition:background-color .2s}.edit-btn:hover{background:var(--primary-600)}.shift-select{padding:var(--spacing-2);border:1px solid var(--neutral-200);border-radius:var(--radius-md);background:#fff;font-size:var(--font-size-sm);color:var(--neutral-700);width:100%;max-width:200px;outline:none}.shift-select:focus{border-color:var(--primary-500);box-shadow:0 0 0 2px var(--primary-100)}.edit-actions{display:flex;gap:var(--spacing-3);padding:var(--spacing-4);border-top:1px solid var(--neutral-100);justify-content:flex-end;background:var(--neutral-50)}.cancel-btn{padding:var(--spacing-2) var(--spacing-4);border:1px solid var(--neutral-200);background:#fff;color:var(--neutral-600);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer}.save-btn{padding:var(--spacing-2) var(--spacing-4);background:var(--primary-600);color:#fff;border:none;border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer}.save-btn:disabled{opacity:.7;cursor:not-allowed}.header-action-btn{background:#fff3;border:none;color:#fff;width:40px;height:40px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s;margin-left:auto}.header-action-btn:hover{background:#ffffff4d}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:flex-end;z-index:1000;animation:fadeIn .2s ease-out}.modal-content{background:#fff;width:100%;border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;max-height:80vh;display:flex;flex-direction:column;animation:slideUp .3s cubic-bezier(.16,1,.3,1)}.modal-header{padding:var(--spacing-4);border-bottom:1px solid var(--neutral-100);display:flex;align-items:center;justify-content:space-between}.modal-header h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--neutral-800)}.close-btn{background:none;border:none;color:var(--neutral-500);padding:var(--spacing-2);cursor:pointer;border-radius:var(--radius-full)}.close-btn:hover{background:var(--neutral-100)}.modal-body{padding:var(--spacing-4);overflow-y:auto;display:flex;flex-direction:column;gap:var(--spacing-3)}.schedule-option{display:flex;flex-direction:column;align-items:flex-start;padding:var(--spacing-4);background:var(--neutral-50);border:2px solid transparent;border-radius:var(--radius-xl);cursor:pointer;transition:all .2s;position:relative;text-align:left}.schedule-option:hover{background:var(--neutral-100)}.schedule-option.active{background:var(--primary-50);border-color:var(--primary-500)}.option-name{font-weight:var(--font-weight-bold);color:var(--neutral-800);margin-bottom:var(--spacing-1)}.option-desc{font-size:var(--font-size-sm);color:var(--neutral-500)}.check-icon{position:absolute;top:var(--spacing-4);right:var(--spacing-4);color:var(--primary-600)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media(min-width:768px){.modal-overlay{align-items:center;justify-content:center;padding:var(--spacing-4)}.modal-content{width:100%;max-width:500px;border-radius:var(--radius-2xl);max-height:600px}}.work-schedule-khusus-page{min-height:100vh;background:linear-gradient(180deg,#0f172a,#1e293b);color:#fff;padding-bottom:100px}.schedule-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:#1e293be6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.schedule-header .back-btn{width:40px;height:40px;border-radius:12px;background:#64748b33;border:none;color:#94a3b8;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.schedule-header h2{font-size:1.125rem;font-weight:700;margin:0;color:#f1f5f9}.calendar-nav{display:flex;align-items:center;justify-content:space-between;padding:20px}.calendar-nav h3{font-size:1.125rem;font-weight:600;color:#f1f5f9;margin:0;text-transform:capitalize}.nav-btn{width:40px;height:40px;border-radius:12px;background:#3b82f61a;border:1px solid rgba(59,130,246,.3);color:#3b82f6;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.nav-btn:hover{background:#3b82f633}.calendar-container{margin:0 20px;background:#1e293b99;border-radius:20px;padding:16px;border:1px solid rgba(100,116,139,.2);overflow-x:auto;-webkit-overflow-scrolling:touch}.calendar-container::-webkit-scrollbar{height:4px}.calendar-container::-webkit-scrollbar-track{background:transparent}.calendar-container::-webkit-scrollbar-thumb{background:#5e748b80;border-radius:4px}.calendar-header{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:8px;min-width:400px}.day-name{text-align:center;font-size:.75rem;font-weight:600;color:#64748b;padding:8px 0;text-transform:uppercase;letter-spacing:.5px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;min-height:280px;min-width:400px}.calendar-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:10px;background:#0f172a66;border:2px solid transparent;transition:all .2s ease;position:relative;gap:4px}.calendar-day.empty{background:transparent}.calendar-day.today{background:#3b82f633;border-color:#3b82f6}.calendar-day.has-shift{background:#1e293bcc}.day-number{font-size:.875rem;font-weight:600;color:#94a3b8}.calendar-day.today .day-number{color:#3b82f6}.shift-dot{width:8px;height:8px;border-radius:50%}.calendar-loading{grid-column:span 7;display:flex;align-items:center;justify-content:center;padding:60px}.schedule-section{margin:24px 20px}.schedule-section h4{font-size:1rem;font-weight:600;color:#94a3b8;margin:0 0 16px}.schedule-list{display:flex;flex-direction:column;gap:10px}.schedule-item{display:flex;align-items:center;gap:14px;padding:14px 16px;background:#1e293b99;border-radius:14px;border:1px solid rgba(100,116,139,.2)}.schedule-date{display:flex;flex-direction:column;align-items:center;min-width:48px}.date-day{font-size:.7rem;font-weight:500;color:#64748b;text-transform:uppercase}.date-number{font-size:1.25rem;font-weight:700;color:#f1f5f9}.schedule-shift{flex:1;padding:12px 16px;border-radius:10px;color:#fff}.schedule-shift .shift-name{display:block;font-size:.9rem;font-weight:600;margin-bottom:4px}.schedule-shift .shift-time{font-size:.8rem;opacity:.9}.empty-schedule{text-align:center;padding:40px 20px}.empty-schedule svg{color:#475569;margin-bottom:16px}.empty-schedule p{font-size:.875rem;color:#64748b;margin:0}.list-loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:40px;color:#64748b}.register-face-page{background:var(--gradient-primary);color:#fff;min-height:100vh;display:flex;flex-direction:column}.register-face-header{text-align:center;padding:var(--spacing-5);padding-top:calc(var(--spacing-5) + var(--safe-area-top));color:#fff}.register-face-header h1{margin:0 0 var(--spacing-2) 0;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.register-face-header p{margin:0;opacity:.9;font-size:var(--font-size-sm)}.register-progress-container{margin-top:var(--spacing-4);background:#ffffff4d;height:6px;border-radius:var(--radius-full);overflow:hidden}.register-progress-bar{height:100%;background:#fff;transition:width var(--transition-base)}.register-face-content{flex:1;padding:0 var(--spacing-5) var(--spacing-5) var(--spacing-5);display:flex;flex-direction:column}.register-face-card{background:#fff;border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);padding:var(--spacing-5);color:var(--neutral-800);flex:1;display:flex;flex-direction:column}.register-step-info{text-align:center;margin-bottom:var(--spacing-4)}.register-step-info h2{color:var(--neutral-500);font-size:var(--font-size-sm);margin:0 0 var(--spacing-1) 0;text-transform:uppercase;letter-spacing:1px}.register-step-info h3{color:var(--neutral-800);font-size:var(--font-size-lg);margin:0 0 var(--spacing-2) 0;font-weight:var(--font-weight-bold)}.register-step-info p{color:var(--neutral-500);font-size:var(--font-size-sm);margin:0}.register-camera-container{position:relative;width:100%;height:0;padding-bottom:100%;border-radius:var(--radius-xl);overflow:hidden;background:var(--neutral-100);margin-bottom:var(--spacing-4)}.register-camera-video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.register-captured-image-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#0000001a;z-index:5}.register-captured-image{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.register-face-guideline-overlay{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:10}.register-face-guideline-circle{width:70%;height:70%;border:3px solid rgba(255,255,255,.8);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 1000px #0000004d}.register-face-guideline-inner{width:90%;height:90%;border:2px dashed rgba(255,255,255,.5);border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative}.register-face-guideline-text{position:absolute;bottom:-40px;left:50%;transform:translate(-50%);background:#000000b3;color:#fff;padding:6px 12px;border-radius:var(--radius-full);font-size:var(--font-size-xs);white-space:nowrap}.register-detection-status-container{margin-top:var(--spacing-3);display:flex;justify-content:center;margin-bottom:var(--spacing-3)}.register-detection-status{padding:8px 16px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);display:flex;align-items:center;gap:6px}.register-detection-status.success{background:#22c55e1a;color:var(--success-600);border:1px solid var(--success-500)}.register-action-buttons{margin-top:auto;display:flex;flex-direction:column;gap:var(--spacing-3)}.register-photo-actions{display:flex;gap:var(--spacing-3)}.register-photo-actions .btn{flex:1}.register-back-button-container{margin-top:var(--spacing-3);text-align:center}.register-btn-link{background:none;border:none;color:var(--neutral-500);font-size:var(--font-size-sm);cursor:pointer;text-decoration:underline}.register-loading-overlay{position:fixed;inset:0;background:#000000b3;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:var(--z-modal);color:#fff}.register-loading-spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:var(--spacing-3)}.register-toast-container{position:fixed;top:var(--spacing-5);left:50%;transform:translate(-50%);z-index:var(--z-toast);width:90%;max-width:400px}.register-toast{background:#000c;color:#fff;padding:12px 20px;border-radius:var(--radius-lg);font-size:var(--font-size-sm);text-align:center;box-shadow:var(--shadow-lg);animation:slideDown .3s ease-out}@keyframes slideDown{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.exchange-shift-page{min-height:100vh;background:linear-gradient(180deg,#0f172a,#1e293b);color:#fff;padding-bottom:100px}.exchange-shift-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:#1e293be6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:100}.exchange-shift-header .back-btn{width:40px;height:40px;border-radius:12px;background:#64748b33;border:none;color:#94a3b8;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.exchange-shift-header .back-btn:hover{background:#64748b4d;color:#fff}.exchange-shift-header h2{font-size:1.25rem;font-weight:700;margin:0;color:#f1f5f9}.pending-badge .badge{min-width:22px;height:22px;padding:0 6px;font-size:.75rem;font-weight:700;border-radius:12px;display:inline-flex;align-items:center;justify-content:center}.segment-filter{display:flex;gap:8px;padding:12px 20px;background:#1e293b99}.segment-btn{flex:1;padding:10px 16px;border:none;border-radius:10px;background:#64748b33;color:#94a3b8;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.segment-btn:hover{background:#64748b4d}.segment-btn.active{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 4px 15px #3b82f64d}.exchange-shift-content{padding:20px}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:16px}.loading-container .spinner{width:48px;height:48px;border:3px solid rgba(59,130,246,.2);border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state svg{color:#475569;margin-bottom:20px}.empty-state h3{font-size:1.125rem;font-weight:600;color:#94a3b8;margin:0 0 8px}.empty-state p{font-size:.875rem;color:#64748b;max-width:280px;margin:0;line-height:1.5}.request-list{display:flex;flex-direction:column;gap:16px}.request-card{background:#1e293bcc;border-radius:16px;overflow:hidden;border:1px solid rgba(100,116,139,.2)}.request-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:#0f172a99}.request-type{display:flex;align-items:center;gap:8px;font-size:.8rem;font-weight:600}.request-type.incoming{color:#22c55e}.request-type.outgoing{color:#3b82f6}.request-body{padding:16px}.exchange-info{display:flex;align-items:stretch;gap:12px;margin-bottom:16px}.employee-card{flex:1;background:#0f172a80;border-radius:12px;padding:12px}.employee-header{display:flex;align-items:center;gap:6px;font-size:.7rem;font-weight:600;color:#64748b;margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}.employee-name{font-size:.85rem;font-weight:600;color:#f1f5f9;margin:0 0 4px}.employee-nik{font-size:.75rem;color:#64748b;margin:0 0 10px}.shift-info{border-radius:8px;padding:8px 10px;color:#fff}.shift-name{display:block;font-size:.75rem;font-weight:600;margin-bottom:2px}.shift-time{font-size:.7rem;opacity:.9}.exchange-arrow{display:flex;align-items:center;justify-content:center;color:#64748b}.request-date{display:flex;align-items:center;gap:10px;padding:12px;background:#3b82f61a;border-radius:10px;margin-bottom:12px}.request-date svg{color:#3b82f6}.request-date span{font-size:.85rem;color:#94a3b8}.request-note{font-size:.85rem;color:#94a3b8;padding:12px;background:#64748b1a;border-radius:10px;margin-bottom:12px}.request-note strong{color:#cbd5e1}.request-meta{display:flex;align-items:center;gap:8px;font-size:.75rem;color:#64748b}.request-actions{display:flex;gap:10px;padding:14px 16px;background:#0f172a66;border-top:1px solid rgba(100,116,139,.2)}.action-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;border:none;border-radius:10px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease}.action-btn.success{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.action-btn.danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.action-btn.outline{background:transparent;border:1px solid rgba(100,116,139,.4);color:#94a3b8}.action-btn.outline:hover{background:#64748b33}.action-btn:disabled{opacity:.5;cursor:not-allowed}.badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:8px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.badge.success{background:#22c55e26;color:#22c55e}.badge.warning{background:#f59e0b26;color:#f59e0b}.badge.danger{background:#ef444426;color:#ef4444}.badge.medium{background:#64748b26;color:#64748b}.fab-button{position:fixed;right:20px;bottom:90px;width:60px;height:60px;border-radius:16px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;box-shadow:0 8px 25px #3b82f666;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;z-index:99}.fab-button:hover{transform:scale(1.05);box-shadow:0 12px 35px #3b82f680}.fab-button:active{transform:scale(.95)}.dialog-overlay{position:fixed;inset:0;background:#000000bf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}.dialog{background:#1e293b;border-radius:20px;padding:24px;max-width:360px;width:100%;text-align:center;border:1px solid rgba(100,116,139,.3)}.dialog h3{font-size:1.125rem;font-weight:700;margin:0 0 12px;color:#f1f5f9}.dialog p{font-size:.875rem;color:#94a3b8;margin:0 0 24px;line-height:1.5}.dialog-actions{display:flex;gap:12px}.dialog-btn{flex:1;padding:14px;border-radius:12px;font-size:.875rem;font-weight:600;border:none;cursor:pointer;transition:all .2s ease}.dialog-btn.cancel{background:#64748b33;color:#94a3b8}.dialog-btn.cancel:hover{background:#64748b4d}.dialog-btn.success{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.dialog-btn.danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.dialog-btn:disabled{opacity:.5;cursor:not-allowed}.exchange-shift-form-page{min-height:100vh;background:linear-gradient(180deg,#0f172a,#1e293b);color:#fff;padding-bottom:100px}.form-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:#1e293be6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.form-header .back-btn{width:40px;height:40px;border-radius:12px;background:#64748b33;border:none;color:#94a3b8;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.form-header h2{font-size:1.125rem;font-weight:700;margin:0;color:#f1f5f9}.step-indicator{display:flex;align-items:center;justify-content:center;padding:24px 20px;gap:8px}.step{display:flex;flex-direction:column;align-items:center;gap:6px}.step-circle{width:36px;height:36px;border-radius:50%;background:#64748b33;color:#64748b;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.875rem;transition:all .3s ease}.step.active .step-circle{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 4px 15px #3b82f64d}.step.completed .step-circle{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.step span{font-size:.7rem;color:#64748b;font-weight:500}.step.active span{color:#94a3b8}.step-line{width:40px;height:2px;background:#64748b4d;margin-bottom:20px}.form-content{padding:0 20px}.step-content{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.step-content h3{font-size:1.25rem;font-weight:700;color:#f1f5f9;margin:0 0 8px;text-align:center}.step-content .step-desc{font-size:.875rem;color:#64748b;text-align:center;margin:0 0 24px}.date-picker-btn{width:100%;display:flex;align-items:center;gap:16px;padding:18px 20px;background:#1e293bcc;border:1px solid rgba(100,116,139,.3);border-radius:16px;color:#94a3b8;font-size:1rem;cursor:pointer;transition:all .2s ease}.date-picker-btn:hover{background:#1e293b;border-color:#3b82f6}.date-picker-btn svg{color:#3b82f6}.my-shift-card{margin-top:20px;padding:20px;background:#1e293b99;border-radius:16px;border:1px solid rgba(100,116,139,.2)}.my-shift-card h4{font-size:.85rem;font-weight:600;color:#94a3b8;margin:0 0 12px}.shift-badge{display:flex;flex-direction:column;padding:14px 18px;border-radius:12px;color:#fff!important;text-shadow:0 1px 2px rgba(0,0,0,.3)}.shift-badge .shift-name{font-weight:700;font-size:1rem;margin-bottom:4px;color:#fff!important}.shift-badge .shift-time{font-size:.85rem;opacity:1;color:#fff!important}.emp-shift small{font-size:.7rem;opacity:1;color:#e2e8f0!important}.preview-shift span{font-size:.75rem;opacity:1;color:#fff!important}.loading-inline{display:flex;align-items:center;justify-content:center;gap:12px;padding:20px;color:#94a3b8}.spinner{width:32px;height:32px;border:3px solid rgba(59,130,246,.2);border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite}.spinner.small{width:20px;height:20px;border-width:2px}@keyframes spin{to{transform:rotate(360deg)}}.next-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:16px;margin-top:24px;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;border-radius:14px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.next-btn:hover:not(:disabled){box-shadow:0 8px 25px #3b82f666}.next-btn:disabled{opacity:.5;cursor:not-allowed}.employee-list{display:flex;flex-direction:column;gap:12px;max-height:400px;overflow-y:auto;padding:4px}.employee-option{display:flex;align-items:center;gap:12px;padding:16px;background:#1e293bcc;border:2px solid transparent;border-radius:16px;cursor:pointer;transition:all .2s ease;position:relative}.employee-option:hover{background:#1e293b;border-color:#3b82f64d}.employee-option.selected{border-color:#22c55e;background:#22c55e1a}.employee-info{display:flex;align-items:center;gap:12px;flex:1}.employee-avatar{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.125rem}.employee-details{flex:1}.emp-name{font-size:.95rem;font-weight:600;color:#f1f5f9;margin:0 0 4px}.emp-nik{font-size:.8rem;color:#fff;margin:0}.emp-shift{padding:8px 12px;border-radius:10px;color:#fff!important;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.3)}.emp-shift span{display:block;font-size:.75rem;font-weight:600;color:#fff!important}.emp-shift small{font-size:.7rem;opacity:.9;color:#fff!important}.check-icon{position:absolute;top:-8px;right:-8px;width:28px;height:28px;background:#22c55e;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff}.empty-employees{text-align:center;padding:40px 20px}.empty-employees svg{color:#475569;margin-bottom:16px}.empty-employees p{font-size:.875rem;color:#64748b;margin:0}.step-actions{display:flex;gap:12px;margin-top:24px}.back-step-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:16px;background:#64748b33;color:#94a3b8;border:none;border-radius:14px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease}.back-step-btn:hover{background:#64748b4d}.confirmation-card{background:#1e293bcc;border-radius:20px;padding:20px;border:1px solid rgba(100,116,139,.2)}.conf-row{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid rgba(100,116,139,.15)}.conf-label{color:#64748b;font-size:.875rem}.conf-value{color:#f1f5f9;font-weight:600;font-size:.875rem}.exchange-preview{display:flex;align-items:stretch;gap:12px;padding:20px 0}.preview-item{flex:1;text-align:center}.preview-label{font-size:.75rem;color:#64748b;text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:8px}.preview-emp-name{font-size:.85rem;color:#94a3b8;margin:8px 0}.preview-shift{padding:14px;border-radius:12px;color:#fff!important;text-shadow:0 1px 2px rgba(0,0,0,.3)}.preview-shift strong{display:block;font-size:.85rem;margin-bottom:4px;color:#fff!important}.preview-shift span{font-size:.75rem;opacity:.9;color:#fff!important}.exchange-icon{display:flex;align-items:center;color:#64748b}.keterangan-input{padding-top:16px;border-top:1px solid rgba(100,116,139,.15)}.keterangan-input label{display:block;font-size:.85rem;color:#94a3b8;margin-bottom:10px}.keterangan-input textarea{width:100%;padding:14px;background:#0f172acc;border:1px solid rgba(100,116,139,.3);border-radius:12px;color:#f1f5f9;font-size:.9rem;resize:none;font-family:inherit}.keterangan-input textarea:focus{outline:none;border-color:#3b82f6}.keterangan-input textarea::placeholder{color:#64748b}.submit-btn{flex:2;display:flex;align-items:center;justify-content:center;gap:10px;padding:16px;background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;border:none;border-radius:14px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease}.submit-btn:hover:not(:disabled){box-shadow:0 8px 25px #22c55e66}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.modal-overlay{position:fixed;inset:0;background:#000000bf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}.modal-content{background:#1e293b;border-radius:20px;padding:24px;max-width:360px;width:100%;text-align:center;border:1px solid rgba(100,116,139,.3)}.modal-content h3{font-size:1.125rem;font-weight:700;margin:0 0 20px;color:#f1f5f9}.date-input{width:100%;padding:14px;background:#0f172acc;border:1px solid rgba(100,116,139,.3);border-radius:12px;color:#f1f5f9;font-size:1rem;margin-bottom:16px}.date-input::-webkit-calendar-picker-indicator{filter:invert(1)}.modal-close{width:100%;padding:14px;background:#64748b33;color:#94a3b8;border:none;border-radius:12px;font-size:.95rem;font-weight:600;cursor:pointer}.success-modal-overlay{position:fixed;inset:0;background:#000000e6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:300;padding:20px}.success-modal{background:linear-gradient(180deg,#1e293b,#0f172a);border-radius:24px;padding:40px;max-width:340px;width:100%;text-align:center;border:1px solid rgba(34,197,94,.3)}.success-icon{margin-bottom:20px}.success-modal h2{font-size:1.5rem;font-weight:700;color:#22c55e;margin:0 0 12px}.success-modal p{font-size:.9rem;color:#94a3b8;margin:0 0 24px;line-height:1.5}.redirect-notice{display:flex;align-items:center;justify-content:center;gap:10px;color:#64748b;font-size:.85rem}.pd-page{--pd-primary: #0055ff;--pd-primary-dark: #003097;--pd-primary-light: #3b82f6;--pd-bg-main: #f0f4f8;--pd-bg-card: #ffffff;--pd-text-primary: #1e293b;--pd-text-secondary: #64748b;--pd-text-muted: #94a3b8;--pd-border-color: #e2e8f0;--pd-success: #10b981;--pd-warning: #f59e0b;min-height:100vh;background:var(--pd-bg-main);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;padding-bottom:90px;-webkit-font-smoothing:antialiased}.pd-header{display:flex;align-items:center;padding:14px 16px;background:var(--pd-bg-card);position:sticky;top:0;z-index:100;border-bottom:1px solid var(--pd-border-color)}.pd-btn-back{width:38px;height:38px;border-radius:12px;background:var(--pd-bg-main);border:none;display:flex;align-items:center;justify-content:center;color:var(--pd-text-secondary);cursor:pointer;transition:all .2s ease;margin-right:14px;flex-shrink:0}.pd-btn-back:active{transform:scale(.95);background:var(--pd-border-color)}.pd-header-title{font-size:1.1rem;font-weight:700;color:var(--pd-text-primary);margin:0}.pd-hero{margin:16px;padding:28px 20px;background:linear-gradient(135deg,var(--pd-primary) 0%,var(--pd-primary-dark) 100%);border-radius:20px;text-align:center;color:#fff;box-shadow:0 8px 24px #2563eb40;position:relative;overflow:hidden}.pd-hero:before{content:"";position:absolute;top:-50%;right:-50%;width:100%;height:100%;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 60%);pointer-events:none}.pd-avatar{width:88px;height:88px;border-radius:50%;background:#fff3;border:3px solid rgba(255,255,255,.4);margin:0 auto 16px;display:flex;align-items:center;justify-content:center;overflow:hidden}.pd-avatar img{width:100%;height:100%;object-fit:cover}.pd-avatar-placeholder{color:#fffc}.pd-name{font-size:1.35rem;font-weight:700;margin:0 0 6px;line-height:1.3;word-break:break-word}.pd-nik{font-size:.9rem;opacity:.9;margin:0 0 14px;letter-spacing:.03em}.pd-status-badge{display:inline-block;padding:6px 16px;background:#fff3;border-radius:20px;font-size:.8rem;font-weight:600;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.pd-content{padding:0 16px}.pd-section-title{display:flex;align-items:center;font-size:.75rem;font-weight:700;color:var(--pd-text-secondary);text-transform:uppercase;letter-spacing:.08em;margin:24px 0 12px 4px}.pd-section-title:before{content:"";width:4px;height:14px;background:var(--pd-primary);border-radius:2px;margin-right:8px}.pd-info-card{background:var(--pd-bg-card);border-radius:16px;overflow:hidden;margin-bottom:16px;box-shadow:0 1px 3px #0000000f;border:1px solid var(--pd-border-color)}.pd-info-row{padding:14px 16px;border-bottom:1px solid var(--pd-bg-main)}.pd-info-row:last-child{border-bottom:none}.pd-info-label{display:block;font-size:.75rem;font-weight:600;color:var(--pd-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.pd-info-value{display:block;font-size:.95rem;font-weight:600;color:var(--pd-text-primary);line-height:1.4;word-break:break-word}.pd-info-value.pd-success{color:var(--pd-success)}.pd-info-value.pd-warning{color:var(--pd-warning)}.pd-loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;color:var(--pd-text-secondary)}.pd-loading-spinner{width:44px;height:44px;border:3px solid var(--pd-border-color);border-top-color:var(--pd-primary);border-radius:50%;animation:pd-spin .8s linear infinite;margin-bottom:16px}@keyframes pd-spin{to{transform:rotate(360deg)}}.pd-loading-text{font-size:.9rem;font-weight:500}.pd-empty-state{text-align:center;padding:60px 24px;color:var(--pd-text-secondary)}.pd-empty-state svg{margin-bottom:16px;opacity:.5}.pd-empty-state p{margin:0;font-size:.95rem}@media(min-width:640px){.pd-page{max-width:600px;margin:0 auto;background:var(--pd-bg-card);border-left:1px solid var(--pd-border-color);border-right:1px solid var(--pd-border-color)}.pd-hero{margin:24px;padding:36px 28px}.pd-avatar{width:100px;height:100px}.pd-name{font-size:1.5rem}.pd-content{padding:0 24px 24px}.pd-info-row{display:flex;justify-content:space-between;align-items:center;padding:16px 20px}.pd-info-label{margin-bottom:0;flex-shrink:0;margin-right:16px}.pd-info-value{text-align:right}}@media(min-width:1024px){.pd-page{max-width:800px}.pd-header{padding:18px 32px}.pd-header-title{font-size:1.25rem}.pd-info-row{padding:18px 24px}}
