.portal-toolbar{align-items:end;gap:16px}.portal-filter{display:grid;gap:6px;min-width:180px;font-size:12px;color:#60747d}.portal-filter select{min-height:44px}.portal-job-list{margin-top:24px}.portal-calendar .cal-day{min-height:112px;min-width:0}.portal-calendar .cal-job{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;padding:4px 6px}.cal-job small{display:block;overflow:hidden;text-overflow:ellipsis;font-size:10px;font-weight:400}.cal-day.selected{box-shadow:inset 0 0 0 2px #d7b638;background:#fff9df}.cal-more{font-size:10px}.portal-quick-links{display:grid;gap:10px}.portal-quick-links a{display:flex;align-items:center;justify-content:space-between;min-height:44px;color:#395b68}.portal-quick-links svg{width:18px}.owner-control{margin:0 0 22px;max-width:420px}.save-status-error{color:#a03d26!important}.tablet-save-note{font-size:12px;color:#69818c}.jobs-table .job-ap{font-size:12px;color:#546e78}.touch-save-bar{display:none}@media(max-width:1100px){.portal-toolbar{flex-wrap:wrap}.portal-toolbar .search{flex-basis:100%}.portal-calendar .cal-day{min-height:88px}.calendar-body{padding:15px}.portal-calendar .cal-job{font-size:10px}.portal-calendar .cal-job small{font-size:9px}.builder-card{padding:22px}.builder-layout{gap:18px}.field input,.field select,.field textarea{font-size:16px}.button,.step-button,.hazard{min-height:44px}.drag-tab{min-width:42px}.check-row{min-height:44px}.portal-quick-links a{min-height:48px}}@media(max-width:650px){.portal-filter{min-width:0;flex:1}.portal-calendar .cal-day{min-height:60px;padding:5px 2px}.portal-calendar .cal-job{display:none}.cal-week{font-size:10px}.cal-legend{flex-wrap:wrap}.jobs-table thead{display:none}.jobs-table,.jobs-table tbody{display:block;width:100%}.jobs-table tr{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid #e5ebec;padding:12px}.jobs-table td{border:0;padding:7px!important}.jobs-table td:first-child{grid-column:1/-1}.jobs-table td:last-child{display:none}.jobs-table td[data-label]:before{content:attr(data-label);display:block;font-size:10px;color:#7a8a90;text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}.builder-steps{overflow-x:auto;overscroll-behavior:contain}.builder-footer{position:sticky;bottom:0;z-index:20;background:#fff;padding:12px 0!important;border-top:1px solid #e3e9ed}.risk-chip{min-width:54px}.compact-title{font-size:13px}}
/* Tablet layouts: keep day selection and the complete job record usable by touch. */
@media screen and (max-width:1100px) {
  .button.icon,.menu-toggle,.sidebar-close { min-width:44px; min-height:44px; }
  .builder-step { min-height:44px; font-size:12px; }
  .builder-steps { gap:8px; scroll-padding-inline:16px; overscroll-behavior-x:contain; }
  .builder-layout > div,.builder-card .field { min-width:0; }
  .builder-card .form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .builder-card .field input,.builder-card .field select { min-height:44px; }
  .drag-tab { min-width:44px; }
  .builder-footer { flex-wrap:wrap; gap:12px; }
  .builder-footer .button { min-height:46px; }
  .page-head { flex-wrap:wrap; }
  .page-head > .actions { flex-wrap:wrap; }

  .portal-toolbar .search { max-width:none; min-width:0; }
  .portal-toolbar .search input { min-height:44px; font-size:16px; }
  .portal-filter { flex:1 1 190px; }
  .portal-calendar .calendar-body { padding:14px; }
  .portal-calendar .cal-grid { gap:5px; }
  .portal-calendar .cal-day { min-height:110px; padding:9px 5px; gap:6px; font-size:13px; }
  .portal-calendar .cal-job { font-size:11px; line-height:1.35; max-width:100%; }
  .portal-calendar .cal-job small { font-size:10px; line-height:1.35; }
  .portal-calendar a.cal-job,.portal-calendar button.cal-job { display:flex; flex-direction:column; justify-content:center; min-height:44px; }
  .portal-calendar .cal-week span { font-size:11px; }
  .calendar-panel.compact .cal-day { min-height:44px; font-size:12px; }
  .calendar-link { display:flex; align-items:center; min-height:44px; font-size:12px; }
  .dashboard-side { grid-template-columns:minmax(0,1fr); }
  .dashboard-side .panel + .panel { margin-top:0; }

  .jobs-table thead { display:none; }
  .jobs-table,.jobs-table tbody { display:block; width:100%; }
  .jobs-table tr { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px 16px; padding:17px 20px; border-bottom:1px solid #e5ebec; }
  .jobs-table tr:last-child { border-bottom:0; }
  .jobs-table td { display:block; min-width:0; padding:5px 0 !important; border:0; overflow-wrap:anywhere; }
  .jobs-table td:first-child { grid-column:1/-1; }
  .jobs-table td:last-child { display:flex; justify-content:flex-end; align-items:end; grid-column:-2/-1; }
  .jobs-table .job-title { display:flex; align-items:center; min-width:0; min-height:44px; margin:0; padding:6px 0; line-height:1.45; }
  .jobs-table td[data-label]::before { content:attr(data-label); display:block; margin-bottom:6px; font-size:10px; color:#6a7c82; text-transform:uppercase; letter-spacing:.06em; }
  .jobs-table .job-ap { line-height:1.5; }
}
@media screen and (max-width:650px) {
  .jobs-table tr { grid-template-columns:repeat(2,minmax(0,1fr)); gap:5px 15px; padding:15px; }
  .builder-card .form-grid { grid-template-columns:minmax(0,1fr); }
  .builder-card .span-2 { grid-column:1; }
  .portal-calendar .cal-day { min-height:60px; padding:6px 3px; }
  .portal-calendar .cal-job { display:none; }
  .portal-calendar .calendar-body { padding:11px; }
}


/* Personal dashboard: one period, then a clear list for each working day. */
.schedule-page-head .actions{gap:10px}
.my-schedule{overflow:hidden}
.schedule-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px;border-bottom:1px solid #e5ece8}
.schedule-views{display:flex;gap:4px;padding:4px;background:#f0f3f1;border-radius:10px;flex-shrink:0}
.schedule-views button{min-height:44px;padding:10px 18px;border:0;border-radius:7px;background:transparent;color:#496474;font-size:14px;font-weight:600;white-space:nowrap}
.schedule-views button[aria-pressed="true"]{background:#233e4d;color:#fff;box-shadow:0 2px 6px #20394215}
.schedule-period{text-align:right}
.schedule-period h2{font-size:18px;color:#243f4c;margin:0 0 8px}
.schedule-totals{display:flex;justify-content:flex-end;gap:14px;font-size:12px;color:#5b7280;flex-wrap:wrap}
.schedule-totals strong{color:#2b4856;font-weight:650}
.schedule-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;padding:20px 24px;border-bottom:1px solid #e5ece8;background:#fbfcfa}
.schedule-date{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-width:0;min-height:94px;padding:10px 6px;border:1px solid #e1e8e4;border-radius:9px;background:white;color:#466271}
.schedule-date:hover{background:#f5f7f1;border-color:#afc0ba}
.schedule-date strong{font-size:23px;line-height:1.1;color:#233f4c}
.schedule-weekday{font-size:12px}
.schedule-day-count{color:#84958e;font-size:11px}
.schedule-day-count.has-jobs{color:#36586b;font-weight:650}
.schedule-date.today{border-color:#d8b745;background:#fff9df}
.schedule-date.selected{box-shadow:inset 0 0 0 2px #35596a;border-color:#35596a;background:#eef4f5}
.schedule-date:focus-visible{outline:3px solid #c9a92e;outline-offset:2px}
.schedule-day-group+.schedule-day-group{border-top:1px solid #dfe8e3}
.schedule-day-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 24px;background:#f8faf8}
.schedule-day-heading h2{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0;color:#345363;font-size:15px}
.schedule-day-heading>span{font-size:12px;color:#627b85;white-space:nowrap}
.schedule-today-label{font-size:10px;background:#f2e4a1;color:#625520;border-radius:4px;padding:4px 7px;font-weight:650}
.schedule-job{display:grid;grid-template-columns:86px minmax(0,1fr) auto 20px;align-items:center;gap:20px;padding:18px 24px;border-top:1px solid #edf1ec;min-height:90px;background:white}
.schedule-job:hover{background:#fcfcf4}
.schedule-job:focus-visible{outline-offset:-3px}
.schedule-time{border-right:1px solid #e4ebe6;padding-right:16px;color:#45616e}
.schedule-time strong{font-size:14px;display:block;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.schedule-time small{display:block;margin-top:5px;color:#6d818a;font-size:10px}
.schedule-job-copy{min-width:0}
.schedule-job-copy h3{font-size:14px;line-height:1.5;color:#234858;margin:0 0 5px;font-weight:650;overflow-wrap:anywhere}
.schedule-job-copy p{margin:0;color:#5d7681;font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.schedule-job-copy p span{padding:0 5px}
.schedule-span{display:block;font-size:11px;color:#6d818a;margin-top:6px}
.schedule-open{display:flex;color:#65808b}
.schedule-empty{padding:28px 24px;color:#607780;text-align:center}
.schedule-empty h3{font-size:16px;color:#355363;margin:0 0 8px}
.schedule-empty p{font-size:13px;margin:0}
.schedule-filter{display:flex;justify-content:space-between;align-items:center;padding:8px 24px;border-bottom:1px solid #e5ece8;font-size:12px;color:#5f7781}
.schedule-extra{margin-top:18px!important}
.schedule-extra summary{padding:19px 24px;cursor:pointer;font-weight:600;font-size:13px;color:#4c6875}
.schedule-detail-hint{font-weight:400;color:#6b8088;font-size:11px;margin-left:16px}
.schedule-extra .activity{margin:0}
.schedule-month{padding:16px 24px 22px;border-bottom:1px solid #e5ece8;background:#fbfcfa}
.schedule-month-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}
.schedule-month-heading p{font-size:12px;color:#617d88;margin:0}
.schedule-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.schedule-weekdays{grid-column:1/-1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.schedule-weekdays span{text-align:center;font-size:11px;color:#67808a;padding:4px 0 8px}
.schedule-month-grid .schedule-date{min-height:66px;gap:4px;padding:7px 3px}
.schedule-month-grid .schedule-date strong{font-size:17px}
@media(max-width:1100px){
 .schedule-toolbar{flex-wrap:wrap;padding:20px}
 .schedule-period{text-align:left}
 .schedule-totals{justify-content:flex-start}
 .schedule-job{gap:16px}
}
@media(max-width:650px){
 .schedule-page-head .actions{width:100%}
 .schedule-toolbar{padding:16px;gap:16px}
 .schedule-views{width:100%}
 .schedule-views button{flex:1;padding:10px 8px;font-size:13px}
 .schedule-period h2{font-size:17px}
 .schedule-week{padding:14px 12px;gap:4px}
 .schedule-date{min-height:83px;padding:8px 2px;border-radius:6px;gap:7px}
 .schedule-date strong{font-size:20px}
 .schedule-weekday,.schedule-day-count{font-size:10px}
 .schedule-day-heading{padding:15px}
 .schedule-day-heading h2{font-size:14px}
 .schedule-job{grid-template-columns:67px minmax(0,1fr);gap:8px 14px;padding:16px;min-height:110px}
 .schedule-time{grid-row:span 2;align-self:stretch;display:flex;flex-direction:column;justify-content:center;padding-right:10px}
 .schedule-time strong{font-size:12px}
 .schedule-job-copy h3{font-size:13px}
 .schedule-job-copy p{font-size:11px}
 .schedule-job>.badge{grid-column:2;justify-self:start}
 .schedule-open{display:none}
 .schedule-filter{padding:8px 15px}
 .schedule-extra summary{padding:18px 16px}
 .schedule-detail-hint{display:block;margin:8px 0 0}
 .schedule-month{padding:12px}
 .schedule-month-heading{flex-wrap:wrap;gap:8px}
 .schedule-month-heading .actions{width:100%;justify-content:space-between}
 .schedule-month-grid{gap:4px}
 .schedule-month-grid .schedule-date{min-height:57px}
 .schedule-month-grid .schedule-date strong{font-size:15px}
}
