.gvhr-body{margin:0;background:#f3f6fa;color:#263c55;font:15px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,Arial,sans-serif;-webkit-font-smoothing:antialiased}
.gvhr-body *{box-sizing:border-box}
.gvhr-body button,.gvhr-body input,.gvhr-body select,.gvhr-body textarea{font:inherit}
.gvhr-top{background:#243e5b;color:white;padding:15px max(18px,calc((100vw - 1120px)/2));display:flex;justify-content:space-between;align-items:center;gap:14px}
.gvhr-top b{font-size:20px;letter-spacing:.06em}.gvhr-top small{font-size:12px;opacity:.8;margin-left:10px}.gvhr-top a{color:white;text-decoration:underline;text-underline-offset:4px}
.gvhr-main{max-width:1150px;margin:24px auto;padding:0 15px 64px}
.gvhr-login{max-width:435px;margin:55px auto;padding:30px;background:#fff;border-radius:18px;box-shadow:0 12px 35px #1c38521a}
.gvhr-login h1{font-size:27px;color:#2f4f78;margin:0 0 5px}.gvhr-login p{color:#65758a}.gvhr-login label{font-weight:600;display:block;margin-bottom:5px}.gvhr-login input[type=text],.gvhr-login input[type=password]{width:100%;padding:12px;border:1px solid #c9d5e1;border-radius:9px;font-size:16px;min-width:0}
.gvhr-login .login-submit input{border:0;background:#e8743b;color:white;font-weight:700;padding:13px 22px;border-radius:10px;cursor:pointer;width:100%}.gvhr-login .login-remember label{font-weight:400}.gvhr-help{text-align:center;font-size:12px}
#gvhr-app{--gh-navy:#2f4f78;--gh-orange:#e8743b;--gh-line:#e0e8f0;--gh-ink:#263c55;--gh-muted:#64748b;background:white;border:1px solid var(--gh-line);border-radius:18px;overflow:hidden;box-shadow:0 12px 34px #2245620b}
#gvhr-app button{cursor:pointer}#gvhr-app button:focus-visible,#gvhr-app input:focus-visible,#gvhr-app select:focus-visible{outline:2px solid #ee8a57;outline-offset:2px}
.gh-brand{background:#2f4f78;color:white;display:flex;align-items:center;gap:14px;padding:20px 25px}.gh-brandmark{width:46px;height:46px;border:2px solid white;border-radius:11px;display:grid;place-items:center;font-size:24px;font-weight:900}.gh-brand h1{font-size:24px;color:white;margin:0;line-height:1.2}.gh-brand h1 span{font-size:17px;font-weight:500;color:#ffd3b8}.gh-brand p{font-size:10px;letter-spacing:1.2px;margin:5px 0 0;color:#dde8f6}
.gh-toolbar{padding:14px 24px;background:#fafdff;border-bottom:1px solid var(--gh-line);display:flex;justify-content:space-between;align-items:center;gap:10px}.gh-month{display:flex;align-items:center;gap:12px}.gh-month button{border:1px solid #d4dfeb;background:white;color:var(--gh-navy);border-radius:9px;width:36px;height:36px;font-size:25px;line-height:1}.gh-month strong{min-width:118px;text-align:center}.gh-user{font-size:12px;color:var(--gh-muted)}
.gh-tabs{display:flex;align-items:center;gap:23px;overflow:auto;scrollbar-width:thin;padding:0 24px;border-bottom:1px solid var(--gh-line)}.gh-tabs button{font-weight:700;font-size:14px;padding:15px 3px;background:none;border:0;border-bottom:3px solid transparent;white-space:nowrap;color:#63748b}.gh-tabs button.active{color:var(--gh-navy);border-bottom-color:var(--gh-orange)}
.gh-content{padding:24px}.gh-heading h2{font-size:21px;margin:0 0 6px;line-height:1.3;color:var(--gh-navy)}.gh-heading p{margin:0 0 18px;color:var(--gh-muted);font-size:13px}
.gh-date{display:flex;align-items:center;gap:18px;margin:10px 0 18px;font-weight:700}.gh-date input{width:192px;max-width:60vw;border:1px solid #cbd7e5;border-radius:10px;padding:10px 12px;color:#334861;background:white;font-size:15px;min-height:44px}
.gh-list{display:grid;gap:8px}.gh-person,.gh-card{background:#fff;border:1px solid var(--gh-line);border-radius:12px;padding:15px 18px}.gh-person{display:flex;align-items:center;justify-content:space-between;gap:14px}.gh-personleft{display:flex;align-items:center;gap:13px;min-width:0}.gh-personleft strong{min-width:108px}.gh-personright{display:flex;align-items:center;gap:10px}.gh-badge{font-size:12px;border-radius:30px;padding:5px 11px;background:#edf2f8;color:#5e7188;font-weight:700;white-space:nowrap}.gh-morning{background:#fbe9c7;color:#875200}.gh-evening{background:#dfe6ff;color:#34488c}.gh-off{background:#f0f1f5;color:#6b7280}.gh-warning{font-size:12px;color:#b45309}.gh-note{font-size:12px;color:var(--gh-muted)}.gh-hint{font-size:12px;line-height:1.55;color:var(--gh-muted);margin:14px 0 0}
.gh-outline,.gh-primary{border-radius:9px!important;padding:10px 15px!important;font-weight:700!important;border:1px solid #c5d2e1!important;background:white!important;color:#2f4f78!important;white-space:nowrap}.gh-primary{background:var(--gh-orange)!important;color:white!important;border-color:var(--gh-orange)!important}.gh-primary:disabled{opacity:.55;cursor:wait!important}
.gh-cards,.gh-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gh-cardtop{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;color:var(--gh-navy)}.gh-cardtop strong{font-size:17px}.gh-detail{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #f0f3f8;padding:8px 0;font-size:13px}.gh-detail span{color:var(--gh-muted)}.gh-detail b{text-align:right}.gh-cardfoot{margin-top:14px}.gh-cardfoot button{width:100%}.gh-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 16px}.gh-kpis>div{background:#f7f9fc;border:1px solid var(--gh-line);border-radius:11px;padding:14px}.gh-kpis span{font-size:12px;color:var(--gh-muted)}.gh-kpis strong{display:block;margin-top:5px;font-size:22px;color:var(--gh-navy)}.gh-inline{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin-top:15px}.gh-alert{background:#fff3e8;color:#9a460e;border:1px solid #f4ccaa;border-radius:10px;padding:12px;font-size:13px}
.gh-modal[hidden]{display:none!important}.gh-modal{position:fixed;inset:0;z-index:999999;display:grid;place-items:center;padding:14px;overflow:auto}.gh-backdrop{position:fixed;inset:0;background:#15263bb8}.gh-dialog{position:relative;background:#fff;border-radius:16px;box-shadow:0 18px 60px #0004;width:min(460px,100%);max-height:calc(100dvh - 28px);overflow:auto;padding:22px}.gh-modhead{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:16px;color:var(--gh-navy);font-size:19px}.gh-modhead button{border:0;background:#eef2f6;color:#304964;font-size:27px;width:35px;height:35px;border-radius:9px}.gh-form{display:grid;gap:12px}.gh-form label{display:grid;gap:5px;font-size:13px;font-weight:700}.gh-form input,.gh-form select,.gh-form textarea{width:100%;min-width:0;border:1px solid #cbd5e1;border-radius:9px;font-size:16px;color:#30445b;padding:11px 12px;background:white}.gh-form button{margin-top:6px}.gh-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gh-loading,.gh-panel{padding:30px;text-align:center;color:var(--gh-muted)}.gh-toast{position:fixed;z-index:1000001;bottom:22px;left:50%;transform:translate(-50%,120px);opacity:0;transition:transform .25s,opacity .25s;background:#155e45;color:white;padding:12px 20px;border-radius:12px;max-width:calc(100vw - 30px);box-shadow:0 8px 30px #0003}.gh-toast.error{background:#aa2633}.gh-toast.visible{opacity:1;transform:translate(-50%,0)}
@media(max-width:700px){.gvhr-top{padding:13px 15px}.gvhr-top b{font-size:17px}.gvhr-top small{display:block;margin:0;font-size:9px;letter-spacing:.06em}.gvhr-main{margin:12px auto;padding:0 10px 60px}.gh-brand{padding:16px}.gh-brandmark{width:40px;height:40px;flex-shrink:0}.gh-brand h1{font-size:20px}.gh-brand h1 span{font-size:15px}.gh-brand p{font-size:9px;line-height:1.4}.gh-toolbar{padding:10px 13px}.gh-month{gap:7px}.gh-month strong{min-width:104px;font-size:14px}.gh-user{font-size:11px}.gh-tabs{padding:0 11px;gap:15px}.gh-tabs button{padding:12px 2px;font-size:13px}.gh-content{padding:17px 13px 24px}.gh-heading h2{font-size:19px}.gh-date{justify-content:space-between;gap:8px;font-size:13px}.gh-date input{width:178px;max-width:56vw}.gh-cards,.gh-grid{grid-template-columns:1fr}.gh-person{padding:12px 13px}.gh-personleft{gap:7px;flex-wrap:wrap}.gh-personleft strong{min-width:0;font-size:14px}.gh-personright{gap:7px}.gh-outline,.gh-primary{padding:9px 11px!important;font-size:13px!important}.gh-kpis{gap:6px}.gh-kpis>div{padding:9px 7px}.gh-kpis strong{font-size:15px}.gh-kpis span{font-size:10px}.gh-card{padding:14px}.gvhr-login{margin:25px 4px;padding:22px}.gh-dialog{padding:17px}}
@media(max-width:360px){.gh-month strong{min-width:92px}.gh-badge{font-size:10px;padding:4px 7px}.gh-person{flex-wrap:wrap}.gh-date input{width:158px}.gh-brand p{letter-spacing:.5px}}

/* Weekly roster v1.1.0: all employees, Monday through Sunday. */
.gh-toolbar-label{display:flex;align-items:center;gap:10px;color:#2f4f78}.gh-toolbar-label strong{font-size:15px}.gh-toolbar-label small{font-size:12px;color:#64748b}
.gh-week-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0 15px}
.gh-week-pagination{display:flex;align-items:center;gap:8px}.gh-week-pagination button{border:1px solid #cbd8e5;background:white;color:#2f4f78;border-radius:9px;width:42px;height:42px;line-height:1;font-size:26px;font-weight:600}.gh-week-pagination strong{font-size:16px;min-width:190px;text-align:center;color:#2f4f78}
.gh-week-now{min-height:42px;border:1px solid #d5e2ef;background:#f7fafc;border-radius:9px;color:#2f4f78;font-weight:700;padding:9px 13px}
.gh-week-picker{display:flex;align-items:center;gap:9px;font-weight:650;font-size:12px;color:#64748b}.gh-week-picker input{min-height:42px;max-width:170px;border:1px solid #cbd8e5;border-radius:9px;padding:8px 10px;background:white;color:#263c55;font-size:14px}
.gh-week-legend{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:12px 0 15px}.gh-week-legend>span{display:inline-flex;gap:4px;align-items:center;font-size:12px;color:#64748b}.gh-week-legend .gh-badge{font-size:10px;padding:3px 7px}
.gh-week-desktop{max-width:100%;overflow-x:auto;border-radius:12px;border:1px solid #dbe5ef}
.gh-week-table{border-collapse:separate;border-spacing:0;min-width:860px;width:100%;text-align:center}.gh-week-table th,.gh-week-table td{padding:12px 7px;border-bottom:1px solid #e9edf4;border-right:1px solid #edf1f6}.gh-week-table tr:last-child th,.gh-week-table tr:last-child td{border-bottom:0}.gh-week-table thead th{background:#2f4f78;color:white;font-size:12px}.gh-week-table thead th span{display:block;font-weight:500;opacity:.82}.gh-week-table thead th strong{display:block;font-size:14px}.gh-week-table .gh-week-person{text-align:left;background:#f8fafc;color:#263c55;min-width:115px;max-width:180px;font-size:13px}.gh-week-table thead .gh-week-today{background:#e8743b}
.gh-week-shift{display:flex;justify-content:center;align-items:center;min-width:90px;min-height:48px;width:100%;padding:6px 5px;background:#fff;border:1px solid transparent;border-radius:9px;position:relative;font-weight:600}.gh-week-shift[data-action]{border-color:#dce5ee}.gh-week-shift[data-action]:hover{border-color:#e8743b;background:#fff9f3}.gh-week-shift .gh-badge{white-space:nowrap;font-size:11px;padding:5px 8px}.gh-week-shift.is-today{box-shadow:inset 0 0 0 1px #e8743b}.gh-week-warning{font-style:normal;color:#b45309;font-size:12px;font-weight:900;padding-left:2px}.gh-week-mobile{display:none}
.gh-week-foot{font-size:12px;line-height:1.6;color:#64748b;margin:13px 0 0}
@media(max-width:760px){.gh-week-desktop{display:none}.gh-week-mobile{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gh-week-card{border:1px solid #dce6f0;border-radius:12px;background:#fff;overflow:hidden;min-width:0}.gh-week-card h3{margin:0;padding:12px 13px;background:#eaf1f8;color:#2f4f78;font-size:15px}.gh-week-dayline{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;border-top:1px solid #eff2f6;min-height:53px}.gh-week-dayline.is-today{background:#fff8f2}.gh-week-dayname{font-size:12px;color:#64748b;flex:0 0 auto}.gh-week-dayname b{display:block;font-size:13px;color:#263c55;font-weight:750}.gh-week-dayline .gh-week-shift{width:auto;min-width:96px;max-width:140px;min-height:38px}.gh-week-dayline .gh-badge{font-size:11px}.gh-week-controls{gap:10px}.gh-week-picker{width:100%;justify-content:space-between}.gh-week-legend{gap:8px}.gh-week-legend>span{font-size:10px}}
@media(max-width:540px){.gh-week-mobile{grid-template-columns:1fr}.gh-week-pagination{flex:1 1 auto}.gh-week-pagination strong{min-width:0;flex:1;font-size:14px;white-space:nowrap}.gh-week-controls{justify-content:space-between}.gh-week-now{font-size:12px}.gh-week-card h3{padding:10px 12px}.gh-week-dayline{padding:6px 13px}.gh-toolbar-label{flex-direction:column;align-items:flex-start;gap:1px}.gh-toolbar-label small{font-size:10px}}
@media(max-width:350px){.gh-week-pagination strong{font-size:12px}.gh-week-pagination button{width:34px;height:38px}.gh-week-now{min-height:38px;padding:7px 9px}}

/* v1.2.0: horizontal weekly tables on desktop and mobile */
.gh-week-desktop{display:block!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch;max-width:100%}.gh-week-mobile{display:none!important}.gh-week-table{min-width:850px}.gh-week-table .gh-week-person{position:sticky;left:0;z-index:2;box-shadow:2px 0 4px #213b5810}.gh-week-table thead th:first-child{position:sticky;left:0;z-index:3}.gh-att-cell{width:100%;min-width:91px;min-height:73px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1px solid transparent;border-radius:8px;background:white;color:#263c55}.gh-att-cell[data-action]{border-color:#dbe5ef;cursor:pointer}.gh-att-cell small{font-size:10px;white-space:nowrap}.gh-att-cell[data-action]:active{background:#fff0e5}@media(max-width:760px){.gh-week-table{min-width:850px}.gh-week-table th,.gh-week-table td{padding:7px 5px}.gh-week-table .gh-week-person{min-width:100px;max-width:100px;white-space:normal}.gh-week-shift{min-width:80px}.gh-week-controls{margin-bottom:12px}}

/* v1.2.1 – Weekly attendance: show only shift and note, including on phones. */
.gh-att-cell{min-height:72px;max-width:155px;padding:8px 6px;overflow:hidden}.gh-att-note{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal!important;overflow-wrap:anywhere;line-height:1.25;text-align:center;max-width:100%;font-weight:500;color:#53647c}.gh-att-empty{font-size:10px;color:#94a3b8}.gh-att-wrap .gh-week-table td{vertical-align:middle}.gh-att-wrap .gh-week-table .gh-week-person{z-index:2}.gh-form input[readonly]{background:#f0f4f8;color:#334155;cursor:default}

/* v1.2.2 - login and auth diagnostics; no impact on roster, attendance, or payroll. */
.gvhr-login-form{display:grid;gap:8px}
.gvhr-login-form>label:not(.gvhr-login-check){display:block;margin:10px 0 0;font-weight:700;color:#30445b}
.gvhr-login-form input[type=text],.gvhr-login-form input[type=password]{box-sizing:border-box;width:100%;min-height:46px;padding:11px 12px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;color:#273b50;font-size:16px}
.gvhr-login-form input:focus-visible{outline:2px solid #e8743b;outline-offset:1px}
.gvhr-login-check{display:flex!important;align-items:center;gap:8px;font-weight:400!important;margin:10px 0}
.gvhr-login-check input{width:17px;height:17px}
.gvhr-login-submit{display:block;width:100%;min-height:46px;background:#e8743b;border:0;border-radius:10px;color:#fff;font-size:16px;font-weight:800;cursor:pointer}
.gvhr-login-alert{background:#fff0e9;color:#923c16;padding:12px 13px;margin:16px 0 12px;border:1px solid #f2c6ac;border-radius:10px;line-height:1.5;font-size:14px}
@media(max-width:700px){.gvhr-login{margin:22px auto;padding:20px}.gvhr-login h1{font-size:22px}}


/* v1.2.3 - Actual work hours in the weekly attendance modal and table. */
.gh-actual-box{border:1px solid #d8e3f0;border-radius:12px;margin:0;padding:12px 14px;background:#f8fafc;min-width:0}
.gh-actual-box legend{font-size:14px;font-weight:800;color:#2f4f78;padding:0 5px}
.gh-time-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.gh-time-grid label{min-width:0;margin:0}
.gh-time-grid input[type=time]{display:block;min-width:0;width:100%;font-size:16px;max-width:100%;box-sizing:border-box}
.gh-time-break{margin-top:11px;color:#506781}
.gh-time-break summary{cursor:pointer;font-size:12px;font-weight:700;list-style:disclosure-closed}
.gh-time-break[open] summary{margin-bottom:8px}
.gh-time-break label{display:block;margin-top:8px}
.gh-time-break input[type=number]{max-width:170px}
.gh-hours-preview{background:#e9f2ff;color:#284d72;font-weight:750;font-size:13px;line-height:1.5;padding:9px 11px;border-radius:8px;margin:12px 0 0}
.gh-att-time{font-size:10px;color:#225e7c;font-weight:750;line-height:1.2;white-space:normal;text-align:center}
.gh-att-cell{min-height:86px;gap:3px}
@media(max-width:480px){.gh-actual-box{padding:10px}.gh-time-grid{gap:8px}.gh-time-grid input[type=time]{padding:8px 4px}}

/* v1.2.4: ca gãy - two non-overlapping time intervals, mobile-friendly. */
.gh-split{background:#fff1e7;color:#9b4b17;border:1px solid #f2d0b3}
.gh-interval-label{font-size:12px;font-weight:800;color:#2f4f78;margin:3px 0 8px}
.gh-split-time{margin-top:13px;border-top:1px dashed #c6d4e3;padding-top:12px}
.gh-split-time[hidden]{display:none!important}
.gh-split-note{font-size:12px;margin:8px 0 0;color:#63778e;line-height:1.5}
.gh-att-time{overflow-wrap:anywhere}
@media(max-width:480px){.gh-interval-label{margin:6px 0}.gh-time-grid{gap:8px}.gh-time-grid input[type=time]{min-height:43px;padding:8px 4px;font-size:15px}}
