:root{--ink:#111827;--muted:#667085;--line:#e4e7ec;--surface:#fff;--bg:#f2f4f7;--accent:#f59e0b;--green:#16834b;--blue:#175cd3;--red:#c43232;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg)}button,input,select,textarea{font:inherit}[hidden]{display:none!important}
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top right,rgba(245,158,11,.18),transparent 32rem),var(--bg)}.login-card{width:min(100%,440px);background:white;border:1px solid var(--line);border-radius:24px;padding:28px;box-shadow:0 18px 48px rgba(16,24,40,.12)}.logo-row,.side-brand,.dashboard-header,.panel-heading,.inline-actions,.header-actions,.detail-toolbar,.detail-person,.calendar-toolbar,.calendar-toolbar-actions{display:flex;align-items:center;gap:14px}.logo{width:46px;height:46px;border-radius:14px;background:var(--accent);display:grid;place-items:center;font-weight:900;flex:0 0 auto}.logo-row p,.logo-row h1{margin:0}.logo-row p,.kicker{font-size:11px;text-transform:uppercase;letter-spacing:.09em;font-weight:800;color:var(--muted);margin:0 0 4px}.login-card h1{font-size:24px}.muted{color:var(--muted);line-height:1.5;margin:4px 0 0}.panel-note{color:var(--muted);font-size:13px;margin:5px 0 0}.login-card form,.dialog-card{display:grid;gap:14px}.login-card form{margin-top:20px}.login-card label,.dialog-card label{display:grid;gap:7px;font-size:13px;font-weight:750;color:#344054}.login-card input,.dialog-card input,.dialog-card select,.dialog-card textarea,.date-control input,.panel select{border:1px solid #d0d5dd;border-radius:11px;padding:11px;background:white;color:var(--ink)}
.button{border-radius:11px;padding:10px 14px;border:1px solid var(--line);font-weight:750;cursor:pointer}.button.primary{background:var(--ink);border-color:var(--ink);color:white}.button.secondary{background:white;color:var(--ink)}.full{width:100%}.error{color:var(--red);font-size:13px;font-weight:700;margin:0}.demo-box{margin:16px 0;padding:12px;border-radius:12px;background:#f9fafb;color:#475467;font-size:13px}.login-card a{display:block;text-align:center;color:var(--blue);font-weight:750;text-decoration:none}
#adminApp{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:245px;background:var(--ink);color:white;padding:22px 16px;display:flex;flex-direction:column}.side-brand{padding:0 8px 22px;border-bottom:1px solid #344054}.side-brand div:last-child{display:grid}.side-brand small{color:#98a2b3;margin-top:2px}.sidebar nav{display:grid;gap:7px;margin-top:22px}.nav-button{border:0;background:transparent;color:#d0d5dd;text-align:left;padding:12px 13px;border-radius:11px;font-weight:750;display:flex;justify-content:space-between;cursor:pointer}.nav-button.active,.nav-button:hover{background:#344054;color:white}.nav-badge{background:var(--accent);color:var(--ink);border-radius:99px;padding:2px 7px;font-size:11px}.side-footer{margin-top:auto;padding:16px 8px 0;border-top:1px solid #344054;display:grid;gap:8px;color:#d0d5dd}.side-footer button{justify-self:start;border:0;background:transparent;color:#fda29b;padding:0;font-weight:750;cursor:pointer}
.dashboard{margin-left:245px;padding:26px;min-height:100vh}.dashboard-header{justify-content:space-between;margin-bottom:22px}.dashboard-header h1{margin:0;font-size:28px}.date-control{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:750;color:var(--muted)}.stat-grid,.detail-stat-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:18px}.detail-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.stat-card{background:white;border:1px solid var(--line);border-radius:17px;padding:17px;box-shadow:0 8px 24px rgba(16,24,40,.05)}.stat-card span{display:block;color:var(--muted);font-size:12px;margin-bottom:7px}.stat-card strong{font-size:29px}.stat-card.attention{border-top:4px solid var(--accent)}
.panel{background:white;border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:0 8px 24px rgba(16,24,40,.05)}.panel-heading{justify-content:space-between;margin-bottom:16px}.panel-heading h2{margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:780px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:top}th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.person strong{display:block}.person small{color:var(--muted)}.employee-link,.employee-inline-link{border:0;background:transparent;padding:0;text-align:left;color:var(--ink);cursor:pointer}.employee-link strong{color:var(--blue)}.employee-link:hover strong,.employee-inline-link:hover{text-decoration:underline}.employee-inline-link{color:var(--blue);font-weight:750}.status{display:inline-flex;align-items:center;gap:6px;border-radius:99px;padding:6px 9px;font-size:11px;font-weight:800}.status.working,.status.approved,.status.worked{background:#dcfae6;color:#05603a}.status.break,.status.pending,.status.open{background:#fef0c7;color:#93370d}.status.off{background:#f2f4f7;color:#344054}.status.declined{background:#fee4e2;color:#912018}.dot{width:7px;height:7px;border-radius:50%;background:currentColor}.location-exception{color:var(--red);font-weight:750}.location-ok{color:var(--green)}.map-link{color:var(--blue);text-decoration:none;font-weight:700}
.correction-grid{display:grid;gap:12px}.correction-card{border:1px solid var(--line);border-radius:15px;padding:16px;display:grid;grid-template-columns:1fr auto;gap:16px}.correction-card h3{margin:0 0 5px}.correction-card p{margin:7px 0;color:#475467;line-height:1.45}.correction-meta{font-size:12px;color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:34px}.small-action{border:0;background:#f2f4f7;border-radius:9px;padding:8px 10px;font-weight:750;white-space:nowrap;cursor:pointer}.correction-change{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:8px;margin:14px 0}.correction-change>div{background:#f9fafb;border-radius:11px;padding:10px}.correction-change span{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.correction-change strong{font-size:13px}.corrected-label{color:var(--blue);font-weight:750;white-space:pre-line}.mini-badge{display:inline-block;margin-top:4px;border-radius:99px;padding:3px 7px;background:#eff8ff;color:var(--blue);font-size:10px;font-weight:800}
dialog{border:0;border-radius:20px;padding:0;width:min(calc(100% - 28px),500px);box-shadow:0 24px 80px rgba(16,24,40,.28)}dialog::backdrop{background:rgba(16,24,40,.65)}.dialog-card{padding:24px}.dialog-card h2{margin:0}.dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:5px}#reviewDetails{white-space:pre-line;background:#f9fafb;border-radius:12px;padding:12px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);opacity:0;background:var(--ink);color:white;padding:13px 16px;border-radius:12px;box-shadow:0 14px 34px rgba(16,24,40,.22);transition:.2s;z-index:50}.toast.show{opacity:1;transform:translate(-50%,0)}
.detail-toolbar{justify-content:space-between;margin-bottom:18px}.detail-person{margin-left:auto}.detail-person h2{margin:0}.detail-avatar{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:var(--ink);color:white;font-weight:850}.calendar-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,.85fr);gap:18px;align-items:start}.calendar-toolbar{justify-content:space-between;margin-bottom:16px}.calendar-toolbar h2{margin:0}.calendar-toolbar-actions{gap:8px}.icon-button{width:40px;height:40px;border:1px solid var(--line);border-radius:11px;background:white;font-size:24px;line-height:1;cursor:pointer}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.calendar-weekdays{margin-bottom:7px}.calendar-weekdays span{text-align:center;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.calendar-spacer{min-height:104px}.calendar-day{position:relative;min-height:104px;border:1px solid var(--line);border-radius:13px;background:#fff;padding:10px;text-align:left;display:flex;flex-direction:column;cursor:pointer;color:var(--ink)}.calendar-day:hover{border-color:#98a2b3}.calendar-day.selected{outline:3px solid rgba(23,92,211,.18);border-color:var(--blue)}.calendar-day.today .day-number{background:var(--ink);color:white}.calendar-day.worked{background:#dcfae6;border-color:#75e0a7}.calendar-day.open{background:#fef0c7;border-color:#fec84b}.calendar-day.off{background:#fafafa;color:#98a2b3}.day-number{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;font-size:12px;font-weight:850}.day-content{margin-top:auto;display:grid;gap:2px}.day-content strong{font-size:14px}.day-content small,.off-label{font-size:11px;color:var(--muted)}.day-indicators{position:absolute;top:10px;right:10px;display:flex;gap:4px}.day-indicator{width:7px;height:7px;border-radius:50%}.day-indicator.correction{background:var(--accent)}.day-indicator.exception{background:var(--red)}.day-indicator.approved{background:var(--blue)}.calendar-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:16px;color:var(--muted);font-size:12px}.calendar-legend span{display:flex;align-items:center;gap:6px}.legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.legend-dot.worked{background:var(--green)}.legend-dot.open{background:var(--accent)}.legend-dot.correction{background:var(--blue)}.legend-dot.exception{background:var(--red)}
.day-panel{position:sticky;top:20px}.day-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}.day-summary>div{border-radius:11px;background:#f9fafb;padding:11px}.day-summary span{display:block;color:var(--muted);font-size:11px;margin-bottom:4px}.day-summary strong{font-size:14px}.timeline{list-style:none;margin:0;padding:0;display:grid;gap:10px}.timeline li{display:grid;grid-template-columns:36px 1fr auto;gap:10px;align-items:start;padding:11px;border:1px solid var(--line);border-radius:13px}.timeline-symbol{width:36px;height:36px;border-radius:11px;background:#f2f4f7;display:grid;place-items:center;font-weight:850}.timeline-content strong{display:block;font-size:13px}.timeline-content small{display:block;color:var(--blue);margin:2px 0 4px}.timeline-content div{font-size:11px;color:var(--muted);line-height:1.4}.timeline time{font-size:12px;font-weight:800}.timeline-ok{color:var(--green);font-weight:750}.timeline-warning{color:#b54708;font-weight:750}.timeline-note{color:var(--blue);font-weight:750}
@media(max-width:1200px){.calendar-layout{grid-template-columns:1fr}.day-panel{position:static}.stat-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:1100px){.correction-change{grid-template-columns:repeat(3,minmax(120px,1fr))}.detail-stat-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{position:static;width:100%;padding:14px}.sidebar nav{display:flex;overflow:auto;margin-top:12px}.side-footer{display:none}.dashboard{margin-left:0;padding:16px}.dashboard-header{align-items:flex-start;flex-direction:column}.header-actions{width:100%;flex-wrap:wrap}.stat-grid{grid-template-columns:repeat(2,1fr)}.correction-card{grid-template-columns:1fr}.side-brand{padding-bottom:12px}.dashboard-header h1{font-size:24px}.detail-toolbar{align-items:flex-start;flex-direction:column}.detail-person{margin-left:0}.calendar-panel{padding:14px}.calendar-day,.calendar-spacer{min-height:86px}.calendar-day{padding:7px}.day-content small{display:none}.calendar-weekdays,.calendar-grid{gap:4px}.calendar-toolbar{align-items:flex-start}.calendar-toolbar-actions .button{display:none}}@media(max-width:650px){.correction-change{grid-template-columns:1fr 1fr}.calendar-day,.calendar-spacer{min-height:72px}.day-content strong{font-size:11px}.off-label{display:none}.detail-stat-grid{grid-template-columns:1fr 1fr}.stat-card strong{font-size:23px}.calendar-weekdays span{font-size:9px}}
.employee-actions{display:flex;flex-wrap:wrap;gap:7px}.small-action.danger{background:#fee4e2;color:#912018}.small-action.danger:hover{background:#fecdca}.status.inactive{background:#f2f4f7;color:#667085}.field-help{display:block;margin-top:5px;color:var(--muted);font-size:12px;font-weight:400}.employee-active-row{display:flex!important;align-items:center;gap:9px;margin:14px 0}.employee-active-row input{width:auto!important;margin:0}
.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.settings-form{display:grid;gap:14px}.settings-form label{display:grid;gap:7px;font-size:13px;font-weight:750;color:#344054}.settings-form input{border:1px solid #d0d5dd;border-radius:11px;padding:11px;background:white;color:var(--ink)}.settings-form .button{justify-self:start}.danger-panel{border-top:4px solid var(--red)}.danger-button{background:var(--red);border-color:var(--red);color:white}.record-actions{display:flex;flex-direction:column;gap:8px;align-items:stretch}.correction-card .record-actions{min-width:92px}.timeline-delete{margin-top:6px}.settings-form .error{margin:0}
@media(max-width:900px){.settings-grid{grid-template-columns:1fr}}

/* v11 work-week, overtime, early starts and location detail */
.stat-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.detail-stat-grid-five{grid-template-columns:repeat(5,minmax(0,1fr))}
.overtime-text{color:#b54708!important;font-weight:800;display:block}.work-week-day small{display:block}.status.rejected{background:#fee4e2;color:#912018}
.calendar-day.has-overtime{box-shadow:inset 0 -4px 0 #f79009}.day-indicator.early{background:#7f56d9}.legend-dot.overtime{background:#f79009}
.location-detail{display:block!important;color:#475467!important;margin-top:5px!important;line-height:1.45}.location-detail a{color:var(--blue);font-weight:750}.early-status{color:#7f56d9!important;font-weight:750}.check-row{display:flex!important;align-items:center;gap:8px}.check-row input{width:auto!important}.button.danger{background:var(--red);border-color:var(--red);color:white}
#earlyReviewDetails{white-space:pre-line;background:#f9fafb;border-radius:12px;padding:12px}
@media(max-width:1300px){.stat-grid{grid-template-columns:repeat(3,1fr)}.detail-stat-grid-five{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.detail-stat-grid-five{grid-template-columns:repeat(2,1fr)}}

/* v12 bulk time-event management and combined approvals */
.approval-stack{display:grid;gap:18px}
.bulk-action-bar{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding:12px 0 14px;border-top:1px solid var(--line)}
.bulk-action-bar span{margin-right:auto;color:var(--muted);font-size:13px;font-weight:750}
.bulk-action-bar select{border:1px solid #d0d5dd;border-radius:11px;padding:10px;background:white;color:var(--ink)}
.button:disabled{opacity:.5;cursor:not-allowed}
.select-column{width:42px;text-align:center}
.select-column input,.event-select{width:18px;height:18px;accent-color:var(--blue);cursor:pointer}
tr.selected-row td{background:#eff8ff}
.nav-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;line-height:1;flex:0 0 auto}
@media(max-width:760px){.nav-button{gap:8px;align-items:center;flex:0 0 auto}.bulk-action-bar{align-items:stretch}.bulk-action-bar span{width:100%;margin:0}.bulk-action-bar select,.bulk-action-bar .button{flex:1 1 145px}}

/* v13 weekly approvals and simplified event actions */
.stat-grid{grid-template-columns:repeat(7,minmax(0,1fr))}
.status.reopened{background:#e9d7fe;color:#5925dc}.status.not_submitted{background:#f2f4f7;color:#667085}
.weekly-submission-days{display:grid;grid-template-columns:repeat(5,minmax(90px,1fr));gap:8px;margin:14px 0}.weekly-submission-days>div{background:#f9fafb;border-radius:10px;padding:10px}.weekly-submission-days span{display:block;color:var(--muted);font-size:11px;margin-bottom:3px}.weekly-submission-days strong{font-size:13px}
.week-review-details{margin:14px 0}.week-review-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.week-review-summary>div{background:#f9fafb;border-radius:11px;padding:11px}.week-review-summary span{display:block;color:var(--muted);font-size:11px}.week-review-days{display:grid;gap:7px;margin-top:12px}.week-review-days>div{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line);padding:8px 0}.week-review-days span{color:var(--muted);font-size:12px;text-align:right}
.dialog-actions-three{grid-template-columns:1fr 1fr 1fr}.event-edit-button{white-space:nowrap}
@media(max-width:1350px){.stat-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:760px){.weekly-submission-days{grid-template-columns:repeat(2,1fr)}.dialog-actions-three{grid-template-columns:1fr}.week-review-days>div{display:grid}.week-review-days span{text-align:left}}
