:root{--bg:#f3f4f6;--card:#fff;--ink:#111827;--muted:#6b7280;--line:#e5e7eb;--accent:#111827;--good:#166534;--bad:#991b1b;--warn:#92400e;--shadow:0 8px 24px rgba(17,24,39,.06)}
*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}a{color:inherit;text-decoration:none}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.topbar{min-height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}.brand-row{display:flex;align-items:center;gap:12px}.brand{font-weight:900;letter-spacing:.1em}.mainnav{display:flex;gap:16px;align-items:center}.mainnav a{font-size:13px;color:#374151}.nav-user{font-size:12px;color:var(--muted);border-left:1px solid var(--line);padding-left:15px}.nav-toggle{display:none;border:0;background:transparent;font-size:22px}.container{max-width:1320px;margin:28px auto;padding:0 20px}.mobile-shell{max-width:520px;margin:18px auto;padding:0 14px 90px}.card,.mobile-card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:22px;margin-bottom:18px}.page-title{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:18px}.page-title h1,.card h2,.mobile-card h2{margin:4px 0 6px}.page-title p{margin:0}.backlink{font-size:13px;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:12px}.center{text-align:center}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.stat strong{font-size:32px;display:block}.stat span{color:var(--muted)}.quick-grid,.catalog-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.quick-card,.catalog-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;min-height:120px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow);transition:.15s}.quick-card:hover,.catalog-card:hover{transform:translateY(-2px);border-color:#9ca3af}.quick-card span,.catalog-card span{color:var(--muted);font-size:13px;line-height:1.4}.catalog-card b{margin-top:auto;font-size:12px}.catalog-section>h2{font-size:16px;margin:24px 2px 12px}.two-col{display:grid;grid-template-columns:minmax(300px,400px) 1fr;gap:18px;align-items:start}.two-col.wide-left{grid-template-columns:minmax(320px,460px) 1fr}.employee-layout{grid-template-columns:minmax(390px,520px) 1fr}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.form-section{border-top:1px solid var(--line);margin-top:18px;padding-top:10px}.form-section:first-of-type{border-top:0;margin-top:0}.form-section h3{font-size:14px;margin:8px 0}label{display:block;font-size:13px;font-weight:650;margin:12px 0}input,select,textarea{width:100%;margin-top:6px;padding:11px 12px;border:1px solid #d1d5db;border-radius:10px;background:#fff;font:inherit;color:inherit}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #9ca3af;outline-offset:1px}.check{display:flex;align-items:center;gap:9px;font-weight:600}.check input{width:auto;margin:0}.btn{border:0;border-radius:11px;padding:11px 15px;font-weight:800;cursor:pointer;display:inline-block}.btn.primary{background:var(--accent);color:#fff}.btn.secondary{background:#fff;border:1px solid #d1d5db}.block{width:100%}.alert{padding:12px 14px;border-radius:10px;margin:12px 0}.alert.success{background:#ecfdf5;color:var(--good)}.alert.danger{background:#fef2f2;color:var(--bad)}.alert.warning{background:#fffbeb;color:var(--warn)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:11px 9px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;white-space:nowrap}.section-head{display:flex;justify-content:space-between;align-items:center}.actions{white-space:nowrap}.actions>a,.actions .linkbtn{margin-right:10px}.inline{display:inline}.linkbtn{background:none;border:0;padding:0;color:#374151;text-decoration:underline;cursor:pointer;font:inherit}.badge{display:inline-flex;border:1px solid #d1d5db;border-radius:999px;padding:3px 8px;font-size:11px;white-space:nowrap}.badge.good{background:#ecfdf5;color:#166534;border-color:#bbf7d0}.badge.off{background:#f3f4f6;color:#6b7280}.auth-shell{min-height:calc(100vh - 60px);display:grid;place-items:center;padding:24px}.auth-card{width:min(430px,100%)}.logo-mark{width:48px;height:48px;border-radius:14px;background:#111827;color:white;display:grid;place-items:center;font-weight:900;font-size:22px;margin-bottom:12px}.hero{padding-top:26px}.hero h1{margin:4px 0}.kicker{font-size:12px;letter-spacing:.18em;font-weight:900}.gps-pill{display:inline-flex;padding:8px 12px;border-radius:999px;background:#f3f4f6;font-size:13px;margin-top:8px}.punch-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.punch{min-height:86px;border:1px solid #d1d5db;background:#fff;border-radius:15px;font-weight:850;font-size:15px;padding:12px;cursor:pointer}.punch.start{background:#111827;color:#fff}.punch.end{background:#f9fafb;border:2px solid #111827}.punch:disabled{opacity:.55}.event-row{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}.event-row span,.event-time small{display:block;color:var(--muted);font-size:12px}.event-time{text-align:right;font-size:13px;white-space:nowrap}.filter-form{display:flex;gap:8px;align-items:center}.filter-form input{margin:0}hr{border:0;border-top:1px solid var(--line);margin:18px 0}
@media(max-width:1050px){.quick-grid,.catalog-grid{grid-template-columns:repeat(2,1fr)}.stats{grid-template-columns:1fr 1fr}.employee-layout,.two-col,.two-col.wide-left{grid-template-columns:1fr}}
@media(max-width:760px){.topbar{display:block;padding:14px}.brand-row{justify-content:space-between}.nav-toggle{display:block}.mainnav{display:none;flex-direction:column;align-items:stretch;gap:0;padding-top:10px}.nav-open .mainnav{display:flex}.mainnav a,.nav-user{padding:10px 2px;border-top:1px solid var(--line)}.nav-user{border-left:0}.container{padding:0 12px;margin-top:16px}.page-title{align-items:flex-start;flex-direction:column}.quick-grid,.catalog-grid,.stats{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:1fr}.filter-form{width:100%}.filter-form input{flex:1}}
@media(max-width:480px){.quick-grid,.catalog-grid,.stats,.grid2,.punch-grid{grid-template-columns:1fr}.card{padding:16px}.mobile-shell{padding-left:10px;padding-right:10px}.page-title h1{font-size:26px}}

.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 18px}.quick-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:7px}.quick-card strong{font-size:15px}.quick-card span{font-size:13px;color:var(--muted);line-height:1.4}.quick-card:hover{transform:translateY(-1px)}
.filter-grid{display:grid;grid-template-columns:repeat(4,1fr) auto;gap:12px;align-items:end}.filter-action{padding-bottom:12px}.audit-json{max-width:520px}.audit-json pre{white-space:pre-wrap;word-break:break-word;background:#f9fafb;padding:10px;border-radius:8px;max-height:240px;overflow:auto}
.token-box{margin-top:10px;background:#fff;border:1px dashed #16a34a;padding:12px;border-radius:10px;word-break:break-all;font-size:14px}.mapping-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}.steps{line-height:1.8}
.badge{display:inline-block;padding:4px 8px;border-radius:999px;background:#f3f4f6;font-size:12px}.badge.good{background:#ecfdf5;color:#166534}.badge.off{background:#f3f4f6;color:#6b7280}
@media(max-width:900px){.quick-grid{grid-template-columns:1fr 1fr}.filter-grid,.mapping-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.quick-grid,.filter-grid,.mapping-grid{grid-template-columns:1fr}}

.today-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:0 0 18px}.today-stat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow)}.today-stat strong{font-size:30px}.today-stat span{font-size:12px;color:var(--muted)}.today-stat.present{border-top:4px solid #16a34a}.today-stat.remote{border-top:4px solid #2563eb}.today-stat.authorized{border-top:4px solid #7c3aed}.today-stat.absent{border-top:4px solid #dc2626}.today-stat.exception{border-top:4px solid #d97706}
.attendance-badge{display:inline-block;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.attendance-badge.present{background:#dcfce7;color:#166534}.attendance-badge.remote{background:#dbeafe;color:#1d4ed8}.attendance-badge.authorized{background:#ede9fe;color:#6d28d9}.attendance-badge.absent{background:#fee2e2;color:#991b1b}.attendance-badge.exception,.attendance-badge.pending{background:#fef3c7;color:#92400e}.attendance-table tr.row-absent td{background:#fffafa}.attendance-table tr.row-authorized td{background:#fcfaff}
.dashboard-sections{display:grid;grid-template-columns:1fr 1fr;gap:18px}.dash-person{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid var(--line)}.dash-person:last-child{border-bottom:0}.dash-person span{display:block;color:var(--muted);font-size:12px;margin-top:3px}.pay-chip{padding:5px 8px!important;border-radius:999px;background:#f3f4f6;color:#374151!important;white-space:nowrap}.warning-text{color:#92400e}
.authz-layout{grid-template-columns:minmax(330px,420px) 1fr}.authz-list{display:flex;flex-direction:column;gap:12px}.authz-item{border:1px solid var(--line);border-radius:14px;padding:15px}.authz-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.authz-top span{display:block}.authz-meta{display:flex;flex-wrap:wrap;gap:8px 16px;margin:10px 0;font-size:12px;color:var(--muted)}.approval-comment{background:#f9fafb;border-radius:9px;padding:9px;margin:8px 0;font-size:13px}.approval-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.approval-actions form{display:flex;gap:8px}.approval-actions input{margin:0}.dangerbtn{background:#991b1b;color:white}.attach-form{display:flex;gap:8px;align-items:center;margin-top:10px}.attach-form input{margin:0}.status-approved{background:#dcfce7;color:#166534}.status-rejected{background:#fee2e2;color:#991b1b}.status-pending{background:#fef3c7;color:#92400e}.status-cancelled{background:#f3f4f6;color:#6b7280}.checkrow{display:flex;gap:8px;align-items:center}.checkrow input{width:auto;margin:0}
@media(max-width:980px){.today-stats{grid-template-columns:repeat(3,1fr)}.dashboard-sections{grid-template-columns:1fr}.authz-layout{grid-template-columns:1fr}}
@media(max-width:580px){.today-stats{grid-template-columns:1fr 1fr}.approval-actions{grid-template-columns:1fr}.approval-actions form,.attach-form{flex-direction:column;align-items:stretch}}

.alert.info{background:#eff6ff;color:#1e40af}.catalog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.catalog-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:7px}.catalog-card span{font-size:13px;color:var(--muted)}@media(max-width:850px){.catalog-grid{grid-template-columns:1fr 1fr}}@media(max-width:520px){.catalog-grid{grid-template-columns:1fr}}

.schedule-layout{grid-template-columns:minmax(430px,540px) 1fr}.shift-timeline{display:grid;grid-template-columns:1fr 1fr;gap:12px}.shift-timeline label{position:relative;padding-left:34px}.shift-timeline label>span{position:absolute;left:0;top:31px;width:25px;height:25px;border-radius:50%;background:#111827;color:#fff;display:grid;place-items:center;font-size:12px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.check-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.checkbox-field{align-self:end;padding-bottom:11px}.mobile-schedule{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.mobile-schedule>strong{grid-column:1/-1}.mobile-schedule div{background:#f9fafb;border-radius:9px;padding:7px;text-align:center}.mobile-schedule span{display:block;font-size:10px;color:var(--muted)}.mobile-schedule b{font-size:13px}
@media(max-width:900px){.schedule-layout{grid-template-columns:1fr}.grid3{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.shift-timeline,.grid3,.check-grid{grid-template-columns:1fr}.mobile-schedule{grid-template-columns:1fr 1fr}}

.relationship-note{display:flex;gap:10px 18px;align-items:flex-start;background:#eef2ff;border:1px solid #c7d2fe;color:#3730a3;border-radius:14px;padding:14px 16px;margin-bottom:18px}.relationship-note strong{white-space:nowrap}.relationship-note span{font-size:13px;line-height:1.45}.page-actions{display:flex;gap:8px;flex-wrap:wrap}.linked-account{display:flex;justify-content:space-between;align-items:center;gap:16px;background:#f9fafb;border:1px solid var(--line);border-radius:12px;padding:12px}.linked-account span{display:block;color:var(--muted);font-size:12px;margin-top:3px}.access-summary{border-top:2px solid #e5e7eb;padding-top:14px}
@media(max-width:620px){.relationship-note,.linked-account{flex-direction:column}.relationship-note strong{white-space:normal}.linked-account{align-items:stretch}}

.gps-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}.gps-test-btn{border:1px solid #d1d5db;background:#fff;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:700;cursor:pointer}.gps-test-btn:disabled{opacity:.55}.gps-detail{margin-top:6px;line-height:1.35}.gps-pill[data-state="ok"]{background:#dcfce7;color:#166534}.gps-pill[data-state="warning"]{background:#fef3c7;color:#92400e}.gps-pill[data-state="error"]{background:#fee2e2;color:#991b1b}.gps-pill[data-state="working"]{background:#dbeafe;color:#1d4ed8}

.mobile-status-line{display:flex;align-items:center;gap:8px;margin-bottom:18px}.mobile-action-group{border-top:1px solid var(--line);padding-top:15px;margin-top:15px}.mobile-action-group h3{margin:0 0 10px;font-size:14px}.full-punch{width:100%;min-height:62px;border:1px solid #d1d5db;background:#fff;border-radius:14px;font-weight:850;font-size:15px;padding:12px;cursor:pointer}.full-punch.start{background:#111827;color:#fff}.full-punch.end{border:2px solid #111827}.full-punch.meal-out,.full-punch.meal-return{background:#f9fafb}.full-punch.overtime{background:#fef3c7;border-color:#f59e0b;color:#78350f}.completed-note{padding:10px 12px;border-radius:10px;background:#ecfdf5;color:#166534;font-size:13px}.mobile-punch-message{min-height:20px;margin-top:14px}.mobile-event-detail .gps-event{margin-top:5px;font-size:11px;line-height:1.35}.mobile-event-detail .gps-event a{text-decoration:underline}.gps-missing{color:#991b1b!important}.mobile-overtime-request{display:grid;gap:8px}.mobile-overtime-request label{margin:0}.ot-mobile{border-radius:11px;padding:10px 12px;margin-bottom:9px}.ot-mobile strong,.ot-mobile span{display:block}.ot-mobile span{font-size:12px;margin-top:3px}.pending-box{background:#fef3c7;color:#92400e}.approved-box{background:#dcfce7;color:#166534}.overtime-list{display:flex;flex-direction:column;gap:12px}.overtime-item{border:1px solid var(--line);border-radius:14px;padding:14px}.ot-approve{margin:10px 0}

.today-stat.finished{border-top:4px solid #64748b}.today-stats-six{grid-template-columns:repeat(6,1fr)}
.attendance-badge.finished{background:#e2e8f0;color:#334155}
.attendance-badge.break{background:#dbeafe;color:#1d4ed8}
.attendance-badge.overtime{background:#fef3c7;color:#92400e}
.attendance-table tr.row-finished td{background:#f8fafc;color:#475569}
@media(max-width:1100px){.today-stats-six{grid-template-columns:repeat(3,1fr)}}
@media(max-width:580px){.today-stats-six{grid-template-columns:1fr 1fr}}

.report-filter{display:grid;grid-template-columns:2fr 1fr 1fr 1fr auto;gap:12px;align-items:end}.report-title{align-items:center}.empty-report{text-align:center;padding:50px 20px}.employee-report-head{display:flex;justify-content:space-between;gap:20px;align-items:center}.employee-report-head h2{font-size:26px;margin:4px 0}.report-period{text-align:right}.report-period span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.report-period strong{display:block;margin-top:4px}.report-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:18px}.report-kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;box-shadow:var(--shadow)}.report-kpi strong{display:block;font-size:25px}.report-kpi span{font-size:12px;color:var(--muted)}.attendance-report-list{display:flex;flex-direction:column;gap:12px}.report-day-group{border-top:1px solid var(--line);padding-top:12px}.report-day-group:first-child{border-top:0}.report-day-group h3{margin:0 0 8px;font-size:14px;color:#374151}.report-event{display:grid;grid-template-columns:minmax(280px,1fr) minmax(250px,360px);gap:18px;padding:12px 0;border-bottom:1px solid var(--line)}.report-event-main{display:flex;gap:12px}.report-event-icon{width:34px;height:34px;border-radius:10px;background:#111827;color:#fff;display:grid;place-items:center;font-weight:900;flex:0 0 auto}.report-event-main span,.report-event-gps span{display:block;color:var(--muted);font-size:12px;margin-top:3px}.report-event-gps{text-align:right}.map-link{display:inline-block;margin-top:5px;font-size:12px;text-decoration:underline}.gps-none{color:#991b1b}.report-two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.report-small-row{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}.report-small-row span{display:block;color:var(--muted);font-size:12px;margin-top:3px}.report-comment{font-size:12px;color:#4b5563;background:#f9fafb;padding:8px 10px;border-radius:8px}.report-badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800}.report-badge.good{background:#dcfce7;color:#166534}.report-badge.warn{background:#fef3c7;color:#92400e}.report-badge.bad{background:#fee2e2;color:#991b1b}.report-badge.neutral{background:#f3f4f6;color:#4b5563}
@media(max-width:1000px){.report-filter{grid-template-columns:1fr 1fr}.report-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.employee-report-head,.report-event{grid-template-columns:1fr;display:grid}.report-event-gps{text-align:left}.report-two-col{grid-template-columns:1fr}.report-kpis{grid-template-columns:1fr 1fr}.report-period{text-align:left}.report-filter{grid-template-columns:1fr}}

.contract-selector{grid-template-columns:minmax(280px,1fr) auto}.contract-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:18px}.contract-summary-grid,.contract-detail-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.contract-summary-grid>div,.contract-detail-grid>div{background:#f9fafb;border:1px solid var(--line);border-radius:12px;padding:12px}.contract-summary-grid span,.contract-detail-grid span{display:block;color:var(--muted);font-size:11px;margin-bottom:4px}.negative-kpi{border-top:4px solid #dc2626}.positive-kpi{border-top:4px solid #16a34a}.variance-negative{color:#991b1b;font-weight:800}.variance-positive{color:#166534;font-weight:800}
@media(max-width:1100px){.contract-kpis{grid-template-columns:repeat(3,1fr)}.contract-summary-grid,.contract-detail-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.contract-kpis{grid-template-columns:1fr 1fr}.contract-summary-grid,.contract-detail-grid{grid-template-columns:1fr 1fr}.contract-selector{grid-template-columns:1fr}}

.timecard-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.ignored-event td{opacity:.58;background:#f9fafb}.calc-json{white-space:pre-wrap;word-break:break-word;background:#0f172a;color:#e2e8f0;padding:14px;border-radius:12px;font-size:12px;max-height:420px;overflow:auto}
@media(max-width:700px){.timecard-actions{align-items:stretch;flex-direction:column}.timecard-actions form{width:100%}.timecard-actions button,.timecard-actions input{width:100%}}

.weekly-rule-card{display:flex;justify-content:space-between;gap:24px;align-items:center}.weekly-rule-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;min-width:650px}.weekly-rule-grid>div{background:#f9fafb;border:1px solid var(--line);border-radius:12px;padding:12px}.weekly-rule-grid span{display:block;color:var(--muted);font-size:11px;margin-bottom:4px}.weekly-review-row td{background:#fffbeb}
@media(max-width:1000px){.weekly-rule-card{display:block}.weekly-rule-grid{min-width:0;grid-template-columns:1fr 1fr;margin-top:14px}}
@media(max-width:560px){.weekly-rule-grid{grid-template-columns:1fr}}

.context-nav{display:flex;gap:14px;align-items:center;margin:14px 0 8px;font-size:13px}.context-nav a{text-decoration:none;color:var(--muted)}.context-nav a:hover{color:var(--text)}
.weekday-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin:8px 0 14px}.weekday-check{border:1px solid var(--line);border-radius:12px;padding:10px 6px;text-align:center;cursor:pointer}.weekday-check input{display:block;margin:0 auto 5px}.weekday-check span{display:block;font-weight:700}.weekday-check small{display:block;color:var(--muted);font-size:10px}
.calendar-toolbar{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap}.calendar-toolbar h2{margin:0 12px}.labor-calendar{display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid var(--line);border-top:1px solid var(--line);margin-top:14px}.cal-head,.cal-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px}.cal-head{text-align:center;font-weight:700;background:#f8fafc}.cal-cell{min-height:100px}.cal-cell.empty{background:#fafafa}.cal-cell.sunday{background:#fcfcfd}.cal-event{display:block;margin-top:6px;padding:4px 6px;border-radius:7px;background:#f1f5f9;text-decoration:none;font-size:11px;line-height:1.25}.cal-statutory_holiday{background:#fef3c7}.cal-election_day{background:#ede9fe}.cal-company_rest{background:#dbeafe}.cal-special_workday{background:#dcfce7}.legend-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;color:var(--muted);font-size:12px}
.compact-hub .catalog-card{min-height:120px}.fiscal-boundary{margin-top:18px}
.payroll-actions-card .payroll-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.payroll-actions form{display:flex;gap:8px;align-items:center}.payroll-actions input{min-width:220px}
.issue-list{display:grid;gap:8px}.issue-row{border:1px solid var(--line);border-left-width:4px;border-radius:10px;padding:10px 12px}.issue-row strong,.issue-row span{display:block}.issue-row p{margin:5px 0 0}.issue-error{border-left-color:#b91c1c}.issue-warning{border-left-color:#d97706}.issue-info{border-left-color:#2563eb}
@media(max-width:760px){.weekday-grid{grid-template-columns:repeat(4,1fr)}.labor-calendar{font-size:12px}.cal-cell{min-height:76px;padding:5px}.cal-event{font-size:9px}.payroll-actions-card .payroll-actions,.payroll-actions form{display:block}.payroll-actions input,.payroll-actions .btn{width:100%;margin:5px 0}}

/* v0.3.1 - Ayuda contextual y accesos */
.help-tip{position:relative;display:inline-grid;place-items:center;width:19px;height:19px;padding:0;margin-left:5px;border:1px solid #cbd5e1;border-radius:50%;background:#fff;color:#475569;font-size:12px;font-weight:700;line-height:1;cursor:help;vertical-align:middle}
.help-tip::after{content:attr(data-tooltip);position:absolute;z-index:200;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%);width:min(310px,78vw);padding:9px 11px;border-radius:9px;background:#111827;color:#fff;font-size:12px;font-weight:400;line-height:1.35;text-align:left;box-shadow:0 10px 28px rgba(15,23,42,.25);opacity:0;pointer-events:none;transition:opacity .15s}
.help-tip:hover::after,.help-tip:focus::after,.help-tip.tip-open::after{opacity:1}
.help-tip:focus{outline:2px solid #94a3b8;outline-offset:2px}
.password-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}
.permission-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px 14px;margin:10px 0}
.field-status{display:block;min-height:17px;font-size:11px;margin-top:4px}.field-status.ok{color:#047857}.field-status.error{color:#b91c1c;font-weight:600}
.employee-portal-access{border:1px solid #bfdbfe;background:#f8fbff;border-radius:14px;padding:16px}.admin-access-block{border:1px solid #e2e8f0;background:#fafafa;border-radius:14px;padding:16px}
.narrow-card{max-width:720px}.employee-topbar .brand{cursor:default}
@media(max-width:650px){.permission-grid{grid-template-columns:1fr}.password-row{grid-template-columns:1fr}.password-row .btn{width:100%}.help-tip::after{left:auto;right:-12px;transform:none}}

/* KINTAI v0.3.1.1 - Tooltip global (no se recorta dentro de cards/tablas) */
/* CSS tooltip remains active as reliable fallback */
.kintai-global-tooltip{
  position:fixed;
  z-index:10000;
  width:max-content;
  max-width:min(340px,calc(100vw - 20px));
  padding:9px 11px;
  border-radius:9px;
  background:#111827;
  color:#fff;
  font-size:12px;
  line-height:1.4;
  font-weight:400;
  box-shadow:0 12px 30px rgba(15,23,42,.28);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(2px);
  transition:opacity .12s ease,transform .12s ease,visibility .12s;
  white-space:normal;
}
.kintai-global-tooltip.show{
  opacity:1;
  visibility:visible;
  transform:translateY(0);
}
.kintai-global-tooltip::after{
  content:"";
  position:absolute;
  left:50%;
  transform:translateX(-50%);
  border:6px solid transparent;
}
.kintai-global-tooltip[data-placement="top"]::after{
  top:100%;
  border-top-color:#111827;
}
.kintai-global-tooltip[data-placement="bottom"]::after{
  bottom:100%;
  border-bottom-color:#111827;
}
.has-kintai-tooltip:not(.help-tip){cursor:help}
button.has-kintai-tooltip,a.has-kintai-tooltip{cursor:pointer}
.help-tip{
  flex:0 0 auto;
  position:relative;
}
label>.help-tip{
  margin-left:6px;
  margin-right:4px;
}
@media (hover:none){
  input.has-kintai-tooltip,select.has-kintai-tooltip,textarea.has-kintai-tooltip{cursor:auto}
}

/* KINTAI v0.3.1.2 - tooltip robusto, independiente de JS */
.help-tip{
  z-index:30;
  overflow:visible!important;
}
.help-tip::after{
  content:attr(data-tooltip)!important;
  display:block!important;
  position:absolute!important;
  z-index:99999!important;
  left:50%!important;
  bottom:calc(100% + 10px)!important;
  transform:translateX(-50%) translateY(3px)!important;
  width:300px!important;
  max-width:min(320px,80vw)!important;
  min-width:180px;
  padding:10px 12px!important;
  border-radius:9px!important;
  background:#111827!important;
  color:#fff!important;
  font-size:12px!important;
  font-weight:400!important;
  line-height:1.45!important;
  text-align:left!important;
  white-space:normal!important;
  box-shadow:0 12px 30px rgba(15,23,42,.3)!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  transition:opacity .12s ease,transform .12s ease,visibility .12s!important;
}
.help-tip::before{
  content:"";
  position:absolute;
  z-index:100000;
  left:50%;
  bottom:calc(100% + 3px);
  transform:translateX(-50%);
  border:7px solid transparent;
  border-top-color:#111827;
  opacity:0;
  visibility:hidden;
}
.help-tip.tip-open::after{
  opacity:1!important;
  visibility:visible!important;
  transform:translateX(-50%) translateY(0)!important;
}
.help-tip.tip-open::before{
  opacity:1!important;
  visibility:visible!important;
}
.form-section,.card,.mobile-card,label{overflow:visible}
@media(max-width:650px){
  .help-tip::after{
    left:auto!important;
    right:-8px!important;
    transform:translateY(3px)!important;
    width:min(300px,calc(100vw - 42px))!important;
  }
  .help-tip:hover::after,
  .help-tip:focus::after,
  .help-tip:focus-visible::after,
  .help-tip.tip-open::after{
    transform:translateY(0)!important;
  }
  .help-tip::before{
    left:auto;
    right:2px;
    transform:none;
  }
}


/* ============================================================
   KINTAI v0.4.0 — UI aprobada / responsive
   ============================================================ */
:root{
  --navy:#0f2747;--navy-2:#16375f;--blue:#0b84ff;--blue-2:#0a6fe8;
  --surface:#ffffff;--canvas:#f4f7fb;--text:#10213a;--muted2:#708198;
  --border:#dfe7f1;--green:#18b663;--amber:#f59e0b;--red:#ef4056;
  --purple:#7755e8;--cyan:#14a6c8;--soft-blue:#eef6ff;
  --shadow-lg:0 14px 38px rgba(29,52,82,.09);--shadow-sm:0 5px 18px rgba(29,52,82,.06);
}
html{overflow-x:hidden}
body.kintai-staff,body.kintai-employee{background:var(--canvas);color:var(--text);overflow-x:hidden}
body.kintai-staff *{min-width:0}
.ui-icon{width:20px;height:20px;display:inline-block;vertical-align:middle;flex:none}
.btn .ui-icon,.text-link .ui-icon,.context-nav .ui-icon{width:17px;height:17px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:42px;border-radius:10px;padding:10px 15px}
.btn.primary{background:linear-gradient(135deg,var(--blue),var(--blue-2));box-shadow:0 7px 16px rgba(11,132,255,.2)}
.btn.soft{background:#f1f6fc;color:#24456c;border:1px solid #dbe6f2}
.btn.ghost{background:transparent;color:#42566f;border:0}
.btn:hover{filter:brightness(.985)}
.app-shell{min-height:100dvh;display:grid;grid-template-columns:238px minmax(0,1fr)}
.app-sidebar{position:fixed;inset:0 auto 0 0;width:238px;background:linear-gradient(180deg,#102c4e 0%,#0e223d 100%);color:#d9e5f3;z-index:80;display:flex;flex-direction:column;padding:16px 13px calc(18px + env(safe-area-inset-bottom));box-shadow:8px 0 24px rgba(15,39,71,.08)}
.sidebar-brand{height:68px;display:flex;align-items:center;gap:11px;padding:0 8px 16px;border-bottom:1px solid rgba(255,255,255,.09)}
.sidebar-brand .brand-symbol{width:39px;height:39px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle,#1e95ff 0 30%,transparent 31%),linear-gradient(135deg,#138cff,#4b5cff);box-shadow:0 0 0 4px rgba(39,142,255,.13)}
.sidebar-brand .brand-symbol .ui-icon{width:27px;height:27px}
.sidebar-brand strong{display:block;color:#fff;font-size:22px;letter-spacing:.04em}.sidebar-brand small{display:block;font-size:9px;color:#a9bed5;margin-top:2px}
.sidebar-close{display:none;margin-left:auto;border:0;background:none;color:#fff;padding:8px}
.sidebar-nav{display:grid;gap:5px;padding-top:18px}
.sidebar-link{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:9px;color:#d5e1ef;font-size:13px;font-weight:600;transition:.15s}
.sidebar-link:hover{background:rgba(255,255,255,.07);color:#fff}
.sidebar-link.active{background:linear-gradient(135deg,#168cff,#0879ec);color:#fff;box-shadow:0 8px 20px rgba(0,119,240,.23)}
.sidebar-link-icon{width:24px;display:grid;place-items:center}.sidebar-link-icon .ui-icon{width:19px;height:19px}
.sidebar-footer{margin-top:auto;padding:18px 10px 3px;color:#8fa9c5}.sidebar-footer strong{display:block;font-size:18px;color:#81a5c8;margin-top:14px}.sidebar-footer small{display:block;font-size:9px;line-height:1.3}.sidebar-version{font-size:10px}
.app-workspace{grid-column:2;min-width:0;min-height:100dvh}
.workspace-topbar{height:68px;position:sticky;top:0;z-index:50;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:1px solid #e5edf5;display:flex;align-items:center;justify-content:space-between;padding:0 22px}
.topbar-left,.topbar-actions{display:flex;align-items:center;gap:10px}
.sidebar-toggle{display:none;background:none;border:0;padding:9px;border-radius:9px;color:#294765}
.global-search{width:min(390px,34vw);height:39px;background:#f3f6fa;border:1px solid #e5ebf2;border-radius:9px;display:flex;align-items:center;gap:8px;padding:0 12px}
.global-search .ui-icon{width:17px;height:17px;color:#60748b}.global-search input{border:0!important;outline:0!important;background:transparent!important;margin:0!important;padding:0!important;font-size:13px}
.topbar-module{font-weight:800;color:#304761}
.icon-action{width:38px;height:38px;border:0;background:transparent;border-radius:10px;display:grid;place-items:center;color:#294765;cursor:pointer}
.icon-action:hover{background:#f0f5fb}.icon-action .ui-icon{width:20px;height:20px}
.staff-chip{display:flex;align-items:center;gap:9px;border-left:1px solid #e4eaf1;padding-left:12px;margin-left:4px}.staff-chip-text strong,.staff-chip-text span{display:block}.staff-chip-text strong{font-size:12px}.staff-chip-text span{font-size:10px;color:#6f8196;margin-top:2px}
.staff-avatar,.avatar-xs,.avatar-sm,.avatar-xl,.employee-avatar-lg{display:inline-grid;place-items:center;border-radius:50%;overflow:hidden;background:linear-gradient(135deg,#d9e7f7,#eff5fb);color:#43617f;font-weight:800;flex:none;border:2px solid #fff;box-shadow:0 2px 8px rgba(24,55,88,.1)}
.staff-avatar{width:36px;height:36px;font-size:11px}.avatar-xs{width:32px;height:32px;font-size:10px}.avatar-sm{width:42px;height:42px;font-size:12px}.avatar-xl{width:116px;height:116px;font-size:32px}.employee-avatar-lg{width:70px;height:70px;font-size:20px}
.has-photo img{width:100%;height:100%;object-fit:cover;display:block}
.workspace-main{width:min(100%,1500px);margin:0 auto;padding:22px 24px 40px}
.context-nav{margin:0 0 12px;gap:8px}.context-nav a{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border-radius:7px}.context-nav a:hover{background:#eaf1f8}
.alert{box-shadow:var(--shadow-sm);border:1px solid transparent}
.eyebrow{font-size:10px;font-weight:900;letter-spacing:.13em;color:#4e6d91;margin-bottom:4px}
.dashboard-heading,.module-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:4px 0 18px}
.dashboard-heading h1,.module-heading h1{margin:0;color:#102c55;font-size:27px;letter-spacing:-.025em}.dashboard-heading p,.module-heading p{margin:5px 0 0;color:#667c96;font-size:13px}
.module-heading{justify-content:flex-start}.module-title-icon{width:44px;height:44px;border-radius:11px;background:#edf6ff;color:#087af0;display:grid;place-items:center}.module-title-icon .ui-icon{width:26px;height:26px}.module-title-copy{flex:1}.module-heading-actions{display:flex;gap:8px;flex-wrap:wrap}
.date-control{display:flex;align-items:end;gap:8px}.date-control label{margin:0;color:#6d8098;font-size:10px}.date-control input{margin-top:3px;min-width:145px}
.kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}
.kpi-card{position:relative;overflow:hidden;background:#fff;border:1px solid var(--border);border-radius:11px;padding:13px;min-height:92px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-sm)}
.kpi-card::after{content:"";position:absolute;inset:auto 0 0;height:3px;background:var(--kpi)}
.kpi-icon{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;color:#fff;background:var(--kpi);flex:none}.kpi-icon .ui-icon{width:23px;height:23px}
.kpi-card div>span,.kpi-card small{display:block}.kpi-card div>span{font-size:10px;font-weight:750;color:#425a75}.kpi-card strong{display:block;font-size:25px;line-height:1;margin:4px 0;color:#142c4c}.kpi-card small{font-size:9px;color:#7790aa}.kpi-green{--kpi:#18b663}.kpi-blue{--kpi:#1689f8}.kpi-amber{--kpi:#f5a20b}.kpi-red{--kpi:#ef4056}.kpi-purple{--kpi:#7755e8}
.dashboard-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:13px}.panel-span-7{grid-column:span 7}.panel-span-5{grid-column:span 5}
.panel{background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-sm);padding:16px;margin:0;overflow:visible}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:11px}.panel-head h2{font-size:15px;color:#163b6d;margin:0;display:flex;align-items:center;gap:7px}.panel-head h2 .ui-icon{color:#0a7ff2;width:19px;height:19px}.panel-head p{font-size:10px;color:#8190a2;margin:3px 0 0}.text-link{font-size:10px;font-weight:800;color:#0a79ea;display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
.modern-table{font-size:11px;table-layout:auto}.modern-table th{font-size:9px;color:#6e7f93;padding:8px 7px;background:#f8fafc}.modern-table td{padding:9px 7px;overflow-wrap:anywhere;word-break:normal}.modern-table tr:last-child td{border-bottom:0}
.person-cell{display:flex;align-items:center;gap:9px;min-width:175px}.person-cell>div{min-width:0}.person-cell strong,.person-cell span{display:block}.person-cell strong{font-size:11px;white-space:normal}.person-cell span,.cell-sub{font-size:9px;color:#7b8ca1;margin-top:2px;display:block}.cell-main{display:block;font-size:10px;font-weight:700}
.status-pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:4px 8px;font-size:9px;font-weight:750;white-space:nowrap;background:#eef2f7;color:#546579}.status-pill::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.status-present,.status-break,.status-overtime{background:#e9fbf1;color:#159852}.status-remote{background:#eaf4ff;color:#1682ef}.status-authorized{background:#fff5dc;color:#a76b00}.status-absent{background:#ffecef;color:#d83148}.status-finished{background:#eef6ff;color:#3475b9}.status-pending{background:#f1f3f6;color:#6a7787}
.gps-link{color:#0a7ff2;display:inline-flex;align-items:center;gap:3px;font-size:9px}.gps-link .ui-icon{width:13px;height:13px}
.process-flow{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.process-step{position:relative;text-align:center;padding:9px 5px;border-radius:9px;background:#f7faff;border:1px solid #e6eef7;display:grid;justify-items:center;gap:4px;min-height:84px}.process-step:hover{border-color:#aed3fb;background:#eef7ff}.step-number{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#dceeff;color:#0b77e7;font-size:10px;font-weight:900}.step-icon{display:none}.process-step strong{font-size:9px;line-height:1.15;color:#2c4d74}
.request-tabs{display:flex;gap:18px;border-bottom:1px solid #e9eef4;margin-bottom:5px}.request-tabs span{padding:5px 0;font-size:9px;color:#55708e}.request-tabs b{color:#0a80ef}.request-list{display:grid}.request-row{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #edf1f5}.request-row:last-child{border:0}.request-row strong,.request-row span{display:block}.request-row strong{font-size:10px}.request-row div>span{font-size:9px;color:#7c8da1;margin-top:2px}.mini-status{font-size:8px!important;background:#fff4d5;color:#9b6705!important;padding:4px 7px;border-radius:999px}
.mini-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.mini-kpis>div{border:1px solid #e6edf5;border-radius:9px;padding:10px 7px;text-align:center;background:#f7fcf8}.mini-kpis span,.mini-kpis strong{display:block}.mini-kpis span{font-size:8px;color:#5f7185}.mini-kpis strong{font-size:15px;color:#167346;margin-top:3px}.mini-kpis .orange{background:#fff8e9}.mini-kpis .orange strong{color:#da8110}.mini-kpis .red{background:#fff1f2}.mini-kpis .red strong{color:#df3349}.mini-kpis .purple{background:#f5f1ff}.mini-kpis .purple strong{color:#7556d7}.mini-kpis .rose{background:#fff1f5}.mini-kpis .rose strong{color:#cf4062}
.panel-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.empty-state{display:grid;place-items:center;text-align:center;padding:18px;color:#7b8ba0}.empty-state .ui-icon{width:28px;height:28px;color:#87a1bd}.empty-state strong{font-size:12px;color:#405671;margin-top:6px}.empty-state span{font-size:10px}.empty-state.wide{min-height:145px}
.employee-editor{padding:0}.editor-tabs{display:flex;gap:2px;border-bottom:1px solid #e5edf5;padding:0 16px;overflow:auto;scrollbar-width:none}.editor-tabs::-webkit-scrollbar{display:none}.editor-tab{border:0;background:transparent;padding:14px 13px 12px;color:#536a84;display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800;white-space:nowrap;border-bottom:2px solid transparent}.editor-tab.active{color:#087cf0;border-bottom-color:#087cf0}.editor-tab .ui-icon{width:16px;height:16px}
.editor-pane{display:none;padding:16px}.editor-pane.active{display:block}.profile-grid{display:grid;grid-template-columns:145px minmax(0,1fr) 225px;gap:14px;align-items:start}.photo-card{display:grid;justify-items:center;gap:9px;padding:8px}.photo-preview-wrap{width:120px;height:120px;display:grid;place-items:center}.photo-preview-wrap .avatar-xl{width:116px;height:116px}.photo-upload-btn{background:#0a82f6;color:#fff;font-size:10px;min-height:34px;padding:7px 11px}.photo-help{font-size:8px;color:#8a9aab;text-align:center}.subtle-check{font-size:9px!important;font-weight:500!important;color:#6c7c8f}
.form-card{border:1px solid #dfe7f1;border-radius:10px;padding:13px;margin-bottom:11px;background:#fff}.form-card-blue{background:linear-gradient(180deg,#f9fcff,#fff);border-color:#cfe5fb}.form-card-violet{background:linear-gradient(180deg,#fbfaff,#fff);border-color:#ddd8ff}.form-card-green{background:linear-gradient(180deg,#f8fff9,#fff);border-color:#d6f0dc}.form-card-amber{background:linear-gradient(180deg,#fffdf6,#fff);border-color:#f6e3af}
.form-card-title{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:850;color:#1555a0;margin-bottom:6px}.form-card-title .ui-icon{width:17px;height:17px}.notes-card textarea{min-height:90px}
.profile-status-card{background:linear-gradient(180deg,#f4fff7,#fff);border:1px solid #ccebd6;border-radius:10px;padding:13px;position:sticky;top:90px}.status-card-head{display:flex;justify-content:space-between;gap:7px;align-items:center;color:#178046;font-size:11px;font-weight:850;margin-bottom:12px}.status-card-head>span:first-child{display:flex;align-items:center;gap:6px}.status-data{padding:8px 0;border-bottom:1px solid #edf3ef}.status-data span,.status-data strong{display:block}.status-data span{font-size:8px;color:#71828f}.status-data strong{font-size:10px;margin-top:2px}.switch-row{display:flex!important;align-items:center!important;justify-content:space-between;gap:8px;font-size:10px!important;margin:12px 0!important}.switch-row input{position:absolute;opacity:0;width:1px}.switch-ui{width:38px;height:21px;border-radius:999px;background:#cbd5df;position:relative;transition:.2s;flex:none}.switch-ui::after{content:"";width:17px;height:17px;border-radius:50%;background:#fff;position:absolute;left:2px;top:2px;box-shadow:0 1px 4px rgba(0,0,0,.2);transition:.2s}.switch-row input:checked+.switch-ui{background:#18b663}.switch-row input:checked+.switch-ui::after{transform:translateX(17px)}
.access-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modern-linked{background:#f7faff;border:1px solid #dfeaf5}
.editor-actions{display:flex;justify-content:flex-end;gap:8px;padding:13px 16px;border-top:1px solid #e5edf5;background:#fbfcfe;border-radius:0 0 12px 12px}
.employee-list-panel{margin-top:14px}.employee-list-head{align-items:flex-end}.employee-search-controls{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.search-field{height:38px;min-width:290px;display:flex;align-items:center;gap:7px;background:#f5f8fb;border:1px solid #e0e8f0;border-radius:9px;padding:0 10px}.search-field .ui-icon{width:15px;height:15px;color:#6d8198}.search-field input{border:0!important;background:transparent!important;padding:0!important;margin:0!important;outline:0!important;font-size:11px}.employee-search-controls select{width:auto;min-width:120px;margin:0;padding:9px;font-size:10px}.employee-search-controls .btn{min-height:38px;font-size:10px}
.row-actions{display:flex;gap:7px;flex-wrap:wrap}.row-actions a{font-size:10px;color:#0a79ea;font-weight:700}
.pagination-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:12px;color:#74879b;font-size:10px}.pagination{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.page-link{min-width:30px;height:30px;border:1px solid #dce5ef;border-radius:7px;display:grid;place-items:center;background:#fff;font-size:10px;color:#47617d}.page-link.active{background:#0a80ef;color:#fff;border-color:#0a80ef}.page-link.disabled{opacity:.4;pointer-events:none}.page-gap{padding:0 3px}
label{overflow:visible}.form-card label{font-size:10px;color:#384f69;margin:9px 0;font-weight:700}.form-card input,.form-card select,.form-card textarea{font-size:11px;border-color:#cfdae6;background:rgba(255,255,255,.94);min-height:38px;padding:8px 10px}.form-card input:focus,.form-card select:focus,.form-card textarea:focus{outline:2px solid rgba(11,132,255,.18);border-color:#7ebaff}
.grid2>*,.grid3>*,.dashboard-grid>*,.profile-grid>*,.access-grid>*{min-width:0}
.card,.panel,.form-card,.catalog-card,.quick-card,.mobile-card{overflow-wrap:anywhere;word-break:normal}
.table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-wrap table{min-width:650px}.dashboard-table-wrap table{min-width:620px}
th,td{max-width:360px}
.sidebar-overlay{display:none}

.employee-appbar{position:sticky;top:0;z-index:60;display:flex;align-items:center;justify-content:space-between;height:58px;padding:0 max(14px,env(safe-area-inset-left)) 0 max(14px,env(safe-area-inset-right));background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid #e4edf5}.employee-brand{display:flex;align-items:center;gap:7px;color:#15365f}.employee-brand .brand-symbol{width:28px;height:28px;border-radius:50%;background:#0b83f7;color:#fff;display:grid;place-items:center}.employee-brand .brand-symbol .ui-icon{width:18px;height:18px}.employee-appbar-right{display:flex;align-items:center;gap:8px;font-size:10px;color:#55708c}.employee-appbar-right a{width:32px;height:32px;display:grid;place-items:center;border-radius:8px;background:#f2f6fa}
.kintai-employee .mobile-shell{max-width:560px;margin:0 auto;padding:14px 12px calc(84px + env(safe-area-inset-bottom));background:#f4f7fb;min-height:calc(100dvh - 58px)}
.employee-hero{background:#fff;border:1px solid #e0e8f0;border-radius:14px;box-shadow:var(--shadow-sm);padding:14px;margin-bottom:12px}.employee-hero-profile{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center}.employee-hero-profile h1{font-size:17px;margin:2px 0}.employee-hero-profile p{font-size:10px;color:#71849a;margin:0}.employee-hero-profile .eyebrow{font-size:8px}
.mobile-schedule-card{margin-top:12px;border-radius:11px;background:linear-gradient(135deg,#edf7ff,#f7fbff);border:1px solid #d6e9fb;padding:11px}.mobile-schedule-title{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10px;color:#28639e}.mobile-schedule-title>span{display:flex;align-items:center;gap:5px;font-weight:800}.mobile-schedule-title .ui-icon{width:15px;height:15px}.mobile-schedule-title strong{font-size:9px}.mobile-schedule-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:9px}.mobile-schedule-grid>div{text-align:center;border-right:1px solid #d8e7f5}.mobile-schedule-grid>div:last-child{border:0}.mobile-schedule-grid span,.mobile-schedule-grid strong{display:block}.mobile-schedule-grid span{font-size:8px;color:#6f8298}.mobile-schedule-grid strong{font-size:12px;margin-top:2px}
.kintai-employee .mobile-card{border-radius:14px;border-color:#e0e8f0;padding:14px;box-shadow:var(--shadow-sm)}.kintai-employee .mobile-card h2{font-size:14px;color:#153c6a}.kintai-employee .punch{min-height:52px;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px}.kintai-employee .punch.start{background:#18b663;border-color:#18b663}.kintai-employee .punch.meal-out{background:#ff941c;color:#fff;border-color:#ff941c}.kintai-employee .punch.meal-return{background:#1689f8;color:#fff;border-color:#1689f8}.kintai-employee .punch.end{background:#ef4056;color:#fff;border-color:#ef4056}.kintai-employee .punch.overtime{background:#7857e6;color:#fff;border-color:#7857e6}
.employee-bottom-nav{position:fixed;z-index:70;bottom:0;left:50%;transform:translateX(-50%);width:min(560px,100%);height:calc(62px + env(safe-area-inset-bottom));padding:5px 9px env(safe-area-inset-bottom);background:rgba(255,255,255,.97);backdrop-filter:blur(12px);border-top:1px solid #dde7f0;display:grid;grid-template-columns:repeat(4,1fr);box-shadow:0 -8px 24px rgba(34,63,94,.06)}.employee-bottom-nav a{display:grid;place-items:center;align-content:center;gap:2px;color:#6e8197;font-size:8px;border-radius:9px}.employee-bottom-nav a.active{color:#0a7ff2}.employee-bottom-nav .ui-icon{width:18px;height:18px}

@media(max-width:1180px){
  .kpi-grid{grid-template-columns:repeat(3,1fr)}
  .panel-span-7,.panel-span-5{grid-column:span 12}
  .profile-grid{grid-template-columns:130px minmax(0,1fr)}
  .profile-status-card{grid-column:1/-1;position:static;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.status-card-head,.switch-row{grid-column:1/-1}
}
@media(max-width:900px){
  .app-shell{display:block}.app-workspace{display:block}.app-sidebar{transform:translateX(-102%);transition:transform .22s ease;width:min(290px,86vw)}body.sidebar-open .app-sidebar{transform:translateX(0)}
  .sidebar-overlay{display:block;position:fixed;inset:0;background:rgba(8,25,45,.45);z-index:75;opacity:0;visibility:hidden;transition:.2s}body.sidebar-open .sidebar-overlay{opacity:1;visibility:visible}.sidebar-close,.sidebar-toggle{display:grid;place-items:center}
  .workspace-topbar{height:62px;padding:0 12px}.workspace-main{padding:16px 12px 30px}.global-search{width:min(420px,58vw)}.staff-chip-text{display:none}.logout-action{display:none}
  .kpi-grid{grid-template-columns:repeat(2,1fr)}.dashboard-heading,.module-heading{align-items:flex-start;flex-wrap:wrap}.date-control{width:100%}.date-control label{flex:1}.date-control input{width:100%}
  .profile-grid{grid-template-columns:1fr}.photo-card{grid-template-columns:auto 1fr;justify-items:start;align-items:center}.photo-help,.subtle-check{grid-column:2}.profile-status-card{grid-template-columns:1fr 1fr}
  .access-grid{grid-template-columns:1fr}.employee-list-head{align-items:flex-start;flex-direction:column}.employee-search-controls{width:100%}.search-field{flex:1;min-width:220px}
}
@media(max-width:640px){
  .workspace-main{padding-left:10px;padding-right:10px}.global-search{display:none}.topbar-actions{gap:3px}.icon-action{width:34px;height:34px}.staff-chip{border:0;padding-left:2px}.staff-avatar{width:32px;height:32px}
  .dashboard-heading h1,.module-heading h1{font-size:22px}.module-title-icon{width:38px;height:38px}.module-heading-actions{width:100%}.module-heading-actions .btn{flex:1}
  .kpi-grid{grid-template-columns:1fr 1fr;gap:8px}.kpi-card{min-height:78px;padding:10px}.kpi-icon{width:36px;height:36px}.kpi-card strong{font-size:21px}.kpi-card small{display:none}
  .panel{padding:12px}.panel-head{align-items:flex-start}.text-link{font-size:9px}.process-flow{grid-template-columns:repeat(2,1fr)}.mini-kpis{grid-template-columns:repeat(2,1fr)}
  .editor-tabs{padding:0 8px}.editor-tab{padding:12px 10px;font-size:10px}.editor-pane{padding:11px}.photo-card{grid-template-columns:1fr;justify-items:center}.photo-help,.subtle-check{grid-column:auto}.profile-status-card{grid-template-columns:1fr 1fr}
  .grid2,.grid3{grid-template-columns:1fr}.employee-search-controls{display:grid;grid-template-columns:1fr auto}.search-field{grid-column:1/-1;min-width:0}.employee-search-controls select{width:100%}
  .pagination-row{align-items:flex-start;flex-direction:column}.pagination{max-width:100%}.page-link{min-width:32px}
  input,select,textarea{font-size:16px!important} /* evita zoom automático en iOS */
  .btn,.sidebar-link,.icon-action{touch-action:manipulation}
  .table-wrap{margin-left:-2px;margin-right:-2px}.employee-table{min-width:760px}
  .employee-hero-profile{grid-template-columns:auto 1fr}.employee-hero-profile>.status-pill{grid-column:2;justify-self:start}.employee-avatar-lg{width:58px;height:58px}.mobile-schedule-grid strong{font-size:11px}
}
@media(max-width:420px){
  .kpi-grid{grid-template-columns:1fr}.kpi-card small{display:block}.profile-status-card{grid-template-columns:1fr}.status-card-head,.switch-row{grid-column:auto}
}

/* v0.4.0.1 — tooltips discretos */
.kintai-global-tooltip{display:none!important}
.help-tip{
  width:17px!important;height:17px!important;
  font-size:10px!important;
  background:#f1f5f9!important;
  border-color:#cbd5e1!important;
  color:#52708f!important;
  cursor:pointer!important;
}
.help-tip:hover{background:#e8eef5!important;color:#294c70!important}
.help-tip:not(.tip-open)::after,
.help-tip:not(.tip-open)::before{opacity:0!important;visibility:hidden!important}

/* Guardar siempre visible */
.sticky-editor-actions{
  position:sticky;
  bottom:0;
  z-index:35;
  display:flex;
  align-items:center;
  gap:10px;
  background:rgba(251,252,254,.97);
  backdrop-filter:blur(10px);
  box-shadow:0 -10px 24px rgba(24,55,88,.06);
  padding-bottom:max(13px,env(safe-area-inset-bottom));
}
.editor-save-hint{margin-right:auto;min-width:0}
.editor-save-hint strong,.editor-save-hint span{display:block}
.editor-save-hint strong{font-size:11px;color:#27496d}
.editor-save-hint span{font-size:9px;color:#7b8b9e;margin-top:2px}
.photo-save-note{color:#57718f!important}
#employee-photo-status{max-width:150px;line-height:1.35}
@media(max-width:640px){
  .sticky-editor-actions{flex-wrap:wrap}
  .editor-save-hint{width:100%}
  .sticky-editor-actions .btn{flex:1}
}

/* ============================================================
   KINTAI v0.4.0.2 — Dashboard alineado al sketch aprobado
   ============================================================ */

.dashboard-heading-approved{
  min-height:84px;
  margin:0 0 14px;
  align-items:center;
}
.dashboard-title-group{
  display:flex;
  align-items:center;
  gap:14px;
  min-width:0;
}
.dashboard-title-icon{
  width:46px;
  height:46px;
  border-radius:13px;
  display:grid;
  place-items:center;
  flex:0 0 auto;
  color:#0b82f5;
  background:linear-gradient(135deg,#eef7ff,#e5f2ff);
  border:1px solid #d7eaff;
}
.dashboard-title-icon .ui-icon{
  width:27px;
  height:27px;
}
.dashboard-heading-approved h1{
  font-size:26px;
  line-height:1.08;
}
.dashboard-heading-approved p{
  max-width:680px;
}
.dashboard-date-control{
  align-items:center;
  padding:8px 10px;
  background:#fff;
  border:1px solid #e1e8f0;
  border-radius:12px;
  box-shadow:0 5px 18px rgba(29,52,82,.05);
}
.dashboard-date-control label{
  min-width:165px;
}
.dashboard-date-control input{
  min-width:160px;
  height:38px;
}
.dashboard-date-control .btn{
  height:38px;
  min-height:38px;
}

.kpi-grid{
  gap:11px;
  margin-bottom:14px;
}
.kpi-card{
  min-height:96px;
  padding:14px 15px;
  justify-content:flex-start;
}
.kpi-card>div{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-height:62px;
}
.kpi-card div>span{
  font-size:11px;
  line-height:1.15;
  min-height:13px;
}
.kpi-card strong{
  font-size:28px;
  line-height:1;
  margin:4px 0 5px;
}
.kpi-card small{
  font-size:9px;
  line-height:1.25;
  min-height:22px;
}
.kpi-icon{
  width:46px;
  height:46px;
}
.kpi-icon .ui-icon{
  width:25px;
  height:25px;
}

.dashboard-grid{
  gap:14px;
  align-items:stretch;
}
.dashboard-grid>.panel{
  height:100%;
}
.dashboard-attendance-panel,
.dashboard-flow-panel{
  min-height:315px;
}
.dashboard-requests-panel,
.dashboard-payroll-panel{
  min-height:205px;
}
.dashboard-attendance-panel{
  display:flex;
  flex-direction:column;
}
.dashboard-attendance-panel .dashboard-table-wrap{
  flex:1;
}
.dashboard-flow-panel{
  display:flex;
  flex-direction:column;
}
.dashboard-flow-panel .process-flow{
  flex:1;
  align-content:center;
}
.dashboard-requests-panel,
.dashboard-payroll-panel{
  display:flex;
  flex-direction:column;
}
.dashboard-requests-panel .request-list,
.dashboard-payroll-panel .mini-kpis,
.dashboard-payroll-panel .empty-state{
  flex:1;
}

.panel-head{
  min-height:44px;
  margin-bottom:10px;
}
.panel-head>div{
  min-width:0;
}
.panel-head h2{
  line-height:1.2;
}
.panel-head p{
  line-height:1.3;
}

.dashboard-table-wrap{
  display:flex;
  align-items:stretch;
}
.dashboard-table-wrap .modern-table{
  width:100%;
}
.dashboard-table-wrap .modern-table th{
  vertical-align:middle;
  height:34px;
}
.dashboard-table-wrap .modern-table td{
  vertical-align:middle;
  height:48px;
}
.dashboard-table-wrap .modern-table th:not(:first-child),
.dashboard-table-wrap .modern-table td:not(:first-child){
  text-align:center;
}
.dashboard-table-wrap .person-cell{
  text-align:left;
}

.process-flow{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:9px;
  align-items:stretch;
}
.process-step{
  min-height:92px;
  height:100%;
  padding:10px 7px;
  align-content:center;
  justify-content:center;
}
.step-number{
  width:27px;
  height:27px;
  font-size:11px;
}
.process-step strong{
  font-size:10px;
  line-height:1.2;
  min-height:24px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  max-width:110px;
}

.request-tabs{
  min-height:30px;
  align-items:center;
}
.request-list{
  align-content:start;
}
.request-row{
  min-height:45px;
}
.empty-state{
  align-self:stretch;
  justify-content:center;
  min-height:118px;
}

.payroll-mini-panel .panel-head{
  margin-bottom:12px;
}
.mini-kpis{
  align-items:stretch;
}
.mini-kpis>div{
  min-height:72px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
}
.mini-kpis span{
  min-height:20px;
  display:flex;
  align-items:center;
  justify-content:center;
}
.mini-kpis strong{
  font-size:16px;
}

@media(max-width:1180px){
  .dashboard-heading-approved{
    align-items:flex-start;
  }
  .dashboard-date-control{
    margin-left:auto;
  }
  .dashboard-attendance-panel,
  .dashboard-flow-panel,
  .dashboard-requests-panel,
  .dashboard-payroll-panel{
    min-height:auto;
  }
}

@media(max-width:900px){
  .dashboard-heading-approved{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
  }
  .dashboard-date-control{
    width:100%;
    margin-left:0;
  }
  .dashboard-date-control label{
    flex:1;
  }
  .dashboard-date-control input{
    width:100%;
  }
}

@media(max-width:640px){
  .dashboard-title-group{
    align-items:flex-start;
  }
  .dashboard-title-icon{
    width:40px;
    height:40px;
  }
  .dashboard-heading-approved h1{
    font-size:21px;
  }
  .dashboard-date-control{
    display:grid;
    grid-template-columns:1fr auto;
  }
  .kpi-card{
    min-height:88px;
  }
  .process-flow{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .process-step{
    min-height:86px;
  }
  .dashboard-table-wrap .modern-table th:not(:first-child),
  .dashboard-table-wrap .modern-table td:not(:first-child){
    text-align:left;
  }
}

/* v0.4.0.3 - Reporte completo de asistencia */
.attendance-day-summary{min-width:1050px}
.attendance-day-summary th,.attendance-day-summary td{text-align:center;vertical-align:middle}
.attendance-day-summary th:first-child,.attendance-day-summary td:first-child{text-align:left}
.attendance-day-summary .cell-sub{white-space:nowrap}
.btn.tiny{min-height:30px;padding:5px 8px;font-size:9px}
.incident-count{display:inline-grid;place-items:center;min-width:24px;height:24px;border-radius:999px;background:#ffe8ec;color:#d7354c;font-size:10px;font-weight:800}
.report-day-group{scroll-margin-top:86px}
.report-day-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:8px;padding:10px 0}
.report-day-heading h3{margin:0;font-size:15px;color:#21466f}.report-day-heading>div:first-child>span{display:block;color:#7b8da2;font-size:10px;margin-top:3px}
.day-timecard-strip{display:grid;grid-template-columns:repeat(6,minmax(72px,1fr));gap:6px;min-width:min(100%,600px)}
.day-timecard-strip>div{background:#f5f9fd;border:1px solid #e1eaf3;border-radius:8px;padding:7px;text-align:center}
.day-timecard-strip span,.day-timecard-strip strong{display:block}.day-timecard-strip span{font-size:8px;color:#75879a}.day-timecard-strip strong{font-size:10px;color:#254b73;margin-top:2px}
.report-event-icon{color:#fff}.report-event-icon .ui-icon{width:18px;height:18px}
.event-break_out .report-event-icon,.event-break_in .report-event-icon{background:#f59e0b}.event-shift_start .report-event-icon,.event-check_in .report-event-icon{background:#16a866}.event-shift_end .report-event-icon,.event-check_out .report-event-icon{background:#e74758}.event-ot_in .report-event-icon,.event-ot_out .report-event-icon{background:#7755e8}.event-site_in .report-event-icon,.event-site_out .report-event-icon{background:#1789ec}
.event-note{color:#9a6a0a!important;font-weight:650}
.report-event-gps strong{display:flex;align-items:center;justify-content:flex-end;gap:4px}.report-event-gps strong .ui-icon{width:14px;height:14px}
.person-cell-link{color:inherit}.person-cell-link:hover strong{color:#087cf0}
.dashboard-row-links{display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap}
.dashboard-row-links .gps-link{white-space:nowrap}
@media(max-width:900px){
  .report-day-heading{align-items:flex-start;flex-direction:column}
  .day-timecard-strip{width:100%;grid-template-columns:repeat(3,1fr)}
}
@media(max-width:640px){
  .day-timecard-strip{grid-template-columns:repeat(2,1fr)}
  .report-event{padding:11px 0}
  .report-event-gps strong{justify-content:flex-start}
  .dashboard-row-links{justify-content:flex-start}
}

/* ============================================================
   KINTAI v0.4.0.4 — pestañas de empleado independientes de JS
   ============================================================ */
.server-tabs .editor-tab{
  text-decoration:none;
  cursor:pointer;
  min-height:48px;
}
.server-tabs .editor-tab:hover{
  color:#087cf0;
  background:#f7fbff;
}
.server-tabs .editor-tab.active{
  background:#fbfdff;
}
.tab-meta{
  margin-left:5px;
  padding:2px 6px;
  border-radius:999px;
  background:#eef3f8;
  color:#70849a;
  font-size:8px;
  font-weight:700;
  max-width:135px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.editor-tab.active .tab-meta{
  background:#e6f3ff;
  color:#1479de;
}
.tab-intro-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:0 0 13px;
  padding:13px 15px;
  border:1px solid #dbe7f2;
  border-radius:11px;
  background:linear-gradient(135deg,#f8fbff,#fff);
}
.tab-intro-card h3{
  margin:1px 0 3px;
  font-size:15px;
  color:#173d69;
}
.tab-intro-card p{
  margin:0;
  color:#71849a;
  font-size:10px;
  line-height:1.4;
}
.current-schedule-chip{
  flex:0 0 auto;
  min-width:180px;
  padding:9px 11px;
  border-radius:9px;
  border:1px solid #d9e9f8;
  background:#edf7ff;
  text-align:right;
}
.current-schedule-chip span,
.current-schedule-chip strong,
.current-schedule-chip small{display:block}
.current-schedule-chip span{font-size:8px;color:#71889f}
.current-schedule-chip strong{font-size:11px;color:#1b5d9d;margin:2px 0}
.current-schedule-chip small{font-size:8px;color:#71889f}

@media(max-width:700px){
  .server-tabs{
    display:grid;
    grid-template-columns:1fr;
    gap:0;
    padding:0;
  }
  .server-tabs .editor-tab{
    width:100%;
    justify-content:flex-start;
    border-bottom:1px solid #e5edf5;
    min-height:44px;
  }
  .server-tabs .editor-tab.active{
    border-left:3px solid #087cf0;
    border-bottom-color:#e5edf5;
  }
  .tab-meta{margin-left:auto;max-width:115px}
  .tab-intro-card{align-items:flex-start;flex-direction:column}
  .current-schedule-chip{width:100%;min-width:0;text-align:left}
}

/* ============================================================
   KINTAI v0.4.0.5 — corrección acumulativa real
   ============================================================ */

/* Las pestañas se muestran por decisión del servidor.
   El style inline en employees.php tiene prioridad, pero esto
   mantiene una degradación predecible. */
.employee-editor .editor-pane{
  width:100%;
  min-height:260px;
}
.employee-editor .editor-pane.active{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
}

/* Evitar que un JS/caché anterior vuelva a ocultar el panel activo */
.employee-editor .editor-pane.active[style*="display:block"]{
  display:block!important;
}

/* Títulos e iconos con línea base y centro visual consistentes */
.form-card-title,
.panel-head h2,
.module-title-copy,
.status-card-head,
.tab-intro-card h3{
  line-height:1.25;
}
.form-card-title,
.panel-head h2,
.status-card-head{
  align-items:center!important;
}
.form-card-title .ui-icon,
.panel-head h2 .ui-icon,
.status-card-head .ui-icon{
  flex:0 0 auto;
}

/* Foto centrada y estable en ficha */
.photo-card{
  width:145px;
  margin-inline:auto;
  align-content:start;
  justify-items:center!important;
  text-align:center;
}
.photo-preview-wrap{
  margin-inline:auto;
}
.photo-preview-wrap .avatar-xl,
.photo-preview-wrap .has-photo{
  margin-inline:auto;
}
.photo-upload-btn{
  margin-inline:auto;
  justify-content:center;
}
.photo-help,
.photo-save-note,
.subtle-check{
  width:100%;
  text-align:center!important;
  justify-content:center;
}

/* Foto/nombre del dashboard: centrado vertical limpio */
.dashboard-person-cell{
  display:grid!important;
  grid-template-columns:42px minmax(0,1fr);
  align-items:center!important;
  column-gap:10px;
}
.dashboard-person-cell .avatar-sm{
  justify-self:center;
  align-self:center;
}
.dashboard-person-cell>div{
  align-self:center;
}
.dashboard-table-wrap .modern-table td:first-child{
  vertical-align:middle!important;
}

/* Encabezados de tablas centrados donde corresponde */
.dashboard-table-wrap .modern-table th{
  vertical-align:middle!important;
}
.dashboard-table-wrap .modern-table th:not(:first-child){
  text-align:center!important;
}

/* Pestañas con contenido visual claramente separado */
.tab-intro-card{
  min-height:78px;
}
.editor-pane[data-tab-pane="laboral"] .form-card,
.editor-pane[data-tab-pane="access"] .form-card{
  visibility:visible!important;
  opacity:1!important;
}

/* Mobile/tablet */
@media(max-width:900px){
  .photo-card{
    width:100%;
    max-width:220px;
  }
}
@media(max-width:640px){
  .employee-editor .editor-pane{
    min-height:180px;
  }
  .dashboard-person-cell{
    grid-template-columns:38px minmax(0,1fr);
  }
}

/* v0.4.0.6 - ficha empleado en páginas reales */
.employee-page-tabs{background:#fff;border:1px solid #dfe7f1;border-radius:12px;margin-bottom:14px;box-shadow:var(--shadow-sm)}
.editor-tab.disabled{opacity:.45;cursor:not-allowed}
.employee-subpage-form{display:block!important}
.employee-subpage-form>.panel{display:block!important;min-height:300px}
.labor-overview-panel,.access-overview-panel{padding:16px}
.schedule-editor-card{border-width:2px}
.schedule-emphasis-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px}
.schedule-main-field select{font-weight:800;color:#143e6f;border-color:#82bdf7}
.tab-intro-card{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#f7faff;border:1px solid #dce9f6;border-radius:10px;padding:12px 14px;margin-bottom:12px}
.tab-intro-card h3{font-size:15px;margin:2px 0;color:#173f6d}.tab-intro-card p{font-size:10px;color:#71859a;margin:3px 0 0}
.current-schedule-chip{min-width:190px;border-radius:9px;background:#fff;border:1px solid #dbe6f1;padding:9px 11px;text-align:right}.current-schedule-chip span,.current-schedule-chip strong,.current-schedule-chip small{display:block}.current-schedule-chip span{font-size:8px;color:#718397}.current-schedule-chip strong{font-size:11px;color:#17406d;margin:2px 0}.current-schedule-chip small{font-size:8px;color:#7c8da0}
@media(max-width:800px){.schedule-emphasis-grid{grid-template-columns:1fr}.tab-intro-card{align-items:flex-start;flex-direction:column}.current-schedule-chip{width:100%;text-align:left}}

/* v0.4.0.7 - editor real de horarios */
.schedule-module-heading{margin-bottom:14px}
.schedule-editor-form{display:block}
.schedule-editor-panel{padding:16px}
.schedule-intro-card{margin-bottom:14px}
.schedule-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.schedule-editor-grid>.schedule-times-card,
.schedule-editor-grid>.schedule-notes-card{grid-column:1/-1}
.schedule-times-card .shift-timeline{margin-bottom:10px}
.schedule-shift-timeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.schedule-shift-timeline label{position:relative}
.schedule-shift-timeline label>span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#10213a;color:#fff;font-size:10px;margin-bottom:5px}
.schedule-number-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.compact-switch{margin-top:10px!important}
.quick-schedule-create{margin-bottom:14px}
.schedule-list-panel{overflow:visible}
.schedule-table th,.schedule-table td{vertical-align:middle}
.schedule-table th:not(:first-child),.schedule-table td:not(:first-child){text-align:center}
.schedule-table td:first-child{text-align:left}
.schedule-days-text{font-size:10px;white-space:normal;color:#405a76}
.schedule-weekdays{grid-template-columns:repeat(7,minmax(72px,1fr))}
.schedule-weekdays .weekday-check{min-width:0}
@media(max-width:1000px){
  .schedule-editor-grid{grid-template-columns:1fr}
  .schedule-editor-grid>.schedule-times-card,
  .schedule-editor-grid>.schedule-notes-card{grid-column:auto}
  .schedule-shift-timeline{grid-template-columns:repeat(2,1fr)}
  .schedule-number-grid{grid-template-columns:repeat(2,1fr)}
  .schedule-weekdays{grid-template-columns:repeat(4,1fr)}
}
@media(max-width:640px){
  .schedule-editor-panel{padding:11px}
  .schedule-shift-timeline,.schedule-number-grid{grid-template-columns:1fr}
  .schedule-weekdays{grid-template-columns:repeat(2,1fr)}
}

/* v0.4.0.8 - fotos de perfil administrativo y reporte */
.admin-profile-photo-block{
  display:grid;
  grid-template-columns:110px minmax(0,1fr);
  gap:14px;
  align-items:center;
  padding:12px;
  margin:0 0 14px;
  border:1px solid #dfe8f1;
  border-radius:12px;
  background:#f8fbfe;
}
.admin-profile-photo-preview{
  display:grid;
  place-items:center;
}
.admin-avatar-xl{
  width:92px;
  height:92px;
  display:grid;
  place-items:center;
  border-radius:50%;
  overflow:hidden;
  background:linear-gradient(135deg,#dce9f7,#f3f7fb);
  color:#395a7d;
  font-size:24px;
  font-weight:800;
  border:3px solid #fff;
  box-shadow:0 4px 14px rgba(25,55,90,.12);
}
.admin-avatar-xl img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.admin-profile-photo-controls{
  display:grid;
  gap:7px;
  align-content:center;
}
.admin-profile-photo-controls>strong{
  font-size:12px;
  color:#254969;
}
.admin-user-person{
  min-width:190px;
}

/* top-right user avatar */
.staff-avatar{
  object-fit:cover;
}
.staff-chip .staff-avatar.has-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
}

/* report profile */
.attendance-profile-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
}
.attendance-profile-main{
  display:flex;
  align-items:center;
  gap:16px;
  min-width:0;
}
.attendance-profile-copy{
  min-width:0;
}
.attendance-report-avatar{
  width:82px;
  height:82px;
  flex:0 0 82px;
  display:grid;
  place-items:center;
  border-radius:50%;
  overflow:hidden;
  background:linear-gradient(135deg,#dce9f7,#f3f7fb);
  color:#395a7d;
  font-size:22px;
  font-weight:800;
  border:3px solid #fff;
  box-shadow:0 5px 16px rgba(25,55,90,.14);
}
.attendance-report-avatar img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.attendance-profile-copy h2{margin:2px 0 6px}
.attendance-profile-copy p{margin:0}
.attendance-profile-copy .small{margin-top:5px}

@media(max-width:760px){
  .admin-profile-photo-block{
    grid-template-columns:1fr;
    justify-items:center;
    text-align:center;
  }
  .admin-profile-photo-controls{
    justify-items:center;
  }
  .attendance-profile-header{
    align-items:flex-start;
    flex-direction:column;
  }
  .attendance-profile-main{width:100%}
  .attendance-profile-header .report-period{
    width:100%;
    text-align:left;
  }
  .attendance-report-avatar{
    width:66px;
    height:66px;
    flex-basis:66px;
  }
}

/* v0.4.0.9 - comparativo contratado/trabajado robusto */
.contract-kpis .report-kpi strong{font-variant-numeric:tabular-nums}
.contract-summary-grid strong,.contract-detail-grid strong{overflow-wrap:anywhere}
