.operations-search{display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:12px;align-items:end;margin:18px 0 24px}.operations-search label{display:grid;gap:8px}.operations-search input{width:100%;min-width:0}.operations-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.operations-calendar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.operations-calendar>.billing-panel{margin:0}.operations-slots{display:grid;gap:16px}.operations-slot{border:1px solid var(--app-line);border-radius:4px;padding:16px;display:grid;align-content:start;gap:10px}.operations-slot p{margin:0}.operations-slot a{color:var(--app-blue-dark);text-decoration:none}.operations-slot details form{margin-top:14px}.operations-hour{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid var(--app-line);text-decoration:none;color:var(--app-text)}.operations-hour>div{display:grid;gap:6px;min-width:0;overflow-wrap:anywhere}.operations-hour span{font-size:14px}.operations-hour b{white-space:nowrap}.operations-update{padding:16px 0;border-bottom:1px solid var(--app-line);margin-bottom:16px;overflow-wrap:anywhere}.operations-update small{display:block;margin:6px 0}.operations-next{display:grid;gap:10px;margin-bottom:18px}.operations-next h2,.operations-next p{margin:0}.operations-hours-link{margin-bottom:20px}.operations-fields{border:1px solid var(--app-line);border-radius:4px;padding:16px;min-width:0}.operations-fields legend{overflow-wrap:anywhere}.operations-month-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0}.operations-month-stats>div{display:grid;gap:8px;background:#fff;border:1px solid var(--app-line);border-radius:4px;padding:16px}.operations-month-stats strong{font-size:26px}.admin-client-actions{display:grid;gap:12px}.admin-client-actions .admin-delete-panel{width:100%}.operations-calendar+.billing-panel{margin-top:20px}



@media(max-width:760px){.operations-calendar{grid-template-columns:1fr}.operations-month-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.operations-search{grid-template-columns:minmax(0,1fr) 88px}}







.operations-cancel{margin-top:12px}.detail-card details>.app-form{margin-top:16px}







.operations-slots{grid-template-columns:repeat(2,minmax(0,1fr))}.operations-slot{min-width:0;overflow-wrap:anywhere;padding:12px}.operations-slot h3{font-size:15px;margin:0}.operations-calendar{margin-top:16px}.billing-panel details>.app-form{margin-top:16px}







/* Shared rhythm for every application role. Keep existing brand colours and actions. */



#main-content.mobile-app{--ui-field-gap:20px;--ui-card-gap:24px;--ui-control-height:52px}



#main-content.mobile-app :is(.app-welcome,.screen-title,.request-detail-hero){margin-bottom:24px}



#main-content.mobile-app :is(.app-welcome,.screen-title) h1{margin-bottom:0}



#main-content.mobile-app :is(.app-form,.billing-content .app-form){display:grid;gap:var(--ui-field-gap);min-width:0}



#main-content.mobile-app .billing-editor{gap:0}



#main-content.mobile-app :is(.billing-form-grid,.operations-pair){gap:20px}



#main-content.mobile-app .app-form label:not(.billing-check):not(.inline-check):not(.photo-upload):not(:has(input[type=radio],input[type=checkbox])){display:grid;gap:10px;min-width:0;margin:0;align-content:start}



#main-content.mobile-app form :is(input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea){box-sizing:border-box;width:100%;min-width:0;min-height:var(--ui-control-height);border:1px solid var(--app-line);border-radius:4px;background-color:#fff;padding:12px 14px;font-family:inherit;font-size:16px;font-weight:400;line-height:1.5;color:var(--app-text)}



#main-content.mobile-app form :is(select:not([multiple]),input[type=date],input[type=month],input[type=week],input[type=time],input[type=datetime-local]){padding-right:60px}



#main-content.mobile-app form textarea{min-height:112px;resize:vertical}



#main-content.mobile-app form :is(input,select,textarea):focus-visible{outline:2px solid var(--app-blue);outline-offset:2px}



#main-content.mobile-app :is(.app-primary-button,.app-secondary-button,.app-danger-button,.admin-danger-button,.danger-button,.quick-accept,.quick-complete,.timer-start,.timer-stop,.timer-complete){min-height:var(--ui-control-height);padding:13px 16px;border-radius:4px;font-size:14px;line-height:20px;font-weight:600}



#main-content.mobile-app :is(.billing-panel,.detail-card){padding:24px;border-radius:4px;margin-top:0;margin-bottom:var(--ui-card-gap)}



#main-content.mobile-app :is(.billing-panel,.detail-card)>h2{font-size:20px;line-height:1.35;margin:0 0 20px}



#main-content.mobile-app .app-form>h2{margin:0;font-size:20px;line-height:1.35}



#main-content.mobile-app .app-form>h2~h2{padding-top:20px;border-top:1px solid var(--app-line)}



#main-content.mobile-app :is(.billing-panel,.detail-card)>:is(.billing-item,.app-alert)+.app-form{margin-top:24px}



#main-content.mobile-app :is(.billing-panel,.detail-card) details>.app-form{margin-top:20px}



#main-content.mobile-app .operations-cancel{margin-top:16px}



#main-content.mobile-app .operations-fields{margin:0;padding:20px;border-radius:4px}



#main-content.mobile-app .operations-fields legend{padding:0 8px;font-size:14px}



#main-content.mobile-app .operations-search{gap:16px;margin:0 0 24px;align-items:end}



#main-content.mobile-app .operations-search label{gap:10px}



#main-content.mobile-app .operations-calendar{gap:24px;margin-top:24px}



#main-content.mobile-app .operations-calendar>.billing-panel{margin:0}



#main-content.mobile-app .operations-slots{gap:16px}



#main-content.mobile-app .operations-slot{padding:16px;gap:14px;grid-template-rows:auto auto;align-content:start}



#main-content.mobile-app .operations-slot h3{margin:0}



#main-content.mobile-app .operations-slot :is(details,form):last-child{align-self:end}



#main-content.mobile-app .operations-next{padding:24px;border:1px solid var(--app-line);border-radius:4px;background:#fff;gap:14px;margin:0 0 24px}



#main-content.mobile-app .operations-next h2{font-size:20px}



#main-content.mobile-app .operations-month-stats{gap:16px;margin:24px 0}



#main-content.mobile-app .app-form input[type=file]:not(.photo-upload input){max-width:100%;min-width:0;font-size:14px;line-height:1.5;color:var(--app-muted)}



#main-content.mobile-app .app-form input[type=file]::file-selector-button{border:1px solid var(--app-line);border-radius:4px;background:#fff;color:var(--app-blue-dark);padding:12px 14px;margin:0 12px 8px 0;font-family:inherit;font-size:14px;font-weight:600;line-height:20px;cursor:pointer}



#main-content.mobile-app .capacity-hours-link{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:48px;padding-top:16px;border-top:1px solid var(--app-line);color:var(--app-blue-dark);text-decoration:none;font-size:14px;line-height:1.5;font-weight:600}



.capacity-hours-link svg{width:20px;height:20px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}



.capacity-hours-link:focus-visible{outline:2px solid var(--app-blue);outline-offset:4px;border-radius:4px}



@media(max-width:700px){



 #main-content.mobile-app :is(.billing-panel,.detail-card,.operations-next){padding:20px}



 #main-content.mobile-app .operations-pair{gap:12px}



 #main-content.mobile-app .operations-fields{padding:16px}



 #main-content.mobile-app .operations-calendar{gap:20px}



 #main-content.mobile-app .operations-slot{padding:14px}



}



@media(max-width:380px){#main-content.mobile-app .operations-slots{grid-template-columns:1fr}}







#main-content.mobile-app .portal-quick-stats{margin-bottom:24px}







/* Match the status tile to its adjacent action, including wrapped labels. */



.technician-row-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px}
#main-content.mobile-app .technician-row .technician-row-side form{display:grid;align-items:stretch}
#main-content.mobile-app .technician-row-side>form,#main-content.mobile-app .technician-row-side>.technician-delete-button{grid-row:1}



#main-content.mobile-app .technician-row .technician-status{height:auto;min-height:var(--ui-control-height);padding:13px 16px;border-radius:4px;font-size:14px;line-height:20px;font-weight:600;align-self:stretch}







/* Billing identity is a separate card with space before its edit action. */



#main-content.mobile-app .billing-client-details{display:grid;gap:20px;margin-top:24px}



#main-content.mobile-app .billing-client-details>h2,



#main-content.mobile-app .billing-client-details>p,



#main-content.mobile-app .billing-client-details>.billing-facts{margin:0}



#main-content.mobile-app .billing-client-details>strong+p{margin-top:-12px}



#main-content.mobile-app .billing-client-details>.billing-facts:empty{display:none}





/* Equal client actions; expanded confirmation gets the full card width. */

#main-content.mobile-app .admin-client-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start;padding-top:20px}

#main-content.mobile-app .admin-client-actions>.app-secondary-button,#main-content.mobile-app .admin-client-actions>.admin-delete-panel>summary{width:100%;min-width:0;min-height:52px;padding:13px 8px;margin:0;font-size:14px;line-height:20px}

#main-content.mobile-app .admin-client-actions>.admin-delete-panel{min-width:0;width:100%}

#main-content.mobile-app .admin-client-actions:has(>.admin-delete-panel[open]){grid-template-columns:minmax(0,1fr)}



/* Today's dispatch plan shares the card and spacing system. */

.admin-day-plan .app-section-head{flex-wrap:wrap;gap:12px;margin-bottom:20px}

.admin-day-plan time{font-size:14px;color:var(--app-muted)}

.admin-day-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}

.admin-day-slot{display:flex;flex-direction:column;gap:20px;min-width:0;padding:24px;border:1px solid var(--app-line);border-radius:4px;background:#fff;color:var(--app-text);text-decoration:none;box-shadow:var(--app-shadow)}

.admin-day-slot h3{font-size:18px;margin:0}

.admin-day-job{display:grid;gap:8px;overflow-wrap:anywhere}

.admin-day-job strong{font-size:17px}.admin-day-job span{font-size:15px}.admin-day-job small{font-size:14px;color:var(--app-muted)}

.admin-day-slot-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:auto;padding-top:16px;border-top:1px solid var(--app-line)}

.admin-day-open{font-size:14px;font-weight:600;color:var(--app-blue-dark)}

a.admin-day-slot:hover{border-color:var(--app-blue)}

a.admin-day-slot:focus-visible{outline:3px solid var(--app-blue);outline-offset:3px}

#main-content.mobile-app .admin-day-calendar{margin-top:20px}

@media(max-width:600px){.admin-day-slots{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.admin-day-slot{padding:16px;gap:16px}.admin-day-slot h3{font-size:17px}.admin-day-job strong{font-size:15px}.admin-day-job span,.admin-day-job small,.admin-day-open{font-size:14px}.admin-day-slot-footer .status-pill{max-width:100%;white-space:normal;overflow-wrap:normal}}


.client-payment-notice{margin:20px 24px;position:relative}.client-payment-notice p{margin:10px 0}.payment-check-list{display:grid;gap:16px;margin-top:20px}.payment-check-row{display:flex;align-items:center;justify-content:space-between;gap:20px}.payment-check-row h2{margin:0 0 8px;font-size:1.1rem}.payment-check-label{display:flex;gap:12px;align-items:center;cursor:pointer;min-height:48px}.payment-check-label input{width:24px;height:24px;accent-color:#0c65c8}.payment-disabled{background:#e5e9ee!important;border-color:#d3dae3!important;color:#637185!important;box-shadow:none!important;cursor:not-allowed}.payment-disabled .report-plus{background:#d3dae3;color:#637185}@media(max-width:650px){.payment-check-row{align-items:flex-start;flex-direction:column;gap:12px}.client-payment-notice{margin:16px 12px}}

.payment-check-intro p{margin:20px 0 0;line-height:1.6}.payment-check-label .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.payment-month-form{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}.payment-month-form label{flex:1;min-width:180px}.payment-month-form button{width:auto;min-width:140px}.client-payment-notice{width:calc(100% - 64px);max-width:1400px;margin:24px auto 0}@media(max-width:1099px){.client-payment-notice{width:calc(100% - 24px);margin:16px auto 0}}

.client-payment-notice{padding:20px 24px;border:1px solid var(--app-line,#dbe4ee);border-radius:4px;background:#fff}.payment-disabled.report-problem-card strong,.payment-disabled.report-problem-card>b{color:#526379!important}@media(max-width:650px){.client-payment-notice{padding:18px}}

.notification-item{background:#fff;border:1px solid var(--app-line);border-radius:4px;overflow:hidden;box-shadow:var(--app-shadow)}.notification-item:has(.is-unread){border-color:#b9d7fb;background:#fbfdff}.notification-item .notification-card{border:0;border-radius:0;box-shadow:none;background:transparent}.notification-delete{display:flex;justify-content:flex-end;margin:0;padding:0 20px 16px}.notification-delete .app-danger-button{width:auto;min-height:44px;padding:10px 20px;font-size:.82rem}@media(max-width:520px){.notification-delete{padding:0 16px 16px}}

/* Keep gated hour links visually consistent with the capacity card. */
#main-content.mobile-app .capacity-hours-link.payment-disabled{background:transparent!important;border-radius:4px}
#main-content.mobile-app .app-form .app-primary-button.compact-action{justify-self:start;width:auto;max-width:100%;min-width:min(220px,100%)}

/* Desktop action buttons keep their intrinsic width in grid and flex forms. */
@media(min-width:1100px){
 #main-content.mobile-app :is(.app-primary-button,.app-secondary-button,.app-danger-button,.admin-danger-button,.danger-button,.quick-accept,.quick-complete,.timer-start,.timer-stop,.timer-complete){width:fit-content!important;max-width:100%;min-width:0;flex:0 0 auto!important;justify-self:start;align-self:center;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 20px;border-radius:4px}
 #main-content.mobile-app :is(.billing-actions,.request-actions,.admin-client-actions){justify-content:start;justify-items:start}
 #main-content.mobile-app .billing-workspace-actions{grid-template-columns:minmax(0,2fr) minmax(250px,1fr)}
 #main-content.mobile-app .billing-workspace-actions .billing-create-buttons{grid-template-columns:repeat(2,minmax(0,200px));justify-content:start;align-items:stretch}
 #main-content.mobile-app .billing-workspace-actions .billing-action-group a{width:200px!important;min-height:52px;align-self:flex-start}
 #main-content.mobile-app .admin-client-actions{display:flex;flex-wrap:wrap;gap:12px}
 #main-content.mobile-app .admin-client-actions>.app-secondary-button,#main-content.mobile-app .admin-client-actions>.admin-delete-panel>summary,#main-content.mobile-app .technician-create-card .app-primary-button,#main-content.mobile-app .technician-row-side .app-secondary-button,#main-content.mobile-app .technician-delete-actions>button{width:180px!important;min-height:52px}
 #main-content.mobile-app .technician-row .technician-row-side,#main-content.mobile-app .technician-delete-actions{width:min(100%,372px);grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px;justify-content:start}
 #main-content.mobile-app .admin-client-actions>.admin-delete-panel:not([open]){width:180px}
 #main-content.mobile-app :is(.active-work-actions,.tech-one-tap-actions) form{flex:0 0 auto}
}

/* Payment navigation is also used on pages without billing.css. */
#main-content.mobile-app .payment-check-intro + .billing-actions{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0 20px}
#main-content.mobile-app .payment-check-intro + .billing-actions > .app-secondary-button{margin:0}
@media(max-width:1099px){#main-content.mobile-app .payment-check-intro + .billing-actions{display:grid;grid-template-columns:minmax(0,1fr)}}

/* Align shared search actions with the field, below its label. */
#main-content.mobile-app :is(.operations-search,.payment-month-form)>.app-secondary-button{align-self:end;min-height:var(--ui-control-height);margin:0}

/* Equal baseline height for daily-plan cards and the full-width weekend card. */
.admin-day-slot{min-height:180px;box-sizing:border-box}.admin-day-weekend{justify-content:center}
@media(max-width:600px){.admin-day-slot{min-height:156px}}

.admin-day-weekend{align-items:center;justify-content:center;text-align:center}.admin-day-weekend .admin-day-job strong{font-size:24px;line-height:1.4}
@media(max-width:600px){.admin-day-weekend .admin-day-job strong{font-size:20px}}

#main-content.mobile-app .billing-list + .billing-panel{margin-top:var(--ui-card-gap,24px)}

.mobile-app .request-field.request-photo-field{grid-template-rows:22px auto auto}
.photo-picker{min-width:0}.photo-picker .photo-help{margin:12px 0;font-size:14px;line-height:1.6}
.photo-picker .photo-count{font-size:14px;font-weight:600;margin:12px 0}
.photo-picker .photo-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:12px}
.photo-picker .photo-preview:empty{display:none}
.photo-selection{position:relative;min-width:0;padding-top:8px}
.photo-picker .photo-selection img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:4px}
.photo-remove{position:absolute;right:0;top:0;display:grid;place-items:center;width:40px;height:40px;padding:0;border:2px solid white;border-radius:4px;background:#edf5ff;color:#0967c6;font:700 26px/1 sans-serif;cursor:pointer;box-shadow:0 2px 7px #102f5020}
.photo-remove:focus-visible{outline:3px solid #0967c6;outline-offset:3px}
.photo-picker input[hidden],.photo-picker [hidden]{display:none}
.photo-picker>.photo-source-options .photo-upload{min-height:130px;height:auto}

/* Shared status badges: overview, calendar, request lists, details and history. */
.mobile-app .status-accepted,.mobile-app .status-scheduled,.mobile-app .status-in_progress{background:#1473e6;color:#fff}
.feedback-entry-meta{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:16px 0}

/* One badge geometry across requests, invoices, subscriptions and accounts. */
#main-content.mobile-app :is(.status-pill,.billing-status,.lead-converted-badge,.onboarding-state,.technician-status)[class]{
 display:inline-flex;
 align-items:center;
 justify-content:center;
 justify-self:start;
 align-self:start;
 flex:0 1 auto;
 box-sizing:border-box;
 width:fit-content;
 min-width:0;
 max-width:100%;
 height:auto;
 min-height:28px;
 margin:0;
 padding:6px 10px;
 border:0;
 border-radius:999px;
 font-family:inherit;
 /* billing.css previously set an important font size. */
 font-size:12px!important;
 font-weight:800;
 line-height:16px;
 letter-spacing:normal;
 text-align:center;
 text-indent:0;
 white-space:normal;
 word-break:normal;
 overflow-wrap:anywhere;
}
#main-content.mobile-app :is(.status-completed,.billing-status.is-paid,.lead-converted-badge,.onboarding-state.active,.technician-status.active){background:#1daf61;color:#fff!important}
#main-content.mobile-app :is(.status-accepted,.status-scheduled,.status-in_progress,.billing-status){background:#1473e6;color:#fff!important}
#main-content.mobile-app :is(.status-new,.onboarding-state.pending){background:#ffd21c;color:#10233f!important}
#main-content.mobile-app :is(.status-cancelled,.billing-status.is-draft,.billing-status.is-cancelled,.technician-status.inactive){background:#6e7e91;color:#fff!important}
#main-content.mobile-app .billing-status.is-overdue{background:#f39b20;color:#10233f!important}
/* Put the request status at the right edge, including the mobile admin view. */
#main-content.mobile-app :is(.admin-ticket-head,.request-detail-hero){display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px}
#main-content.mobile-app :is(.admin-ticket-head,.request-detail-hero)>div{min-width:0}
#main-content.mobile-app :is(.admin-ticket-head,.request-detail-hero) h1{margin:0;overflow-wrap:anywhere}
#main-content.mobile-app :is(.admin-ticket-head,.request-detail-hero)>.status-pill{justify-self:end;align-self:center;max-width:min(140px,38vw)}
/* Keep photo instructions out of the visual form, announce selection to screen readers. */
.photo-picker .photo-live-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.photo-picker .photo-preview:not(:empty){margin-top:16px}
.photo-picker .photo-upload.is-disabled{opacity:.45;cursor:not-allowed}
.photo-picker .photo-upload.is-disabled input{cursor:not-allowed}

/* Compact booking result, shared by the portal and demo. */
.booking-estimate{--estimate-accent:var(--app-green);--estimate-icon-color:#fff;display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:14px;padding:20px;border:1px solid var(--estimate-accent);border-radius:4px;background:var(--app-card);color:var(--app-text);box-shadow:0 4px 14px #16385a05}
.booking-estimate[hidden]{display:none}
.booking-estimate-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--estimate-accent);color:var(--estimate-icon-color)}
.booking-estimate-icon svg{width:23px;height:23px}
.booking-estimate-copy{min-width:0}
.booking-estimate-copy>strong{display:block;font-size:16px;font-weight:750;line-height:1.45}
.booking-estimate-copy>p{margin:6px 0 0;font-size:14px;font-weight:400;line-height:1.5;color:var(--app-muted)}
.booking-estimate-copy>p[hidden]{display:none}
.booking-estimate-info{display:none}
.booking-estimate[data-state=last]{--estimate-accent:var(--app-yellow);--estimate-icon-color:var(--app-text)}
.booking-estimate[data-state=extra]{--estimate-accent:var(--app-orange);--estimate-icon-color:var(--app-text)}
.booking-estimate[data-state=unknown]{--estimate-accent:var(--app-blue)}
.booking-estimate:is([data-state=extra],[data-state=unknown]) .booking-estimate-check{display:none}
.booking-estimate:is([data-state=extra],[data-state=unknown]) .booking-estimate-info{display:block}

@media(max-width:380px){.booking-estimate{grid-template-columns:36px minmax(0,1fr);padding:16px;gap:12px}.booking-estimate-icon{width:36px;height:36px}}
@media (min-width:1100px){    #main-content.mobile-app .operations-search > .app-secondary-button{        width:100%!important;    }}
/* Use the same subtle current state for all administrator navigation. */
#main-content.mobile-app.admin-app nav [aria-current="page"]{
    background:#edf5ff;
    color:var(--app-blue-dark,#0b3769);
}

/* The next visit uses the same schedule and status in the client and demo. */
#main-content.mobile-app .operations-next{gap:20px}
.next-visit-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px}
.next-visit-heading h2{line-height:1.35}
.operations-next .next-visit-schedule{display:grid;grid-template-columns:1.2fr 1fr;gap:16px;margin:0;padding:16px;border-radius:4px;background:#f1f7fe}
.next-visit-schedule>div{min-width:0}
.next-visit-schedule>div+div{border-left:1px solid #dbe8f7;padding-left:16px}
.operations-next dt{font-size:12px;font-weight:600;line-height:1.5;color:var(--app-muted)}
.next-visit-schedule dt{display:flex;align-items:center;gap:7px;margin-bottom:7px;color:#4f7195}
.operations-next svg{width:17px;height:17px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.operations-next dd{margin:0;color:var(--app-text);overflow-wrap:anywhere}
.next-visit-schedule dd{font-size:20px;font-weight:750;line-height:1.35}
.next-visit-schedule time{display:block;white-space:nowrap;font-size:18px}
.next-visit-schedule small{display:block;margin-top:4px;font-size:12px;font-weight:500;color:#4f7195}
.operations-next .next-visit-details{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;margin:0}
.next-visit-details>div{min-width:0}
.next-visit-details dt{margin-bottom:5px}
.next-visit-issue dd{font-size:18px;font-weight:750;line-height:1.45}
.next-visit-technician dd{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600;line-height:1.45}
.next-visit-person{display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:#edf5ff;color:var(--app-blue-dark)}
.next-visit-person svg{width:17px;height:17px}
#main-content.mobile-app .operations-next .next-visit-link{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;width:100%;box-sizing:border-box}
@media(min-width:700px){
    .operations-next .next-visit-schedule{grid-template-columns:1fr 1fr}
    .operations-next .next-visit-details{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px}
}
@media(max-width:380px){
    .operations-next .next-visit-schedule{padding:13px;gap:12px}
    .next-visit-schedule>div+div{padding-left:12px}
    .next-visit-schedule dd{font-size:18px}
    .next-visit-schedule time{font-size:16px}
}

#main-content.mobile-app .operations-calendar-team{display:flex;margin:16px 0 0}
#main-content.mobile-app .operations-calendar-team>.app-secondary-button{width:100%;box-sizing:border-box;margin:0}

#main-content.mobile-app .payment-check-invoice-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px;min-width:0}

/* Shared payment state control in invoice detail and monthly payment overview. */
#main-content.mobile-app .invoice-payment-switch{display:inline-flex;align-items:stretch;gap:4px;padding:4px;background:#e9eff6;border-radius:4px;max-width:100%;box-sizing:border-box}
#main-content.mobile-app .invoice-payment-option{display:flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;box-sizing:border-box;border-radius:4px;text-decoration:none;font-size:15px;font-weight:700;line-height:1.3;color:#52657c;background:transparent;white-space:nowrap}
#main-content.mobile-app .invoice-payment-option.is-selected{background:#fff;color:#102744;box-shadow:0 2px 6px #16385a12}
#main-content.mobile-app .invoice-payment-option.is-selected.is-paid{background:var(--app-green,#17b567);color:#fff}
#main-content.mobile-app .invoice-payment-option:focus-visible{outline:3px solid #1473e6;outline-offset:2px}
#main-content.mobile-app .invoice-payment-control{scroll-margin-top:160px}
#main-content.mobile-app .invoice-payment-form{margin-top:20px;max-width:560px}
#main-content.mobile-app .invoice-payment-form[hidden]{display:none!important}
#main-content.mobile-app .invoice-payment-form p{margin:0;color:#52657c;font-size:14px}
#main-content.mobile-app .invoice-payment-saved-state,#main-content.mobile-app .invoice-payment-help{font-size:14px;color:#52657c;margin:16px 0 0}
@media(max-width:650px){#main-content.mobile-app .payment-check-invoice-actions{width:100%;align-items:flex-start}#main-content.mobile-app .invoice-payment-switch{width:100%}#main-content.mobile-app .invoice-payment-option{flex:1;min-width:0;padding:10px 12px;font-size:14px}#main-content.mobile-app .invoice-payment-control{scroll-margin-top:100px}}

.next-visit-person.has-photo{flex:0 0 64px;width:64px;height:64px;border-radius:4px;background:transparent;overflow:hidden}.next-visit-person img{display:block;width:100%;height:100%;object-fit:cover}
