.portal-shell{width:min(1220px,calc(100% - 32px));margin:0 auto;padding:34px 0 64px}.cleaner-topbar{position:sticky;top:0;z-index:20}.cleaner-badge{display:inline-flex;align-items:center;border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:7px 12px;font-size:.82rem;font-weight:700}.portal-hero{display:flex;justify-content:space-between;gap:28px;align-items:flex-end;margin-bottom:22px}.portal-hero h1{margin:.2rem 0 .4rem;font-size:clamp(2rem,5vw,3.6rem);line-height:1}.portal-hero p{margin:0}.hero-actions{display:flex;gap:10px;flex-wrap:wrap}.cleaner-link-button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.portal-card{background:#fff;border:1px solid rgba(19,49,55,.13);border-radius:22px;box-shadow:0 18px 55px rgba(22,54,58,.08);padding:22px}.access-card{max-width:680px;margin:10vh auto}.portal-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0}.portal-metrics article{background:#fff;border:1px solid rgba(19,49,55,.12);border-radius:18px;padding:18px;display:grid;gap:7px}.portal-metrics span{color:#65777b;font-size:.84rem}.portal-metrics strong{font-size:1.35rem}.calendar-card{margin-bottom:18px}.calendar-toolbar{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:16px}.calendar-toolbar h2{min-width:220px;text-align:center;margin:0}.calendar-weekdays,.month-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-weekdays span{text-align:center;padding:8px;font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:#718185;font-weight:800}.calendar-day{min-height:122px;border-top:1px solid #e6ecec;border-left:1px solid #e6ecec;padding:8px;background:#fff}.calendar-day:nth-child(7n){border-right:1px solid #e6ecec}.calendar-day:nth-last-child(-n+7){border-bottom:1px solid #e6ecec}.calendar-day.outside{background:#f6f8f8;color:#a3adaf}.calendar-day.today .day-number{background:#163c40;color:#fff}.day-number{display:inline-grid;place-items:center;width:29px;height:29px;border-radius:50%;font-weight:800}.day-jobs{display:grid;gap:5px;margin-top:6px}.calendar-job{border:0;border-radius:9px;padding:7px 8px;text-align:left;cursor:pointer;background:#edf5f4;color:#173f42;display:grid;gap:2px}.calendar-job span{font-size:.7rem}.calendar-job strong{font-size:.76rem}.calendar-job.status-in_progress{background:#fff0d7}.calendar-job.status-completed,.calendar-job.status-approved{background:#e5f5e8}.portal-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,.8fr);gap:18px}.section-heading{display:flex;justify-content:space-between;align-items:start;gap:14px}.section-heading.compact{align-items:center}.section-heading h2,.section-heading h3{margin-top:0}.assignment-list{display:grid;gap:10px}.assignment-card{width:100%;border:1px solid #dfe8e8;border-radius:16px;background:#fbfdfd;padding:15px;display:flex;justify-content:space-between;gap:16px;text-align:left;cursor:pointer}.assignment-card>div{display:grid;gap:4px}.assignment-card span{color:#667a7c;font-size:.86rem}.assignment-card .deadline{color:#944c18;font-weight:700}.assignment-meta{text-align:right;justify-items:end}.status-pill{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef3f3;font-size:.75rem;font-weight:800}.status-pill.status-in_progress{background:#fff0d7}.status-pill.status-completed,.status-pill.status-approved{background:#e5f5e8}.help-card ul{padding-left:20px;line-height:1.6}.payout-history-card{margin-top:18px}.payout-history-heading{display:flex;justify-content:space-between;gap:24px;align-items:end}.payout-history-heading h2{margin:0}.payout-history-actions{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.payout-history-actions label{min-width:150px}.payout-history-actions select{min-height:42px}.payout-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:20px 0}.payout-summary article{display:grid;gap:4px;padding:14px;border-radius:14px;background:#f7faf9;border:1px solid #e1e9e7}.payout-summary span{font-size:.78rem;color:#697a7c;font-weight:700}.payout-summary strong{font-size:1.15rem}.payout-table-wrap{overflow-x:auto;border:1px solid #e3e9e8;border-radius:14px}.payout-table{width:100%;border-collapse:collapse;min-width:680px}.payout-table th,.payout-table td{padding:12px 14px;border-bottom:1px solid #e8eded;text-align:left}.payout-table th{background:#f7faf9;font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:#65777b}.payout-table tbody tr:last-child td{border-bottom:0}.payout-status{display:inline-flex;padding:5px 9px;border-radius:999px;background:#eef3f3;font-size:.76rem;font-weight:800}.payout-status.payout-paid{background:#e5f5e8;color:#176a45}.payout-status.payout-approved{background:#eaf0ff;color:#334a8a}.payout-status.payout-pending_approval{background:#fff0d7;color:#87551a}.payout-disclaimer{margin:12px 0 0;color:#748184;font-size:.78rem}.job-dialog{width:min(820px,calc(100% - 24px));max-height:92vh;border:0;border-radius:24px;padding:0;box-shadow:0 30px 100px rgba(9,34,38,.3)}.job-dialog::backdrop{background:rgba(7,25,29,.62)}.dialog-shell{padding:24px;overflow:auto;max-height:92vh}.dialog-heading{display:flex;justify-content:space-between;gap:20px}.dialog-heading h2{margin:.2rem 0}.dialog-heading p{margin:.25rem 0}.dialog-close{border:0;background:#eef3f3;border-radius:50%;width:38px;height:38px;font-size:1.6rem;cursor:pointer}.job-alert{margin:16px 0;padding:13px 15px;border-radius:13px;background:#fff3de;color:#72420d;font-weight:700}.job-section{border-top:1px solid #e5ebeb;padding-top:18px;margin-top:18px}.job-section h3{margin-top:0}.task-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.task-item{display:flex;gap:10px;align-items:center;padding:12px;border:1px solid #e2e9e9;border-radius:12px;background:#fafcfc}.task-item input{width:19px;height:19px}.restock-list{display:grid;gap:8px;margin-bottom:13px}.restock-row{display:grid;grid-template-columns:1fr 150px;gap:12px;align-items:center;border-bottom:1px solid #edf0f0;padding:8px 0}.restock-row select,.job-section textarea,.photo-upload-grid input,.photo-upload-grid select{width:100%;border:1px solid #cad6d7;border-radius:10px;padding:10px;background:#fff}.photo-upload-grid{display:grid;grid-template-columns:180px 1fr;gap:12px}.photo-picker{display:block;margin:12px 0}.photo-picker input{display:block;margin-top:7px}.photo-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}.photo-card{margin:0;border:1px solid #e0e8e8;border-radius:14px;overflow:hidden;position:relative;background:#f8fafa}.photo-card img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}.photo-card figcaption{padding:9px;display:grid;gap:3px;font-size:.8rem}.photo-card figcaption span{color:#65777a}.photo-delete{position:absolute;right:7px;top:7px;border:0;border-radius:999px;background:rgba(255,255,255,.92);padding:6px 9px;cursor:pointer}.photo-unavailable{aspect-ratio:4/3;display:grid;place-items:center;color:#78898b}.payment-section{background:#f7faf9;border-radius:15px;padding:16px;margin-top:18px}.empty-state{color:#718083}.form-status.success{color:#176a45}.form-status.error{color:#a12828}@media(max-width:800px){.portal-shell{width:min(100% - 20px,1220px);padding-top:22px}.portal-hero{align-items:start;flex-direction:column}.portal-metrics,.payout-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-grid{grid-template-columns:1fr}.payout-history-heading{align-items:start;flex-direction:column}.payout-history-actions{width:100%}.payout-history-actions label{flex:1}.calendar-weekdays span{font-size:.64rem;padding:5px 2px}.calendar-day{min-height:90px;padding:4px}.day-number{width:24px;height:24px;font-size:.75rem}.calendar-job{padding:5px}.calendar-job span{display:none}.calendar-job strong{font-size:.66rem}.task-list{grid-template-columns:1fr}.photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-upload-grid{grid-template-columns:1fr}.assignment-card{padding:12px}.cleaner-badge{display:none}}@media(max-width:470px){.calendar-day{min-height:72px}.calendar-job strong{font-size:.58rem}.portal-metrics,.payout-summary{grid-template-columns:1fr 1fr}.photo-gallery{grid-template-columns:1fr}.restock-row{grid-template-columns:1fr 120px}.dialog-shell{padding:16px}.payout-history-actions{display:grid;grid-template-columns:1fr;width:100%}.payout-history-actions label,.payout-history-actions button{width:100%}}
