:root{font-family:Kanit,Noto Sans Thai,sans-serif;color:#42385a;background:#fff8f2;font-synthesis:none;--ink: #42385a;--muted: #847b93;--paper: #fffdfa;--lavender: #e8ddff;--lilac: #7867aa;--peach: #ffb798;--peach-dark: #e97f62;--mint: #99d8c2;--line: #eee3dc;--shadow: 0 16px 40px rgba(119, 88, 88, .09)}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(circle at 5% 2%,#f9e4d9 0,transparent 26%),radial-gradient(circle at 93% 13%,#eae3ff 0,transparent 28%),#fff8f2}button,input,select{font:inherit}.shell{display:flex;min-height:100vh}.sidebar{width:274px;background:#fffdfad1;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-right:1px solid rgba(229,215,206,.9);padding:26px 16px 20px;display:flex;flex-direction:column;gap:18px;position:relative;z-index:2}.brand{display:flex;gap:11px;align-items:center;font-family:Nunito Sans,sans-serif;font-size:19px;font-weight:800;letter-spacing:-.5px;color:#55426f;padding:4px 8px}.brand-mark{background:linear-gradient(135deg,#a7dfc6,#66c8b0);border-radius:15px;padding:9px;color:#493b65;display:grid;box-shadow:0 8px 18px #80cbb45c}.brand small{display:block;font-family:Kanit;font-size:11px;opacity:.72;font-weight:400;letter-spacing:0}.side-caption{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#a096a4;padding:12px 13px 2px}.side-nav{display:grid;gap:7px}.nav{border:0;background:transparent;color:#756d83;text-align:left;padding:12px 13px;border-radius:14px;cursor:pointer;display:flex;gap:11px;align-items:center;transition:.2s ease;font-weight:500}.nav:hover{background:#f8eee8;color:#5c477d;transform:translate(2px)}.nav.active{background:linear-gradient(100deg,#e9ddff,#f3e6ef);color:#594176;box-shadow:0 7px 17px #b9a3cb28}.nav.active svg{color:#de8065}.user-card{margin-top:auto;border-top:1px solid #eee4df;padding:17px 8px 0;color:#968c9b;font-size:13px}.user-card b{display:block;color:#544366;margin-bottom:2px}.user-card .nav{margin-top:9px;padding-left:4px}.content{width:100%;max-width:1700px;margin:auto;padding:34px 42px 42px;position:relative;overflow:auto;isolation:isolate}.content-orb{position:absolute;border-radius:50%;filter:blur(2px);z-index:-1;opacity:.5;pointer-events:none}.orb-one{width:270px;height:270px;background:#f9dacd;right:-100px;top:160px}.orb-two{width:180px;height:180px;background:#ddd2ff;left:18%;bottom:20px}.view-stage{position:relative;min-height:460px;animation:page-in .22s ease both}@keyframes page-in{0%{opacity:.25;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}.topbar{display:flex;justify-content:space-between;align-items:center;margin:20px 0 25px}.topbar h1{font-size:29px;line-height:1.2;margin:0;color:#4c3c64;letter-spacing:-.7px}.topbar p{margin:5px 0 0;color:#908697;font-size:13px}.date-chip,.status-pill{border:1px solid var(--line);border-radius:15px;padding:8px 12px;color:#766f81;background:#fffdfb;font-size:13px}.grid-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:14px}.kpi,.panel,.check-card{background:#fffdfae6;border:1px solid rgba(235,224,217,.9);border-radius:23px;box-shadow:var(--shadow)}.kpi{padding:18px 19px;min-height:128px;position:relative;overflow:hidden}.kpi:before{content:"";width:42px;height:42px;border-radius:15px;position:absolute;right:-5px;top:-6px;background:var(--accent, #eadfff);opacity:.65}.kpi:nth-child(2):before{background:#c9eadf}.kpi:nth-child(3):before{background:#ffe0b8}.kpi:nth-child(4):before{background:#ffd6d2}.kpi:nth-child(5):before{background:#cadcf8}.kpi label{font-size:13px;color:#847a8d;display:block}.kpi strong{display:block;font:800 30px Nunito Sans;letter-spacing:-1px;color:#544167;margin-top:8px}.kpi small{font-size:12px;color:#918699}.layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(270px,.8fr);gap:18px;margin-top:19px}.panel-header{padding:16px 19px;border-bottom:1px solid #f1e8e3;display:flex;align-items:center;justify-content:space-between}.panel-header h2{font-size:16px;margin:0;color:#58446d}.panel-body{padding:8px 18px 17px}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{color:#9a8f9e;text-align:left;padding:12px 8px;font-weight:400}.table td{padding:12px 8px;border-top:1px solid #f3ece8;color:#5d5368}.employee{display:flex;align-items:center;gap:8px}.avatar{background:linear-gradient(135deg,#e9ddff,#f5d9ce);color:#6a5185;width:32px;height:32px;border-radius:13px;display:grid;place-items:center;font-weight:600}.tag{display:inline-block;padding:3px 8px;border-radius:20px;font-size:11px}.tag.green{background:#e1f5ea;color:#398765}.tag.yellow{background:#fff3d9;color:#aa7a24}.tag.red{background:#ffeaeb;color:#c46470}.tag.blue{background:#e8edff;color:#5e6eb1}.map{height:181px;background:linear-gradient(135deg,#f8eee8,#dfeadf);display:grid;place-items:center;color:#e1846d;position:relative;font-size:42px}.map:after{content:"";width:150px;height:150px;border-radius:50%;border:2px solid #ab93d488;position:absolute}.map-info{padding:15px;font-size:13px;color:#847b8a}.map-info b{color:#5a4b68}.check-wrap{max-width:850px;margin:5vh auto}.check-card{padding:31px;text-align:center;background:linear-gradient(145deg,#fffdfb,#fff4ec)}.check-card h2{margin:8px 0;color:#59446e}.clock{font:800 44px Nunito Sans;letter-spacing:-2px;color:#6c5791;margin:8px}.gps{display:flex;align-items:center;justify-content:center;gap:8px;color:#7d7288;background:#f7eee8;padding:11px;border-radius:14px;margin:18px 0;font-size:13px}.action{border:0;border-radius:15px;padding:13px 22px;background:linear-gradient(100deg,#7764a9,#997dbb);color:#fff;font-weight:600;cursor:pointer;min-width:170px;box-shadow:0 8px 16px #7864a630;transition:.2s}.action:hover{transform:translateY(-1px);filter:saturate(1.08)}.action.out{background:linear-gradient(100deg,#e57d67,#f0a080)}.action:disabled{opacity:.55;cursor:not-allowed;transform:none}.login{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 10% 10%,#f9dcd0,transparent 34%),radial-gradient(circle at 88% 78%,#ded3ff,transparent 33%),#fff8f2}.login-box{width:min(420px,92vw);background:#fffdfb;border:1px solid #eee1da;border-radius:29px;padding:36px;box-shadow:0 24px 60px #916a6024}.login-box h1{font-size:27px;color:#57446e;margin:15px 0 3px}.login-box p{color:#918596}.field{display:grid;gap:6px;text-align:left;margin-top:16px;font-size:13px;color:#786d7f}.field input,.field select,.toolbar input,.toolbar select,.password-reset input{border:1px solid #e9ddd8;border-radius:12px;padding:11px 12px;outline-color:#a187c5;background:#fffdfa;color:#53485f}.error{font-size:13px;color:#c46370;margin-top:12px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;padding:15px 18px}.toolbar input,.toolbar select{font-size:13px}.empty{padding:40px;text-align:center;color:#94889a}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#59426855;display:grid;place-items:center;padding:15px;z-index:5}.modal-box{width:min(510px,100%);padding:25px;background:#fffdfa;border-radius:22px}.modal-box h2{margin:0;color:#57446e;font-size:19px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px}.secondary{border:1px solid #e5d9d2;background:#fffdfa;color:#705b82;border-radius:12px;padding:9px 13px;cursor:pointer}.secondary:hover{background:#faf0eb}.notice{font-size:13px;padding:11px 12px;border-radius:12px;background:#fff1ce;color:#a16d18;margin:14px 0}@media(max-width:980px){.sidebar{width:76px;padding:18px 10px}.brand span,.nav span,.user-card,.side-caption{display:none}.brand,.nav{justify-content:center}.content{padding:28px 25px}.grid-kpi{grid-template-columns:repeat(3,1fr)}}@media(max-width:620px){.shell{display:block}.sidebar{position:fixed;z-index:6;bottom:0;left:0;width:100%;height:67px;padding:8px;background:#fffdfaf5;border-top:1px solid #e8ded8;flex-direction:row;border-right:0}.brand{display:none}.side-nav{display:flex;width:100%;justify-content:space-around}.nav{padding:10px;font-size:0}.nav svg{width:21px}.nav.active{background:#eee1ff}.content{padding:62px 14px 88px;overflow:visible}.topbar{align-items:flex-start;margin:8px 0 20px}.topbar h1{font-size:23px}.date-chip{font-size:11px}.grid-kpi{grid-template-columns:repeat(2,1fr);gap:10px}.kpi{min-height:108px;padding:13px}.kpi strong{font-size:25px}.layout{grid-template-columns:1fr}.hide-mobile{display:none}.panel-body{overflow:auto}.clock{font-size:35px}.view-stage{min-height:400px}}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:8px 0 18px}.summary-grid div{background:#fff7f1;border:1px solid #f0e4dd;border-radius:16px;padding:14px}.summary-grid label{display:block;font-size:12px;color:#8d8291}.summary-grid b{font:800 22px Nunito Sans;color:#6a5685}.summary-grid .orange{color:#dd8268}.chart-title{font-size:14px;color:#65556e;margin:4px 0 12px}.bar-chart{height:165px;display:flex;align-items:flex-end;gap:9px;border-bottom:1px solid #eadfda;padding:0 7px}.bar-unit{height:100%;flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;color:#908493}.bar{width:min(28px,100%);border-radius:9px 9px 0 0;background:linear-gradient(#c8b1f5,#8069af)}.bar-unit small{font-size:11px}.calendar-row{display:flex;gap:12px;padding:12px 4px;border-bottom:1px solid #f1e9e4;color:#716779}.calendar-row b{min-width:62px;color:#78609b}.employee-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;padding:14px 0}.employee-card{background:#fffdfaeb;border:1px solid #eee2dc;border-radius:20px;padding:17px;display:grid;gap:7px;box-shadow:0 9px 23px #8a615910}.employee-card .avatar{margin-bottom:4px}.employee-card small{font-size:11px;color:#928796;overflow-wrap:anywhere}.employee-card span:not(.tag){font-size:12px;color:#72617e}.employee-card select{border:1px solid #e9ddd8;border-radius:10px;padding:8px;background:#fffdfa;color:#5f526c}.password-reset{display:grid;grid-template-columns:1fr auto;gap:6px;margin-top:7px}.password-reset .secondary{padding:8px;font-size:11px}@media(max-width:620px){.summary-grid{grid-template-columns:repeat(2,1fr)}}button{font:inherit}textarea{font:inherit;border:1px solid #e9ddd8;border-radius:12px;padding:11px 12px;background:#fffdfa;color:#53485f;outline-color:#a187c5;resize:vertical}a.secondary{text-decoration:none;display:inline-flex;align-items:center;gap:6px}.secondary,.action{display:inline-flex;align-items:center;justify-content:center;gap:6px}.secondary.danger{color:#c05a67;border-color:#f0d3d6}.secondary:disabled{opacity:.5;cursor:not-allowed}.action.full{width:100%;margin-top:18px}.action.big{min-width:220px;padding:16px 28px;font-size:18px;margin-top:8px}.icon-btn{border:0;background:transparent;color:#7d6f8c;border-radius:9px;padding:5px;cursor:pointer;display:inline-grid;place-items:center}.icon-btn:hover{background:#f5ebe6}.icon-btn.danger{color:#c05a67}.link-btn{border:0;background:none;color:#7764a9;cursor:pointer;padding:4px;display:inline-flex;align-items:center;gap:4px;font-size:13px}.link-btn.center{display:block;margin:12px auto 0}.btn-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.select{border:1px solid #e6dbd5;border-radius:12px;padding:9px 11px;background:#fffdfa;color:#5f526c;font-size:13px}.muted{color:#978c9d}.small{font-size:12px}.block{display:block}.nowrap{white-space:nowrap}.wrap{max-width:280px;overflow-wrap:anywhere}.num{text-align:right!important;font-variant-numeric:tabular-nums}.mt{margin-top:18px}.mt-s{margin-top:10px}.stack{display:grid;gap:18px;align-content:start}.footnote{font-size:12px;color:#9c91a2;margin:12px 4px}.warn-text{color:#b27a1f;font-weight:600}.bad-text{color:#c05a67;font-weight:600}.divider{border-top:1px solid #f0e6e0;margin:20px 0 14px}h3.sub{font-size:14px;color:#6a5685;margin:0 0 8px}.top-actions{position:absolute;top:22px;right:32px;z-index:5;display:flex;align-items:center;gap:8px}.install-app{border:0;border-radius:11px;background:#7764a9;color:#fff;padding:8px 12px;font-size:12px;font-weight:600;cursor:pointer;box-shadow:0 6px 14px #7764a930}.lang-toggle{display:flex;border:1px solid #e6dbd7;border-radius:11px;background:#fffdfa;padding:2px}.lang-toggle button{border:0;background:transparent;color:#82778b;border-radius:8px;padding:6px 9px;font-size:12px;cursor:pointer}.lang-toggle button.active{background:#7764a9;color:#fff}.lang-toggle.inline{width:max-content}.notification-wrap{position:relative}.notification-bell{position:relative;width:38px;height:38px;border-radius:12px;border:1px solid #e6dbd7;background:#fffdfa;color:#6a5682;cursor:pointer;display:grid;place-items:center}.notification-bell span{position:absolute;right:-6px;top:-7px;background:#e8414d;color:#fff;border-radius:10px;min-width:18px;height:18px;padding:0 4px;font-size:10px;display:grid;place-items:center}.notification-menu{position:absolute;right:0;top:46px;width:min(360px,88vw);max-height:70vh;overflow:auto;background:#fffdfa;border:1px solid #e8ded7;border-radius:16px;padding:10px;box-shadow:0 18px 40px #6a4c5a26}.notification-head{display:flex;justify-content:space-between;align-items:center;padding:4px 6px 8px}.notification-item{display:block;width:100%;text-align:left;border:0;background:transparent;border-bottom:1px solid #f1e8e3;padding:10px 8px;cursor:pointer;border-radius:10px}.notification-item:hover{background:#faf3ef}.notification-item.unread{background:#f4efff}.notification-item strong,.notification-item small,.notification-item em{display:block;font-size:13px}.notification-item small{color:#857a8e;margin-top:2px}.notification-item em{font-style:normal;font-size:11px;color:#aaa0ae;margin-top:3px}.mobile-only{display:none}.content{padding-top:76px}.topbar{margin-top:0;flex-wrap:wrap;gap:12px}.user-card span{display:block}.notice{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.notice.ok{background:#e3f5ea;color:#2f7a55}.notice.error{background:#ffeaec;color:#b04d5c}.tag{white-space:nowrap;font-weight:500}.tag.gray{background:#f1edf0;color:#7d7385}.tag.purple{background:#efe8ff;color:#6d53a8}.table-wrap{overflow-x:auto;padding:0 12px 10px}.table td b{color:#56456a;font-weight:500}.table td small{font-size:11px}.table tr.inactive td{opacity:.5}.table td input:not([type=checkbox]){border:1px solid #e9ddd8;border-radius:9px;padding:7px 9px;width:100%;min-width:110px;background:#fffdfa}.table input.mini,input.mini{width:90px;min-width:70px}.table td.actions{text-align:right;white-space:nowrap}.table td.actions>*+*{margin-left:6px}.employee small{display:block;font-size:11px;color:#9a8f9e}.employee b{display:block}.kpi-link{text-align:left;cursor:pointer;font:inherit}.kpi-link:hover{border-color:#cbb9ea}.tabs{display:flex;gap:4px;flex-wrap:wrap;background:#f6eee9;padding:4px;border-radius:13px;width:max-content;max-width:100%}.tabs button{border:0;background:transparent;padding:7px 12px;border-radius:10px;color:#7b6f86;cursor:pointer;font-size:13px;display:inline-flex;gap:6px;align-items:center}.tabs button.active{background:#fffdfa;color:#5c4679;box-shadow:0 3px 9px #8a6a6a1c;font-weight:500}.tabs .count{background:#e9ddff;color:#6a5190;border-radius:9px;padding:0 7px;font-size:11px}.panel-header{flex-wrap:wrap;gap:10px}.panel-header h2:empty{display:none}.field>span{display:block}.field .hint{color:#a095a7;font-size:11px}.field input:disabled{background:#f5f0ee;color:#9b91a1}.form-grid{display:grid;gap:0 14px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.check{display:flex;align-items:center;gap:8px;font-size:13px;color:#6f647a;margin-top:12px;cursor:pointer}.calc{display:flex;justify-content:space-between;gap:10px;margin-top:14px;padding:11px 13px;background:#f7f0fb;border-radius:12px;font-size:13px;color:#6d5f7a}.calc .bad{color:#c05a67}.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.filters .check{margin:0}.search{display:flex;align-items:center;gap:6px;border:1px solid #e6dbd5;border-radius:12px;padding:0 10px;background:#fffdfa;color:#9a8fa2}.search input{border:0;outline:0;padding:9px 0;background:transparent;min-width:200px}.save-bar{position:sticky;bottom:12px;display:flex;justify-content:flex-end;margin-top:16px}.layout.reverse{grid-template-columns:minmax(280px,.8fr) minmax(0,1.8fr)}.layout.even{grid-template-columns:1fr 1fr}.password-reset{grid-template-columns:1fr auto auto}.modal{z-index:20}.modal-box{max-height:92vh;overflow:auto;box-shadow:0 30px 70px #4a33552e}.modal-box.wide{width:min(760px,100%)}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.review-info{background:#faf4f0;border-radius:14px;padding:13px 14px;margin:12px 0 4px;font-size:14px;color:#5d5068}.review-info p{margin:6px 0 0}.steps{padding-left:20px;color:#6d6178;font-size:14px;line-height:1.7}.preview{max-height:320px;overflow:auto;margin-top:12px;border:1px solid #f0e6e0;border-radius:12px}.login-top{display:flex;justify-content:space-between;align-items:center}.login-box .brand-mark{width:max-content}.mode-row{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.gps.ok{background:#e6f5ec;color:#3a7e5c}.gps.warn{background:#fff1dc;color:#a36b1d}.summary-grid.three{grid-template-columns:repeat(3,1fr)}.summary-grid div{display:grid;gap:4px;justify-items:center}.done{color:#3a7e5c;font-weight:600;font-size:17px}.empty.small{padding:18px;font-size:13px}.err-detail{display:block;margin:12px auto;max-width:600px;background:#f7eeee;padding:10px;border-radius:10px;font-size:12px;color:#9a4b56;overflow-wrap:anywhere}@media(max-width:980px){.layout.reverse,.layout.even{grid-template-columns:1fr}.user-card{display:block}.user-card b,.user-card>span{display:none}}@media(max-width:620px){.content{padding:64px 14px 90px}.top-actions{top:12px;right:12px}.install-app{display:none}.mobile-only{display:inline-grid}.side-nav{overflow-x:auto;justify-content:flex-start;gap:2px;scrollbar-width:none}.side-nav .nav{flex:0 0 auto}.user-card{display:none}.form-grid.two,.form-grid.three{grid-template-columns:1fr}.summary-grid.three{grid-template-columns:repeat(3,1fr)}.search input{min-width:140px}.table-wrap{padding:0 4px 8px}.table{font-size:12px}.check-wrap{margin:0 auto}.action.big{width:100%}}.content{margin:0 auto}@media(max-width:620px){.tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.tabs button{flex:0 0 auto}.panel-header>.btn-row{max-width:100%}.panel{min-width:0;max-width:100%}}.panel-header>.btn-row{min-width:0}@media(max-width:620px){.content{overflow-x:clip}.orb-one{right:-60px}}.sidebar{overflow-y:auto}.side-nav{gap:2px}.nav-group{display:grid;gap:3px;margin-bottom:6px}.nav-group .side-caption{padding:10px 13px 3px}.nav{position:relative;padding:10px 13px}.nav-badge{margin-left:auto;font-style:normal;background:#e8414d;color:#fff;border-radius:10px;min-width:20px;height:20px;padding:0 6px;font-size:11px;display:grid;place-items:center}.bottom-nav{display:none}.more-menu{display:grid;gap:8px}.more-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}.more-menu .nav{font-size:14px}.more-menu .nav span{display:inline!important}.center{text-align:center}.file-btn{cursor:pointer}.filter-input{border:1px solid #e9ddd8;border-radius:10px 10px 0 0;padding:8px 11px;background:#fffdfa;font-size:13px}.filter-input+select{border-radius:0 0 12px 12px;border-top:0}.week-nav{display:flex;align-items:center;gap:6px;background:#fffdfa;border:1px solid #e6dbd5;border-radius:12px;padding:3px 8px;font-size:13px;color:#5d4f6b}.req-list{display:grid;gap:10px;padding:14px 16px 18px}.req-card{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;border:1px solid #f0e6e0;border-radius:16px;padding:13px 14px;background:#fffdfa}.req-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:3px}.req-main{font-size:13px;color:#5d5368;min-width:0}.req-side{display:grid;gap:6px;justify-items:end;text-align:right}.tag.kind-leave{background:#e8edff;color:#5e6eb1}.tag.kind-wfh{background:#efe8ff;color:#6d53a8}.tag.kind-ot{background:#fff1dc;color:#a36b1d}.tag.kind-correction{background:#e3f5ea;color:#2f7a55}.ts-days{display:grid;gap:10px;padding:12px 16px 18px}.ts-day{border:1px solid #f0e6e0;border-radius:14px;padding:10px 12px;background:#fffdfa}.ts-day.today{border-color:#cbb9ea;box-shadow:0 0 0 3px #efe8ff}.ts-day-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px;color:#5c4679}.ts-entry{display:grid;grid-template-columns:48px 1fr auto;gap:10px;align-items:center;padding:7px 0;border-top:1px dashed #f0e6e0;font-size:13px}.ts-hours{font:800 18px Nunito Sans,sans-serif;color:#6c5791;text-align:center;background:#f4efff;border-radius:10px;padding:4px 0}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:12px}.cal-head{text-align:center;font-size:12px;color:#9a8f9e;padding:4px 0}.cal-cell{position:relative;min-height:92px;border:1px solid #f0e6e0;border-radius:12px;background:#fffdfa;padding:5px;display:flex;flex-direction:column;gap:3px;align-items:stretch;text-align:left;cursor:pointer;font:inherit;overflow:hidden}.cal-cell.out{opacity:.45}.cal-cell.weekend{background:#faf6f3}.cal-cell.today{border-color:#b7a3dd}.cal-cell.sel{box-shadow:0 0 0 2px #9c85c9 inset}.cal-num{font-size:12px;color:#7d7087;font-weight:600}.cal-count{display:none}.chip{display:block;font-size:11px;line-height:1.35;border-radius:6px;padding:1px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#eee;color:#555}.chip.leave{background:#e8edff;color:#4d5ea5}.chip.wfh{background:#efe8ff;color:#6d53a8}.chip.pending{background:transparent;border:1px dashed #c7b9dc;color:#8a7a9a}.chip.holiday{background:#ffe9e2;color:#c0634a}.chip.more{background:transparent;color:#8a7f92}.cal-legend{display:flex;gap:8px;flex-wrap:wrap;padding:0 14px 14px}.cal-legend .chip,.calendar-row .chip{display:inline-block}.table.audit td{vertical-align:top}.diff{display:grid;gap:2px;font-size:12px;max-width:520px}.diff code{background:#f4efff;color:#6d53a8;border-radius:4px;padding:0 4px;font-size:11px}.diff del{color:#b04d5c;background:#ffeef0;text-decoration:line-through;padding:0 3px;border-radius:3px}.diff ins{color:#2f7a55;background:#e3f5ea;text-decoration:none;padding:0 3px;border-radius:3px}@media(max-width:620px){.side-nav{display:none}.bottom-nav{display:flex;width:100%;justify-content:space-around}.bottom-nav .nav{flex-direction:column;gap:2px;font-size:10px;padding:6px 8px;min-width:60px}.bottom-nav .nav span{display:block;white-space:nowrap}.bottom-nav .nav svg{width:20px}.bottom-nav .nav-badge{position:absolute;top:0;right:8px;min-width:16px;height:16px;font-size:10px}.req-card{grid-template-columns:auto 1fr}.req-side{grid-column:1 / -1;justify-items:stretch;text-align:left}.cal{gap:2px;padding:6px}.cal-cell{min-height:52px;padding:3px}.cal-cell .chip{display:none}.cal-count{display:grid;place-items:center;margin-top:auto;align-self:center;min-width:20px;height:20px;border-radius:10px;background:#efe8ff;color:#6d53a8;font-size:11px}.ts-entry{grid-template-columns:40px 1fr auto}}@media(min-width:621px)and (max-width:980px){.nav-group .side-caption{display:none}.nav-badge{position:absolute;top:2px;right:2px;min-width:16px;height:16px;font-size:10px}}html{-webkit-text-size-adjust:100%}body{overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent}button,a,[role=tab]{touch-action:manipulation}:focus-visible{outline:3px solid #b7a3dd;outline-offset:2px}.app-bar{position:absolute;top:22px;right:32px;z-index:5;display:flex;align-items:center;gap:10px}.app-bar .top-actions{position:static}.app-bar-brand{display:none}.install-app{display:inline-flex;align-items:center;gap:6px}.bar-btn{width:38px;height:38px;border:1px solid #e6dbd7;background:#fffdfa;border-radius:12px}.install-link{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:18px;padding:12px;border:1px dashed #d8c9ea;border-radius:14px;background:#faf6ff;color:#6f5ca6;font:inherit;cursor:pointer}.install-link:hover{background:#f3ecff}.login-logo{border-radius:14px;box-shadow:0 8px 18px #6f5ca633}.install-guide{display:grid;gap:14px}.install-cta{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:14px;border-radius:16px;background:linear-gradient(120deg,#f4efff,#fff4ec)}.install-cta img{border-radius:14px}.install-steps{margin:0;padding-left:22px;display:grid;gap:10px;color:#5d5068;font-size:15px;line-height:1.6}.install-steps li::marker{color:#8a74c0;font-weight:600}.inline-icon{vertical-align:-3px;color:#2f7df6}.inline-key{display:inline-block;min-width:20px;text-align:center;color:#5d5068}.qr-block{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center;padding:14px;border:1px solid #efe6f5;border-radius:16px;background:#fffdfa}.qr-block img{border-radius:10px;background:#fff;padding:6px;border:1px solid #eee}.copy-link{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}.copy-link code{font-size:12px;background:#f4efff;color:#5c4679;padding:6px 8px;border-radius:8px;overflow-wrap:anywhere}.install-banner{position:fixed;z-index:15;left:12px;right:12px;bottom:calc(78px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:10px;padding:10px 10px 10px 12px;background:#fffdfa;border:1px solid #e8dcf3;border-radius:16px;box-shadow:0 14px 34px #4a335533}.install-banner img{border-radius:9px}.install-banner .grow{flex:1;min-width:0}.install-banner b{display:block;font-size:14px;color:#4c3c64}.install-banner small{display:block;font-size:12px;color:#857a8e}.action.small{min-width:0;padding:9px 14px;font-size:13px;border-radius:12px}.offline-bar{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:9px 12px;border-radius:12px;background:#fff1dc;color:#9a6516;font-size:13px}.update-toast{position:fixed;z-index:30;right:24px;bottom:24px;display:flex;align-items:center;gap:12px;padding:12px 14px;background:#3f3257;color:#fff;border-radius:14px;box-shadow:0 16px 36px #2a1f3a55;font-size:14px}.update-toast .action{background:#a7dfc6;color:#2a2238;box-shadow:none}@media(min-width:981px){.sidebar{position:sticky;top:0;height:100vh;height:100dvh}.content{max-width:1480px;padding-left:44px;padding-right:44px}.table tbody tr:hover td{background:#fbf6f2}.layout{gap:20px}}@media(min-width:1600px){.grid-kpi{grid-template-columns:repeat(6,1fr)}}@media(min-width:621px)and (max-width:980px){.sidebar{position:sticky;top:0;height:100vh;height:100dvh}.app-bar{right:20px;top:18px}.install-app span{display:none}.grid-kpi{grid-template-columns:repeat(3,1fr)}}@media(max-width:620px){.content{padding:0 14px calc(92px + env(safe-area-inset-bottom))}.app-bar{position:sticky;top:0;right:auto;z-index:12;margin:0 -14px 14px;padding:calc(8px + env(safe-area-inset-top)) 14px 8px;justify-content:space-between;gap:8px;background:#fffaf6e0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid #efe3dc}.app-bar-brand{display:flex;align-items:center;gap:9px;min-width:0}.app-bar-brand img{border-radius:8px;flex:0 0 auto}.app-bar-brand b{font-size:16px;color:#4c3c64;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-actions{position:static!important;gap:6px}.install-app{display:inline-flex!important;padding:8px 10px}.install-app span{display:none}.lang-toggle button{padding:6px 7px}.notification-bell{width:36px;height:36px}.notification-menu{position:fixed;left:10px;right:10px;top:calc(58px + env(safe-area-inset-top));width:auto;max-height:70vh}.offline-bar{top:calc(56px + env(safe-area-inset-top))}.update-toast{left:12px;right:12px;bottom:calc(80px + env(safe-area-inset-bottom));justify-content:space-between}.sidebar{height:auto;padding:6px 6px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -6px 20px #6b4f5a14}.bottom-nav .nav{min-height:52px;border-radius:14px}.topbar{margin:4px 0 16px}.topbar h1{font-size:22px}.topbar>.btn-row{width:100%}.topbar>.btn-row>.action,.topbar>.btn-row>.secondary{flex:1 1 auto}.topbar>.btn-row>.select,.topbar>.btn-row>input{flex:1 1 140px}.field input,.field select,.field textarea,textarea,.select,.search input,.toolbar input,.toolbar select,.password-reset input,.filter-input,.table td input{font-size:16px}.secondary,.icon-btn,.tabs button{min-height:40px}.field input,.field select{min-height:46px}.table-wrap{overflow:visible;padding:4px 10px 10px}.table thead{display:none}.table,.table tbody,.table tr{display:block;width:100%}.table tr{background:#fffdfa;border:1px solid #efe5df;border-radius:16px;padding:6px 14px;margin:10px 0;box-shadow:0 4px 12px #8a615908}.table tr.inactive{opacity:.6}.table tr.inactive td{opacity:1}.table td{display:flex;justify-content:space-between;align-items:center;gap:14px;border:0;padding:7px 0;text-align:right;min-height:34px}.table td+td{border-top:1px dashed #f1e7e1}.table td:before{content:attr(data-label);flex:0 0 auto;max-width:42%;text-align:left;color:#9a8f9e;font-size:12px}.table td[data-label=""]:before{display:none}.table td[data-label=""]{justify-content:flex-end}.table td:first-child{font-size:14px}.table td.wrap{max-width:none}.table td .employee{text-align:left}.table td.actions{justify-content:flex-end;flex-wrap:wrap}.table td input:not([type=checkbox]){max-width:60%}.table td small.block{text-align:right}.modal{align-items:end;padding:0}.modal-box,.modal-box.wide{width:100%;max-width:100%;border-radius:24px 24px 0 0;max-height:92vh;max-height:92dvh;padding:18px 16px calc(20px + env(safe-area-inset-bottom));animation:sheet-up .22s ease both}.modal-box:before{content:"";display:block;width:42px;height:5px;border-radius:3px;background:#e2d6de;margin:-6px auto 12px}.modal-actions{position:sticky;bottom:calc(-20px - env(safe-area-inset-bottom));background:#fffdfa;padding:12px 0 4px;margin-bottom:0}.modal-actions>*{flex:1}.qr-block{grid-template-columns:1fr;justify-items:center;text-align:center}.install-cta{grid-template-columns:auto 1fr}.install-cta .action{grid-column:1 / -1}.check-card{padding:22px 16px}.clock{font-size:40px}.req-card{padding:12px}.panel-header{padding:14px}.tabs{width:100%}}@keyframes sheet-up{0%{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.modal-box,.view-stage{animation:none!important}}@media(display-mode:standalone){.install-app{display:none!important}}.brand-logo{border-radius:13px;box-shadow:0 8px 18px #6f5ca62e;flex:0 0 auto}@media(max-width:980px){.brand-logo{width:38px;height:38px}}@media(max-width:620px){.table td:first-child:before{display:none}.table td:first-child{justify-content:flex-start;text-align:left;padding-bottom:9px}.content:has(.install-banner){padding-bottom:calc(170px + env(safe-area-inset-bottom))}}.field input[type=file]{max-width:100%;min-width:0;font-size:14px;padding:9px}
