.time-title{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin:24px 0 16px}.time-title h2{margin:0;font-size:2rem}.time-title p,.time-title small{display:block;margin:4px 0;color:#9fb4c7;font-size:12px}.time-title>b{font-size:19px;color:#9be6d0;white-space:nowrap}.time-person{display:grid;gap:6px;margin-bottom:12px;color:#a7bfd1;font-size:12px;font-weight:700}.time-person select{width:100%}.time-week{margin-bottom:14px}.time-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}.time-nav strong{font-size:14px;text-align:center}.time-nav .btn{font-size:20px;min-width:42px}.time-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:15px 0 8px}.time-day{min-width:0;min-height:74px;border:1px solid #34516a;border-radius:10px;background:#102436;color:#eaf5fd;padding:6px 2px;cursor:pointer}.time-day small,.time-day strong,.time-day span{display:block}.time-day small{font-size:10px;color:#9eb5c9}.time-day strong{font-size:17px;margin:3px 0}.time-day span{font-size:11px;color:#8edfcc}.time-day.selected{outline:2px solid #39b9fa;background:#164366}.time-day.today strong{color:#56c7ff}.time-today{border:0;padding:5px;background:transparent;color:#6cc6ff;font:inherit;font-size:12px;cursor:pointer}.time-form h3{margin:0 0 15px}.time-form label{display:grid;gap:6px;margin:12px 0;color:#c9dbe8;font-size:12px;font-weight:700}.time-form label small{font-weight:400;color:#8fa8ba}.time-form input:not([type=checkbox]),.time-form textarea{width:100%;box-sizing:border-box}.time-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.time-form .time-review{display:flex;align-items:center;gap:8px}.time-source,.time-warning{padding:10px;border-radius:9px;margin:10px 0;font-size:12px}.time-source{background:#193448;color:#c5d8e4}.time-warning{background:#443019;color:#ffca88}.time-history{margin-top:16px}.time-history summary{cursor:pointer;font-weight:700}.time-history-item{display:grid;gap:4px;border-top:1px solid #355069;padding:10px 0;font-size:12px}.time-history-item small{color:#9eb5c9}.light-mode .time-day{background:#f0f7fb;color:#1b4057}.light-mode .time-day.selected{background:#d6eefa}.light-mode .time-form label{color:#35566c}.light-mode .time-source{background:#e4eef5;color:#35566c}

/* Compact timesheet controls */
.time-payout{display:grid;gap:8px;border-color:#2f7c80;background:#0c2b36}.time-payout>div:first-child{display:grid;gap:4px}.time-payout small{font-size:10px;letter-spacing:.07em;color:#8fb9c1;font-weight:800}.time-payout strong{font-size:27px;color:#a0e8ce}.time-payout span,.time-payout p{font-size:12px;color:#a9c2c8}.time-payout p{margin:0}.time-rate summary{cursor:pointer;color:#86c8ee;font-weight:700;font-size:12px}.time-rate label{display:flex;align-items:center;gap:8px;margin:8px 0;font-size:12px}.time-rate input{width:100px;min-width:0;min-height:36px;padding:6px}.time-calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:13px}.time-calendar-head .btn{min-height:34px;padding:6px 10px;font-size:11px}.time-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center;font-size:10px;color:#9eb5c9;margin-top:10px}.time-days.month{margin-top:5px}.time-days.month .time-day{min-height:50px;padding:3px 1px}.time-days.month .time-day strong{font-size:14px;margin:1px 0}.time-days.month .time-day span{font-size:10px}.time-day.outside{opacity:.42}.time-editor>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;list-style:none}.time-editor>summary::-webkit-details-marker{display:none}.time-editor>summary small{display:block;color:#9eb5c9;font-size:12px;margin-top:3px}.time-editor>summary>span:last-child{font-size:12px;color:#7fc7f5;white-space:nowrap}.time-editor>h3{margin:0 0 10px;font-size:17px}.time-form{min-width:0}.time-form label{margin:8px 0;gap:4px}.time-form label small{display:inline}.time-form input:not([type=checkbox]):not([type=radio]),.time-form textarea{display:block;box-sizing:border-box;width:100%;max-width:100%;min-width:0;min-height:38px;height:38px;padding:7px 9px;font-size:16px;line-height:1.2}.time-form textarea{height:auto;min-height:54px;resize:vertical}.time-pair>*{min-width:0}.time-step{display:grid;grid-template-columns:40px minmax(0,1fr) 40px;gap:5px}.time-step button{font-size:22px;border:1px solid #355b76;border-radius:9px;background:#19384d;color:#e8f5ff;cursor:pointer}.time-step input{text-align:center}.time-region{display:flex;align-items:center;gap:9px;margin:12px 0;font-size:12px;font-weight:700}.time-region>div{display:flex;gap:4px}.time-region label{margin:0}.time-region label input{position:absolute;opacity:0}.time-region label span{display:block;padding:7px 12px;border:1px solid #355b76;border-radius:8px;color:#b7cfdf}.time-region label input:checked+span{background:#196184;color:white;border-color:#55c7f5}.time-region label input:focus-visible+span{outline:2px solid #ffb05a}.time-region small{color:#8fa8ba;font-weight:400}.time-form .time-check{display:flex;align-items:center;justify-content:flex-start;gap:8px}.time-check input{width:20px!important;height:20px!important;min-height:20px!important;flex:0 0 20px;margin:0}.time-check span{flex:0 0 auto}.light-mode .time-payout{background:#e9f7f5}.light-mode .time-payout strong{color:#14765f}.light-mode .time-payout span,.light-mode .time-payout p{color:#426f70}

.time-travel-panel{display:grid;gap:7px;font-size:13px}.time-travel-heading{display:flex;justify-content:space-between;gap:8px}.time-travel-panel small{display:block;color:#9eb5c9;font-size:11px;line-height:1.4}.time-travel-edit>summary{cursor:pointer;color:#84c9f2;font-size:12px;font-weight:700}.time-travel-edit label{display:grid;gap:5px;margin:10px 0;font-size:12px}.time-travel-edit input{box-sizing:border-box;width:100%;max-width:180px;min-height:38px;padding:7px 9px;font-size:16px}.time-travel-buttons{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}.time-travel-buttons .btn{min-height:38px;padding:6px 10px;font-size:12px}.time-travel-edit details{margin-top:8px}.time-travel-edit details summary{cursor:pointer;font-size:12px}
.time-travel-info{display:block;color:#9eb5c9;font-size:11px;line-height:1.4;margin:6px 0}.time-form select{box-sizing:border-box;width:100%;max-width:100%;min-width:0;min-height:38px;font-size:16px}


/* Technician field board: compact, role-aware performance over the existing time log. */
#timeDashboard{max-width:940px;margin:0 auto;animation:tech-enter .25s ease both}.time-title p{font-size:11px;opacity:.7}.time-title h2{letter-spacing:-.04em}.time-person{margin:12px 0}.time-person select{min-height:44px}
.tech-performance{margin:14px 0}.tech-period{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:10px 2px}.tech-period b{font-size:12px}.tech-period small{font-size:10px;opacity:.65}.tech-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.tech-stat{display:grid;gap:7px;padding:14px 12px;border:1px solid #57839644;border-radius:15px;background:linear-gradient(135deg,#b0eaff08,transparent);box-shadow:inset 0 1px #ffffff0c;min-width:0}.tech-stat small{font-size:10px;opacity:.7}.tech-stat strong{font-size:clamp(20px,3vw,30px);letter-spacing:-.045em;font-variant-numeric:tabular-nums;color:#a0e8ce}.tech-stat span{font-size:9px;opacity:.6;line-height:1.35}.tech-insight-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:10px;margin-top:10px}.tech-panel{border:1px solid #57839644;border-radius:15px;padding:15px;min-width:0;background:linear-gradient(135deg,#b0eaff06,transparent)}.tech-panel>b{font-size:12px}.tech-panel>small{display:block;opacity:.65;font-size:10px;line-height:1.5}.tech-panel p{font-size:11px;opacity:.75;line-height:1.55}.tech-extra-value{display:block;font-size:30px;letter-spacing:-.04em;margin:20px 0 9px;color:#ffb58a}.tech-hours-chart{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;height:128px;margin-top:15px}.tech-hours-chart>div{display:grid;grid-template-rows:16px 1fr 16px;gap:5px;text-align:center;font-size:10px}.tech-hours-chart>div>span{display:flex;align-items:flex-end;justify-content:center;border-bottom:1px solid #57839644}.tech-hours-chart i{display:block;width:70%;border-radius:5px 5px 0 0;background:linear-gradient(0deg,#397a7c,#a0e8ce);animation:tech-grow .35s ease both;transform-origin:bottom}.tech-hours-chart small{opacity:.65}.tech-help{font-size:10px;line-height:1.6;opacity:.7;margin:12px 3px}.tech-help summary{cursor:pointer}.tech-owner{margin-top:12px}.tech-owner .tech-stat-grid{grid-template-columns:1fr 1fr;margin:12px 0}.tech-owner .tech-stat-grid>div{display:grid;gap:5px}.tech-owner strong{font-size:23px;color:#ffb58a}.tech-owner small{font-size:10px;opacity:.7}.tech-contribution-track{height:9px;background:#57839633;border-radius:10px;overflow:hidden;margin:12px 0}.tech-contribution-track i{display:block;height:100%;background:linear-gradient(90deg,#cb735b,#ffb58a)}.tech-recent summary{font-size:12px;cursor:pointer}.tech-job-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border:0;border-bottom:1px solid #57839633;background:transparent;color:inherit;text-align:left;min-height:48px}.tech-job-row b{font-size:12px}.tech-job-row small{display:block;font-size:10px;opacity:.6;margin-top:4px}.tech-job-row>span:last-child{font-size:10px;opacity:.7}.time-payout strong{font-size:22px}.light-mode .tech-stat strong{color:#14765f}.light-mode .tech-extra-value,.light-mode .tech-owner strong{color:#a65829}
@keyframes tech-enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes tech-grow{from{transform:scaleY(.1)}to{transform:scaleY(1)}}
@media(max-width:520px){.tech-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tech-insight-grid{grid-template-columns:1fr}.tech-stat{padding:12px}.tech-stat strong{font-size:26px}.tech-panel{padding:13px}.tech-period{align-items:flex-start}.tech-period small{max-width:145px;text-align:right}.time-title>div>h2{font-size:22px}}
@media(prefers-reduced-motion:reduce){#timeDashboard,.tech-hours-chart i{animation:none!important}}body.dc-ux-reduce :is(#timeDashboard,.tech-hours-chart i){animation:none!important}
.tech-priorities{margin-bottom:14px}.tech-priority-count{display:flex;align-items:baseline;gap:10px;margin:10px 0}.tech-priority-count strong{font-size:32px;color:#a0e8ce;letter-spacing:-.05em}.tech-priority-count span{font-size:11px;opacity:.7}.tech-priorities .btn{min-height:40px}.tech-priorities .tech-job-row:last-child{border:0}

.tech-period-switch{display:flex;gap:3px;border:1px solid #57839644;border-radius:10px;padding:3px}.tech-period-switch button,.tech-period-nav button{min-width:38px;min-height:38px;padding:6px 10px;border:0;background:transparent;color:inherit;border-radius:8px;cursor:pointer}.tech-period-switch button[aria-pressed=true]{background:#4b988b33;color:#a0e8ce}.tech-period-nav{display:flex;align-items:center;gap:5px}.tech-period-nav small{text-align:center;max-width:none}.tech-period{flex-wrap:wrap}

/* Calendar-first entry. Details are only mounted after choosing a date. */
.time-quick-calendar{padding:14px!important;margin-top:12px!important}.time-quick-calendar .time-nav{margin:10px 0 14px}.time-quick-week{display:grid;grid-template-columns:repeat(7,minmax(108px,1fr));gap:8px;overflow-x:auto;scroll-snap-type:x proximity;padding:2px 1px 8px;scrollbar-width:thin;overscroll-behavior-x:contain}.time-quick-day{border:1px solid #57839644;border-radius:14px;padding:9px;background:linear-gradient(145deg,#b0eaff06,transparent);min-width:0;scroll-snap-align:center}.time-quick-day.selected{border-color:#80d6bb80;box-shadow:inset 0 1px #a0e8ce22}.time-quick-day.today .time-quick-date strong{color:#a0e8ce}.time-quick-date{display:grid;grid-template-columns:1fr auto;gap:3px;width:100%;min-height:50px;padding:0 1px 7px;text-align:left;border:0;background:transparent;color:inherit;cursor:pointer}.time-quick-date small{grid-column:1;font-size:10px;opacity:.65}.time-quick-date strong{grid-column:1;font-size:23px;letter-spacing:-.04em}.time-quick-date>span{grid-column:2;grid-row:1/3;align-self:center;font-size:22px;opacity:.65}.time-quick-controls{display:grid;grid-template-columns:30px minmax(0,1fr) 30px;gap:3px;align-items:center}.time-quick-controls>button{min-width:30px;min-height:44px;padding:0;border-radius:9px;border:1px solid #57839655;background:#57839614;color:inherit;font-size:21px;cursor:pointer;touch-action:manipulation}.time-quick-controls>button:disabled{opacity:.25;cursor:default}.time-quick-controls label{display:grid;gap:2px;text-align:center;margin:0;min-width:0}.time-quick-controls input{width:100%;min-width:0;box-sizing:border-box;text-align:center;padding:5px 0;min-height:44px;border:0!important;box-shadow:none;background:transparent!important;color:inherit;font-size:18px;font-weight:750;appearance:textfield;-moz-appearance:textfield}.time-quick-controls input::-webkit-inner-spin-button,.time-quick-controls input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.time-quick-controls label span{font-size:9px;opacity:.5}.time-quick-status{min-height:17px;margin-top:7px;font-size:9px;line-height:1.4;text-align:center;opacity:.6;overflow-wrap:anywhere}.time-quick-status.has-error{color:#ffba8e;opacity:1}.time-quick-status button{font:inherit;min-height:32px;border:1px solid currentColor;border-radius:6px;color:inherit;background:none;margin-top:4px}.time-month-quick{display:flex;align-items:center;gap:16px;padding:12px;margin-top:10px;border:1px solid #57839644;border-radius:12px;flex-wrap:wrap}.time-month-quick>b{font-size:12px;flex:1}.time-month-quick .time-quick-controls{width:190px;grid-template-columns:44px 1fr 44px}.time-month-quick .time-quick-status{width:100%;margin-top:0}.time-quick-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:9px}.time-quick-footer>small{font-size:10px;opacity:.6;line-height:1.5}.time-quick-footer .time-today{min-height:38px;margin:0;padding:6px}.time-editor .time-calendar-head h3{font-size:15px;margin:0}.light-mode .time-quick-day.today .time-quick-date strong{color:#14765f}.light-mode .time-quick-status.has-error{color:#a65829}
@media(max-width:520px){.time-quick-calendar{padding:11px!important}.time-quick-week{grid-template-columns:repeat(7,132px);gap:8px}.time-quick-controls{grid-template-columns:34px 1fr 34px;gap:4px}.time-quick-calendar .time-days.month .time-day{min-height:60px}.time-quick-date{min-height:54px}.time-quick-footer>small{max-width:220px}}


/* A compact horizontal week: large hours, touch-sized controls, no nested boxes. */
.time-quick-calendar{padding:10px!important}
.time-quick-calendar .time-nav{margin:4px 0 8px}
.time-quick-week{grid-template-columns:repeat(7,minmax(112px,1fr));gap:0;padding:2px 0 6px}
.time-quick-day{padding:6px 8px;box-sizing:border-box;border:0;border-right:1px solid #57839644;border-radius:0;background:none}
.time-quick-day:last-child{border-right:0}
.time-quick-day.selected{background:#80d6bb0d;box-shadow:inset 0 2px #80d6bb;border-radius:8px}
.time-quick-date{min-height:38px;padding:0 0 4px;display:flex;align-items:baseline;gap:5px}
.time-quick-date small{font-size:11px}
.time-quick-date strong{font-size:17px}
.time-quick-date>span{margin-left:auto;font-size:18px}
.time-quick-week .time-quick-controls{grid-template-columns:1fr 1fr;gap:2px}
.time-quick-week .time-quick-controls label{grid-column:1/-1;grid-row:1}
.time-quick-week .time-quick-controls input{min-width:0;width:100%;min-height:42px;padding:2px 0!important;font-size:30px!important;line-height:1.2;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.time-quick-week .time-quick-controls label span{display:none}
.time-quick-week .time-quick-controls>button{min-width:44px;min-height:44px;border:0;background:transparent;font-size:24px}
.time-quick-week .time-quick-controls>button:hover:not(:disabled){background:#57839622}
.time-quick-status{margin-top:2px;min-height:14px}
.time-quick-footer{margin-top:3px}
.time-quick-controls :focus-visible,.time-quick-date:focus-visible{outline:2px solid #56c7ff;outline-offset:1px}
@media(max-width:520px){.time-quick-week{grid-template-columns:repeat(7,112px)}.time-quick-date{min-height:38px}.time-quick-calendar{padding:8px!important}}

/* Private pay ledger, intentionally separate from customer billing. */
.tech-pay,.tech-pay-expenses{margin:12px 0}
.tech-pay-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}
.tech-pay-totals>div{display:grid;gap:5px;min-width:0}
.tech-pay-totals small{font-size:10px;opacity:.7}
.tech-pay-totals strong{font-size:clamp(18px,3vw,27px);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;color:#a0e8ce}
.tech-pay h3{font-size:13px;margin:16px 0 6px}
.tech-pay-row{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #57839633}
.tech-pay-row>div{min-width:0;overflow-wrap:anywhere}
.tech-pay-row>div:last-child{flex-shrink:0;max-width:48%;text-align:right}
.tech-pay-row b{font-size:12px}.tech-pay-row strong{font-size:17px;font-variant-numeric:tabular-nums}
.tech-pay-row small{display:block;font-size:10px;opacity:.75;margin-top:4px;line-height:1.5}
.tech-pay-row .btn{font-size:11px;min-height:38px;margin:5px 0 0 4px;padding:6px 8px}
.tech-pay>small{margin:10px 0}.tech-pay-rates{margin-top:14px}
.tech-pay summary,.tech-pay-expenses summary{cursor:pointer;font-size:12px;padding:10px 0}
.tech-pay .time-form,.tech-pay-expenses .time-form{border-top:1px solid #57839633;margin-top:10px;padding-top:8px}
.tech-pay-expenses input[type=file]{height:auto!important;white-space:normal}
.light-mode .tech-pay-totals strong{color:#14765f}
.tech-pay-receipt{display:grid;gap:4px;margin-top:8px;font-size:11px}.tech-pay-receipt input{max-width:100%;font-size:12px}

/* Ledger-backed monthly charts: approved/paid never blended with estimates. */
.tech-pay-monthly{margin:18px 0;border-top:1px solid #57839644;padding-top:4px}
.tech-pay-month{display:grid;grid-template-columns:46px minmax(50px,1fr) 112px;gap:8px;align-items:center;margin:12px 0}
.tech-pay-month>b{font-size:10px}.tech-pay-month>small{font-size:10px;text-align:right;font-variant-numeric:tabular-nums}.tech-pay-month>small span{display:block;font-size:9px;opacity:.7;margin-top:2px}
.tech-pay-chart-track{display:flex;width:100%;height:10px;border-radius:4px;overflow:hidden;background:#57839614;margin:5px 0}
.tech-pay-chart-track.expenses{height:7px}.tech-pay-chart-track i{display:block;height:100%;flex-shrink:0;min-width:0}
.tech-pay-chart-paid{background:#67aaff}.tech-pay-chart-approved{background:#68d5b2}.tech-pay-chart-draft{background:#9ba6b7}.tech-pay-chart-personal{background:#e8b77a}.tech-pay-chart-company{background:#b99ade}
.tech-pay-chart-key{display:flex;flex-wrap:wrap;gap:8px;font-size:9px;margin:8px 0}.tech-pay-chart-key span:nth-child(1){color:#67aaff}.tech-pay-chart-key span:nth-child(2){color:#68d5b2}.tech-pay-chart-key span:nth-child(3){color:#9ba6b7}.tech-pay-chart-key.expense-key span:nth-child(1){color:#e8b77a}.tech-pay-chart-key.expense-key span:nth-child(2){color:#b99ade}
.tech-pay-monthly>small{display:block;font-size:10px;opacity:.7;line-height:1.5}.tech-pay-category{display:grid;grid-template-columns:58px minmax(30px,1fr) 80px;align-items:center;gap:8px;font-size:10px;margin:7px 0}.tech-pay-category>b{text-align:right;font-variant-numeric:tabular-nums;font-size:10px}
@media(max-width:400px){.tech-pay-month{grid-template-columns:38px minmax(35px,1fr) 98px;gap:5px}}
