:root{--bg:#f0efeb;--bg2:#e8e6e1;--white:#fff;--ink:#18181b;--ink2:#52525b;--ink3:#a1a1aa;--border:#e2e1dd;--border2:#d4d3cf;--sage:#3d7a52;--sage-l:#eaf2ed;--sage-m:#b6d4c1;--amber:#c47a1e;--amber-l:#fef3e0;--rose:#dc2626;--rose-l:#fef2f2;--sky:#1d6fa4;--sky-l:#eff6ff;--purple:#7c3aed;--purple-l:#f5f3ff;--shadow:0 1px 2px rgba(0,0,0,.04),0 3px 8px rgba(0,0,0,.06),0 1px 3px rgba(0,0,0,.04);--shadow-md:0 2px 4px rgba(0,0,0,.04),0 6px 16px rgba(0,0,0,.08),0 2px 6px rgba(0,0,0,.05);--shadow-lg:0 4px 6px rgba(0,0,0,.04),0 12px 28px rgba(0,0,0,.1),0 4px 10px rgba(0,0,0,.06);--shadow-xl:0 8px 10px rgba(0,0,0,.04),0 20px 40px rgba(0,0,0,.12),0 8px 16px rgba(0,0,0,.07);--radius:16px;--radius-sm:10px;--radius-xs:6px;--font:"Inter",sans-serif;--mono:"JetBrains Mono",monospace;--sat:env(safe-area-inset-top);--sab:env(safe-area-inset-bottom);--sal:env(safe-area-inset-left);--sar:env(safe-area-inset-right);--mob-nav-h:60px}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{font-size:16px;height:100%}body,html{background:var(--bg)}body{min-height:100vh;min-height:-webkit-fill-available;overflow-x:hidden;line-height:1.4;letter-spacing:-.01em;overscroll-behavior-y:none;-webkit-overflow-scrolling:touch}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px}.act-btn:active,.cal-arrow:active,.card-act:active,.mob-nav-item:active,.nav-btn:active,.report-btn:active,.stat:active,button:active{transform:scale(.96)!important;transition:transform .08s ease!important}.btn-primary:active,.submit-btn:active{transform:scale(.97)!important}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--border) 25%,var(--bg2) 50%,var(--border) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm)}.skeleton-card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:18px;box-shadow:var(--shadow)}.skeleton-line{height:14px;margin-bottom:10px}.skeleton-line.w80{width:80%}.skeleton-line.w60{width:60%}.skeleton-line.w40{width:40%}.skeleton-title{height:20px;width:50%;margin-bottom:16px}.skeleton-stat{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}.skeleton-num{height:32px;width:60px;margin-bottom:8px}.skeleton-lbl{height:12px;width:80px}#login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:calc(20px + var(--sat)) 20px calc(20px + var(--sab));background:var(--bg);background-image:radial-gradient(circle at 15% 15%,rgba(61,122,82,.08) 0,transparent 50%),radial-gradient(circle at 85% 85%,rgba(29,111,164,.06) 0,transparent 50%)}.login-card{background:var(--white);border:1px solid var(--border);border-radius:24px;padding:36px 32px;width:100%;max-width:420px;box-shadow:var(--shadow-lg);animation:slideUp .4s cubic-bezier(.16,1,.3,1)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.login-brand{gap:12px;margin-bottom:32px}.login-brand,.login-brand-icon{display:flex;align-items:center}.login-brand-icon{width:48px;height:48px;background:var(--sage);border-radius:14px;justify-content:center;font-size:24px;box-shadow:0 4px 12px rgba(61,122,82,.3)}.login-brand-name{font-size:22px;font-weight:800;letter-spacing:-.5px}.login-brand-sub{font-size:10px;color:var(--ink3);letter-spacing:2px;font-weight:600;margin-top:1px}.login-title{font-size:18px;font-weight:700;margin-bottom:6px}.login-sub{font-size:14px;color:var(--ink2);margin-bottom:28px;line-height:1.5}.field{margin-bottom:16px}.field-label{font-size:12px;font-weight:700;color:var(--ink2);display:block;margin-bottom:7px;letter-spacing:.3px}.field-input{width:100%;padding:13px 15px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:15px;font-family:var(--font);background:var(--white);color:var(--ink);outline:none;transition:all .15s}.field-input:focus{border-color:var(--sage);box-shadow:0 0 0 3px rgba(61,122,82,.1)}.field-input::placeholder{color:var(--ink3)}.btn-primary{width:100%;padding:14px;border:none;border-radius:var(--radius-sm);background:var(--sage);color:#fff;font-size:15px;font-weight:700;font-family:var(--font);cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:8px}.btn-primary:hover{background:#2d6b42;box-shadow:0 4px 16px rgba(61,122,82,.3)}.btn-primary:disabled{background:var(--sage-m);cursor:not-allowed}.btn-ghost{width:100%;padding:12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:none;color:var(--ink2);font-size:14px;font-weight:600;font-family:var(--font);cursor:pointer;transition:all .15s;margin-top:10px}.btn-ghost:hover{border-color:var(--ink3);color:var(--ink)}.otp-row{display:flex;gap:8px;margin-bottom:16px;width:100%}.otp-box{flex:1 1;min-width:0;text-align:center;padding:14px 2px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:22px;font-weight:700;font-family:var(--mono);outline:none;transition:all .15s;background:var(--white);width:100%}.otp-box:focus{border-color:var(--sage);box-shadow:0 0 0 3px rgba(61,122,82,.1)}.login-step{display:none}.login-step.active{display:block}.alert-info{background:var(--sage-l);border:1px solid var(--sage-m);border-radius:var(--radius-sm);padding:12px 14px;font-size:13px;color:var(--sage);margin-bottom:18px;display:flex;gap:8px;align-items:flex-start}.alert-error{background:var(--rose-l);border:1px solid rgba(220,38,38,.2);border-radius:var(--radius-xs);padding:10px 13px;font-size:13px;color:var(--rose);margin-bottom:14px;display:none}.spinner{width:16px;height:16px;border:2px solid hsla(0,0%,100%,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}.resend{text-align:center;font-size:13px;color:var(--ink3);margin-top:14px}.resend span{color:var(--sage);cursor:pointer;font-weight:600}.demo-error{display:block}.demo-login-note{font-size:12px;color:var(--ink3);line-height:1.5;margin-top:14px;text-align:center}.admin-shell{display:flex;min-height:100vh;background:var(--bg)}.admin-sidebar{background:var(--ink);color:#fff;width:252px;flex-shrink:0;padding:26px 14px 18px;display:flex;flex-direction:column}.admin-nav{margin-top:38px;display:grid;grid-gap:5px;gap:5px}.admin-nav-btn{border:0;border-radius:10px;background:transparent;color:hsla(0,0%,100%,.52);font:600 14px var(--font);padding:12px;display:flex;gap:12px;align-items:center;text-align:left;cursor:pointer}.admin-nav-btn:hover{color:#fff;background:hsla(0,0%,100%,.06)}.admin-nav-btn.active{background:var(--sage);color:#fff}.admin-nav-btn span{width:18px;text-align:center;font-size:16px}.admin-user{border-top:1px solid hsla(0,0%,100%,.1);padding:16px 4px 0;margin-top:auto;display:flex;gap:10px;align-items:center}.admin-user strong{display:block;font-size:13px}.admin-user small{display:block;color:hsla(0,0%,100%,.45);font-size:11px;margin-top:2px}.admin-user button{margin-left:auto;background:none;border:0;color:hsla(0,0%,100%,.5);font-size:20px;cursor:pointer}.admin-main{min-width:0;flex:1 1}.admin-topbar{min-height:92px;background:hsla(0,0%,100%,.94);border-bottom:1px solid var(--border);padding:18px clamp(20px,4vw,54px);display:flex;align-items:center;justify-content:space-between;gap:18px}.admin-topbar p{color:var(--sage);font:600 10px var(--mono);letter-spacing:1.5px;margin-bottom:4px}.admin-topbar h1{font-size:25px;letter-spacing:-.7px}.admin-topbar .top-btn{white-space:nowrap}.admin-content{max-width:1060px;padding:34px clamp(20px,4vw,54px);margin:auto}.admin-notice{display:flex;gap:12px;align-items:flex-start;background:var(--sage-l);border:1px solid var(--sage-m);padding:15px 16px;border-radius:12px;margin-bottom:24px;color:var(--sage)}.admin-notice span{font-size:18px}.admin-notice strong{font-size:13px}.admin-notice p{font-size:13px;opacity:.85;margin-top:2px}.admin-stats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px;margin-bottom:20px}.admin-card,.admin-stats article{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.admin-stats article{padding:22px}.admin-stats small,.admin-stats span{display:block;color:var(--ink3);font-size:12px}.admin-stats strong{display:block;font:700 38px/1.2 var(--mono);margin:10px 0 4px}.admin-card-head{padding:20px 22px;border-bottom:1px solid var(--border)}.admin-card-head h2{font-size:16px}.admin-card-head p{font-size:12px;color:var(--ink3);margin-top:3px}.admin-empty{text-align:center;padding:54px 24px}.admin-empty>span{display:inline-flex;width:38px;height:38px;align-items:center;justify-content:center;border-radius:50%;background:var(--sage-l);color:var(--sage);font-size:18px;margin-bottom:12px}.admin-empty h3{font-size:15px}.admin-empty p{color:var(--ink2);font-size:13px;line-height:1.6;max-width:500px;margin:8px auto 18px}.admin-action{max-width:250px;margin:auto}@media(max-width:700px){.admin-shell{display:block}.admin-sidebar{width:100%;padding:16px 18px}.admin-nav{display:flex;gap:4px;margin:16px 0 0;overflow:auto}.admin-nav-btn{white-space:nowrap;padding:9px 10px;font-size:12px}.admin-user{display:none}.admin-topbar{min-height:80px}.admin-topbar h1{font-size:21px}.admin-topbar .top-btn{padding:9px 12px}.admin-stats{grid-template-columns:1fr}.admin-content{padding-top:22px}}.demo-shell{min-height:100vh;background:var(--bg)}.demo-header{background:var(--white);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:18px max(24px,calc((100vw - 960px)/2))}.demo-header .login-brand{margin:0}.demo-header .login-brand-icon{width:40px;height:40px;font-size:20px}.demo-signout{width:auto;margin:0;padding:9px 14px}.demo-content{max-width:960px;margin:0 auto;padding:72px 24px}.demo-eyebrow{color:var(--sage);font-family:var(--mono);font-weight:600;font-size:12px;letter-spacing:1.5px;margin-bottom:12px}.demo-content h1{font-size:clamp(30px,5vw,48px);line-height:1.08;letter-spacing:-1.5px;max-width:640px}.demo-copy{color:var(--ink2);font-size:16px;line-height:1.65;max-width:650px;margin:18px 0 32px}.demo-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px;margin-bottom:18px}.demo-empty,.demo-stat{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.demo-stat{padding:22px}.demo-stat small,.demo-stat span{display:block;color:var(--ink3);font-size:12px}.demo-stat strong{display:block;font:700 36px/1.2 var(--mono);margin:10px 0 4px;color:var(--ink)}.demo-empty{text-align:center;padding:46px 24px}.demo-empty>div{font-size:28px;color:var(--sage);margin-bottom:10px}.demo-empty h2{font-size:20px}.demo-empty p{color:var(--ink2);line-height:1.6;max-width:540px;margin:10px auto 20px}.demo-empty .btn-ghost{width:auto;padding:10px 16px;margin:0}@media(max-width:640px){.demo-header{padding:16px 20px}.demo-content{padding:48px 20px}.demo-grid{grid-template-columns:1fr}.demo-header .login-brand-sub{display:none}}#app{display:none;overflow-x:hidden;width:100%}.app-wrap{display:flex;min-height:100vh}.sidebar{width:256px;background:var(--ink);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:200;transition:transform .3s cubic-bezier(.16,1,.3,1);padding-left:var(--sal)}.sidebar-head{padding:calc(22px + var(--sat)) 18px 18px;border-bottom:1px solid hsla(0,0%,100%,.07)}.brand{gap:10px}.brand,.brand-icon{display:flex;align-items:center}.brand-icon{width:34px;height:34px;background:var(--sage);border-radius:9px;justify-content:center;font-size:17px}.brand-name{font-size:17px;font-weight:800;color:#fff;letter-spacing:-.3px}.brand-ver{font-size:9px;color:hsla(0,0%,100%,.2);letter-spacing:2px;margin-top:1px}.sidebar-nav{padding:12px 10px;flex:1 1;overflow-y:auto}.nav-section{font-size:9px;letter-spacing:2.5px;color:hsla(0,0%,100%,.18);padding:0 10px;margin:14px 0 4px;font-weight:700;text-transform:uppercase}.nav-btn{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;color:hsla(0,0%,100%,.4);cursor:pointer;font-size:15px;font-weight:500;transition:all .15s;margin-bottom:2px;border:none;background:none;width:100%;text-align:left;font-family:var(--font)}.nav-btn:hover{background:hsla(0,0%,100%,.07);color:hsla(0,0%,100%,.85)}.nav-btn.active{background:var(--sage);color:#fff;box-shadow:0 2px 8px rgba(61,122,82,.4)}.nav-ico{font-size:16px;width:22px;text-align:center;flex-shrink:0}.nav-badge{margin-left:auto;background:var(--amber);color:#fff;font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px;font-family:var(--mono)}.sidebar-foot{padding:14px 16px calc(14px + var(--sab));border-top:1px solid hsla(0,0%,100%,.07);gap:10px}.sidebar-foot,.user-av{display:flex;align-items:center}.user-av{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--sage),var(--sky));justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0}.user-name{font-size:14px;font-weight:600;color:#fff;line-height:1.4}.user-role{font-size:12px;color:hsla(0,0%,100%,.3);margin-top:1px}.logout-btn{margin-left:auto;background:none;border:none;color:hsla(0,0%,100%,.25);cursor:pointer;font-size:18px;padding:4px;border-radius:4px;transition:color .15s}.logout-btn:hover{color:var(--rose)}.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:190;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.sidebar-overlay.show{display:block}.main{margin-left:256px;flex:1 1;display:flex;flex-direction:column;min-height:100vh}.topbar{background:hsla(0,0%,100%,.95);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid rgba(0,0,0,.08);box-shadow:0 1px 0 rgba(0,0,0,.04),0 2px 8px rgba(0,0,0,.04);padding:calc(0px + var(--sat)) 24px 0;height:calc(58px + var(--sat));align-items:flex-end;padding-bottom:0;position:-webkit-sticky;position:sticky;top:0;z-index:100}.topbar,.topbar-inner{display:flex;justify-content:space-between}.topbar-inner{align-items:center;width:100%;height:58px}.topbar-left{display:flex;align-items:center;gap:14px}.menu-btn{display:none;background:none;border:none;font-size:22px;cursor:pointer;color:var(--ink2);padding:4px;border-radius:6px}.page-title{font-size:22px;font-weight:700;letter-spacing:-.3px}.page-date{font-size:12px;color:var(--ink3);font-family:var(--mono)}.topbar-right{gap:10px}.top-btn,.topbar-right{display:flex;align-items:center}.top-btn{gap:6px;background:var(--sage);color:#fff;border:none;border-radius:var(--radius-sm);padding:9px 18px;font-size:13px;font-weight:700;cursor:pointer;font-family:var(--font);transition:all .15s}.top-btn:hover{background:#2d6b42}.notif-btn{width:36px;height:36px;border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;position:relative}.notif-dot{position:absolute;top:7px;right:7px;width:6px;height:6px;border-radius:50%;background:var(--rose);border:1.5px solid var(--white)}.role-bar{background:var(--ink);color:hsla(0,0%,100%,.45);text-align:center;font-size:11px;padding:5px;font-family:var(--mono);letter-spacing:.5px}.content{padding:24px;flex:1 1;overscroll-behavior-y:none;-webkit-overflow-scrolling:touch;max-width:600px;width:100%;margin:0 auto;box-sizing:border-box}.view{display:none}.view.active{display:block;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px;margin-bottom:22px}.stat{background:var(--white);border:1px solid rgba(0,0,0,.06);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow);transition:all .2s;cursor:default}.stat:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-top{justify-content:space-between;margin-bottom:14px}.stat-ico,.stat-top{display:flex;align-items:center}.stat-ico{width:38px;height:38px;border-radius:10px;justify-content:center;font-size:17px}.stat-tag{font-size:11px;font-weight:700;padding:3px 8px;border-radius:20px}.stat-val{font-size:32px;font-weight:700;font-family:var(--mono);line-height:1;margin-bottom:4px}.stat-lbl{font-size:14px;color:var(--ink3);font-weight:500}.card{background:var(--white);border:1px solid rgba(0,0,0,.06);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:18px;overflow:hidden;transition:box-shadow .2s}.card:hover{box-shadow:var(--shadow-md)}.card-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 0}.card-title{font-size:16px;font-weight:700}.card-act{font-size:12px;color:var(--sage);font-weight:700;cursor:pointer;padding:5px 10px;border-radius:var(--radius-xs);transition:background .15s;border:none;background:none;font-family:var(--font)}.card-act:hover{background:var(--sage-l)}.card-body{padding:16px 20px 20px}.bal-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;padding:14px 20px 20px}.bal-item{background:var(--bg);border:1px solid rgba(0,0,0,.05);border-radius:var(--radius-sm);padding:16px;transition:all .2s;box-shadow:0 1px 2px rgba(0,0,0,.03)}.bal-item:hover{box-shadow:0 2px 8px rgba(0,0,0,.08);transform:translateY(-1px)}.bal-item:active{transform:scale(.98)}.bal-type{font-size:10px;font-weight:700;color:var(--ink3);letter-spacing:.8px;text-transform:uppercase;margin-bottom:8px}.bal-nums{display:flex;align-items:baseline;gap:4px;margin-bottom:10px}.bal-used{font-size:24px;font-weight:800}.bal-total,.bal-used{font-family:var(--mono)}.bal-total{font-size:13px;color:var(--ink3)}.bal-bar{height:5px;background:var(--border);border-radius:3px;overflow:hidden}.bal-fill{height:100%;border-radius:3px;transition:width .8s cubic-bezier(.4,0,.2,1)}.bal-rem{font-size:12px;color:var(--ink3);margin-top:5px}.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse}th{background:var(--bg);padding:10px 16px;text-align:left;font-size:11px;font-weight:700;color:var(--ink3);letter-spacing:.8px;text-transform:uppercase;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:13px 16px;border-bottom:1px solid hsla(240,6%,90%,.5);font-size:14px}tr:last-child td{border-bottom:none}tr:hover td{background:hsla(45,17%,95%,.6)}.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:3px 10px;border-radius:20px;white-space:nowrap}.badge-active,.badge-approved{background:var(--sage-l);color:var(--sage)}.badge-pending{background:var(--amber-l);color:var(--amber)}.badge-rejected,.badge-resigned{background:var(--rose-l);color:var(--rose)}.badge-info{background:var(--sky-l);color:var(--sky)}.badge-purple{background:var(--purple-l);color:var(--purple)}.badge-cancelled,.badge-grey{background:var(--bg2);color:var(--ink3)}.badge-cancellation_pending{background:var(--purple-l);color:var(--purple)}.pend-list{padding:16px 16px 4px}.pend-item{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid hsla(240,6%,90%,.5);transition:background .15s}.pend-item:hover{background:var(--bg)}.pend-item:active{background:var(--bg2)}.pend-item:last-child{border-bottom:none}.pend-av{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;flex-shrink:0}.pend-info{flex:1 1;min-width:0}.pend-name{font-size:14px;font-weight:600;margin-bottom:2px}.pend-det{font-size:12px;color:var(--ink3)}.pend-days{font-family:var(--mono);font-size:16px;font-weight:700;flex-shrink:0}.pend-acts{display:flex;gap:6px;flex-shrink:0}.act-btn{padding:7px 14px;border-radius:8px;font-size:12px;font-weight:700;border:none;cursor:pointer;font-family:var(--font);transition:all .15s}.btn-ok{background:var(--sage-l);color:var(--sage)}.btn-ok:hover{background:var(--sage);color:#fff}.btn-no{background:var(--rose-l);color:var(--rose)}.btn-no:hover{background:var(--rose);color:#fff}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px}.form-row{margin-bottom:15px}.form-lbl{font-size:12px;font-weight:600;color:var(--ink2);display:block;margin-bottom:6px;letter-spacing:.02em;text-transform:uppercase}.form-input{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:14px;font-family:var(--font);background:var(--white);color:var(--ink);outline:none;transition:all .15s;box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}.form-input:focus{border-color:var(--sage);box-shadow:0 0 0 3px rgba(61,122,82,.1),inset 0 1px 2px rgba(0,0,0,.04)}.form-select{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:14px;font-family:var(--font);background:var(--white);color:var(--ink);outline:none;cursor:pointer;box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}.form-select:focus{border-color:var(--sage);box-shadow:0 0 0 3px rgba(61,122,82,.1)}.form-textarea{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:14px;font-family:var(--font);resize:vertical;min-height:80px;outline:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}.form-textarea:focus{border-color:var(--sage);box-shadow:0 0 0 3px rgba(61,122,82,.1)}.date-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.days-box{background:var(--sage-l);border:1px solid var(--sage-m);border-radius:var(--radius-sm);padding:12px 15px;font-size:14px;font-weight:600;color:var(--sage);display:none;align-items:center;gap:8px;margin:4px 0 14px}.warn-box{background:var(--rose-l);border:1px solid rgba(220,38,38,.2);border-radius:var(--radius-sm);padding:11px 14px;margin-bottom:14px;font-size:13px;color:var(--rose);display:none}.submit-btn{width:100%;padding:14px;border:none;border-radius:var(--radius-sm);background:var(--sage);color:#fff;font-size:15px;font-weight:700;font-family:var(--font);cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 2px 4px rgba(61,122,82,.2),0 4px 12px rgba(61,122,82,.15)}.submit-btn:hover{background:#2d6b42;box-shadow:0 4px 8px rgba(61,122,82,.25),0 8px 20px rgba(61,122,82,.2);transform:translateY(-1px)}.submit-btn:disabled{background:var(--sage-m);cursor:not-allowed;box-shadow:none;transform:none}.cal-wrap{padding:16px 20px 20px}.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.cal-month{font-size:16px;font-weight:700}.cal-arrow{background:none;border:1px solid var(--border);border-radius:var(--radius-xs);width:32px;height:32px;cursor:pointer;font-size:14px;transition:all .15s}.cal-arrow:hover{background:var(--bg2)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:3px;gap:3px}.cal-dow{text-align:center;font-size:10px;font-weight:700;color:var(--ink3);padding:6px 0;letter-spacing:.5px}.cal-day{text-align:center;padding:6px 3px;border-radius:6px;font-size:13px;font-weight:500;cursor:default;position:relative;min-height:36px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:2px}.cal-day.other-month{color:var(--ink3)}.cal-day.today{background:var(--sage-l);font-weight:700;color:var(--sage)}.cal-day.holiday{background:var(--rose-l)}.cal-day.has-leave{background:var(--amber-l)}.cal-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}.cal-legend{display:flex;gap:16px;margin-top:12px;flex-wrap:wrap}.cal-leg-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink2)}.cal-leg-dot{width:10px;height:10px;border-radius:3px}.chart-wrap{padding:16px 20px 20px}.chart-bars{display:flex;align-items:flex-end;gap:8px;height:120px;margin-bottom:8px}.chart-bar-wrap{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:4px}.chart-bar{width:100%;border-radius:5px 5px 0 0;transition:height .6s cubic-bezier(.4,0,.2,1);min-height:4px}.chart-lbl{font-size:10px;color:var(--ink3);text-align:center;font-weight:600}.chart-val{font-size:10px;font-weight:700;font-family:var(--mono)}.toggle{width:42px;height:24px;border-radius:12px;cursor:pointer;position:relative;transition:background .2s;flex-shrink:0;border:none}.toggle.on{background:var(--sage)}.toggle.off{background:var(--border2)}.toggle:after{content:"";position:absolute;top:4px;width:16px;height:16px;border-radius:50%;background:#fff;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.15)}.toggle.on:after{left:22px}.toggle.off:after{left:4px}.set-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid hsla(240,6%,90%,.5)}.set-row:last-child{border-bottom:none}.set-lbl{font-size:14px;font-weight:600}.set-desc{font-size:12px;color:var(--ink3);margin-top:2px}.loading-wrap{position:fixed;inset:0;background:hsla(45,17%,95%,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:999;gap:16px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.loading-ring{width:44px;height:44px;border:3px solid var(--border);border-top-color:var(--sage);border-radius:50%;animation:spin .8s linear infinite}.loading-txt{font-size:14px;font-weight:600;color:var(--ink3)}.empty{text-align:center;padding:56px 24px;color:var(--ink3)}.empty-ico{font-size:44px;margin-bottom:14px}.empty-ttl{font-size:15px;font-weight:700;color:var(--ink2);margin-bottom:4px}.empty-sub,.toast{font-size:13px}.toast{position:fixed;bottom:calc(var(--mob-nav-h) + 16px + var(--sab));left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:12px 22px;border-radius:12px;font-weight:600;box-shadow:var(--shadow-lg);opacity:0;transition:all .3s;z-index:9999;white-space:nowrap;pointer-events:none}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.toast.ok{background:var(--sage)}.toast.err{background:var(--rose)}.mob-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:hsla(0,0%,100%,.92);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid rgba(0,0,0,.08);z-index:150;padding-bottom:var(--sab);box-shadow:0 -4px 6px rgba(0,0,0,.04),0 -8px 24px rgba(0,0,0,.06)}.mob-nav-items{display:flex;height:var(--mob-nav-h)}.mob-nav-item{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 4px;font-size:11px;font-weight:600;color:var(--ink3);cursor:pointer;transition:all .15s;position:relative}.mob-nav-item.active{color:var(--sage)}.mob-nav-item.active .mob-nav-ico{transform:scale(1.1)}.mob-nav-ico{font-size:22px;transition:transform .15s}.mob-nav-badge{position:absolute;top:6px;right:calc(50% - 16px);background:var(--rose);color:#fff;font-size:9px;font-weight:700;padding:1px 5px;border-radius:10px;min-width:16px;text-align:center;border:1.5px solid var(--white)}.modal-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:500;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.modal-bg.show{display:flex}.modal{background:var(--white);border-radius:20px;padding:24px;width:100%;max-width:560px;box-shadow:0 4px 6px rgba(0,0,0,.04),0 20px 50px rgba(0,0,0,.2),0 8px 20px rgba(0,0,0,.12);border:1px solid hsla(0,0%,100%,.8);animation:slideUp .35s cubic-bezier(.16,1,.3,1);max-height:88vh;overflow-y:auto}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@media(min-width:769px){.modal-bg{align-items:center}.modal{border-radius:20px;padding:32px;margin:20px;max-width:540px;box-shadow:0 0 0 1px rgba(0,0,0,.06),0 20px 50px rgba(0,0,0,.2),0 8px 20px rgba(0,0,0,.1);animation:modalFadeUp .35s cubic-bezier(.16,1,.3,1)}}@keyframes modalFadeUp{0%{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-title{font-size:17px;font-weight:700;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between}.modal-handle{width:36px;height:4px;background:var(--border2);border-radius:2px;margin:0 auto 20px}.modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--ink3)}.emp-av{width:34px;height:34px;border-radius:50%;justify-content:center;font-size:12px;color:#fff;flex-shrink:0}.emp-av,.report-btn{display:flex;align-items:center;font-weight:700}.report-btn{gap:8px;padding:10px 18px;border-radius:var(--radius-sm);font-size:13px;border:none;cursor:pointer;font-family:var(--font);transition:all .15s}.report-btn.csv{background:var(--sage-l);color:var(--sage)}.report-btn.csv:hover{background:var(--sage);color:#fff}.report-btn.pdf{background:var(--rose-l);color:var(--rose)}.report-btn.pdf:hover{background:var(--rose);color:#fff}.report-btn.wa{background:#25d366;color:#fff}.report-btn.wa:hover{background:#128c4a}.duration-btns{display:flex;gap:8px;margin-bottom:14px}.dur-btn{flex:1 1;padding:10px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--white);color:var(--ink2);font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font);transition:all .15s;text-align:center}.dur-btn.active{border-color:var(--sage);background:var(--sage-l);color:var(--sage)}#fab-apply{display:none;position:fixed;bottom:calc(var(--mob-nav-h) + 16px + var(--sab));right:20px;width:56px;height:56px;border-radius:50%;background:var(--sage);border:none;box-shadow:0 4px 20px rgba(61,122,82,.5),0 2px 8px rgba(0,0,0,.15);font-size:26px;cursor:pointer;z-index:140;align-items:center;justify-content:center;color:#fff;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .2s}#fab-apply:hover{box-shadow:0 6px 28px rgba(61,122,82,.6),0 2px 8px rgba(0,0,0,.2)}#fab-apply:active{transform:scale(.88)!important;transition:transform .08s ease!important}@media(max-width:768px){.sidebar{transform:translateX(-256px)}.sidebar.open{transform:translateX(0)}.main{margin-left:0;overflow-x:hidden}.menu-btn,.mob-nav{display:block}.content{padding:12px 14px;padding-bottom:calc(var(--mob-nav-h) + var(--sab) + 16px);max-width:100%;overflow-x:hidden}.stats-row{grid-template-columns:1fr 1fr;gap:10px}.stat-val{font-size:26px}.bal-grid{gap:10px}.bal-grid,.date-row,.grid-2,.grid-3{grid-template-columns:1fr}.topbar{padding-left:14px;padding-right:14px}.pend-acts{flex-direction:column}.page-date{font-size:11px}.page-title{font-size:18px}.role-bar{display:none}#apply-btn{display:none!important}#fab-apply{display:flex}}@media(min-width:769px){.mob-nav,.sidebar-overlay{display:none!important}.toast{bottom:32px}#fab-apply{display:none!important}}body{font-family:var(--font);padding:0;color:var(--ink);font-size:14px}