*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:#f4f7fb;color:#142033}.topbar{height:88px;background:#fff;border-bottom:1px solid #dce3eb;display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:5}.brand{font-size:24px;font-weight:750}.subtitle,.lead,.userbox span{color:#64748b}.userbox{text-align:right;display:flex;flex-direction:column}.layout{display:flex;min-height:calc(100vh - 88px)}.sidebar{width:260px;background:#0f1b2d;padding:22px 14px;display:flex;flex-direction:column;gap:6px}.nav{border:0;background:transparent;color:#dbe7f5;text-align:left;padding:13px 14px;border-radius:9px;font-size:16px;cursor:pointer}.nav:hover,.nav.active{background:#1f3048;color:#fff}.divider{height:1px;background:#31435b;margin:8px 0}.main{flex:1;padding:30px;min-width:0}.screen{display:none}.screen.active{display:block}h1{font-size:28px;margin:0 0 4px}h2{font-size:18px;margin:0}.lead{margin-top:0}.notice{background:#eaf5ff;border:1px solid #b6d8f4;padding:10px 14px;border-radius:8px;margin-bottom:20px}.hidden{display:none!important}.fatal{position:fixed;inset:10px 10px auto 10px;background:#fee2e2;border:2px solid #ef4444;color:#7f1d1d;padding:14px;z-index:9999;white-space:pre-wrap}.cards{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:16px;margin:24px 0}.card,.panel{background:#fff;border:1px solid #dce3eb;border-radius:14px;box-shadow:0 4px 18px rgba(15,27,45,.05)}.card{padding:20px}.metric{font-size:32px;font-weight:750}.card span{color:#64748b}.panel{padding:20px;margin-top:18px;overflow:auto}.panelhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}button,.filebutton{font:inherit;border:1px solid #c9d4e2;background:#fff;padding:10px 14px;border-radius:8px;cursor:pointer}.primary{background:#087f8c;color:#fff;border-color:#087f8c}.danger{background:#fff;color:#b42318;border-color:#f0b4b0}.filebutton{display:inline-block}.filebutton input{display:none}.formgrid{display:grid;grid-template-columns:repeat(3,minmax(190px,1fr));gap:16px;align-items:end}.formgrid label{display:flex;flex-direction:column;gap:6px;font-weight:600}.buttoncell{display:flex;align-items:end}input,select{font:inherit;padding:10px;border:1px solid #cbd5e1;border-radius:7px;background:#fff;width:100%}table{width:100%;border-collapse:collapse}th,td{padding:10px 12px;border-bottom:1px solid #e5eaf0;text-align:left;white-space:nowrap}th{background:#f8fafc}.status{display:inline-block;padding:4px 8px;border-radius:999px;background:#edf2f7}.ok{background:#dcfce7;color:#166534}.warn{background:#fff7d6;color:#854d0e}.bad{background:#fee2e2;color:#991b1b}.message{padding:12px 14px;border-radius:8px;margin-top:15px}.empty{color:#64748b;padding:12px 0}@media(max-width:1000px){.cards{grid-template-columns:repeat(2,1fr)}.formgrid{grid-template-columns:1fr 1fr}}@media(max-width:700px){.layout{display:block}.sidebar{width:100%;flex-direction:row;overflow:auto}.nav{white-space:nowrap}.main{padding:18px}.cards,.formgrid{grid-template-columns:1fr}.topbar{position:static}}
.storage-pill{margin-top:5px;font-size:12px;padding:3px 8px;border-radius:999px;align-self:flex-end}
.storage-pill.pending{background:#eef2f7;color:#475569}
.storage-pill.good{background:#dcfce7;color:#166534}
.storage-pill.warn{background:#fff7d6;color:#854d0e}
.storage-details{margin-top:18px;padding:14px;border-radius:9px;background:#f8fafc;color:#475569;line-height:1.8}

#fileMessage .message{margin-top:14px}

.compact{grid-template-columns:repeat(5,minmax(120px,1fr));}
.compact .card{padding:14px}
.person-card{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:12px}
.person-card div{background:#f8fafc;border-radius:8px;padding:10px}
.person-card strong{display:block;font-size:12px;color:#64748b;margin-bottom:3px}
.preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.preview-box{background:#f8fafc;border-radius:10px;padding:16px}
.preview-box h3{margin-top:0}
.row-new{background:#ecfdf5}.row-changed{background:#fffbeb}.row-invalid{background:#fef2f2}.row-unchanged{color:#64748b}
.small{font-size:12px;color:#64748b}
@media(max-width:900px){.person-card,.preview-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.person-card,.preview-grid,.compact{grid-template-columns:1fr}}

.calendar-legend{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:16px;color:#475569}
.calendar-legend span{display:flex;align-items:center;gap:6px}
.legend-dot{width:12px;height:12px;border-radius:50%;display:inline-block}
.legend-dot.available{background:#22c55e}.legend-dot.limited{background:#f59e0b}.legend-dot.full{background:#ef4444}.legend-dot.standby{background:#8b5cf6}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));gap:8px}
.cal-head{font-weight:700;text-align:center;padding:8px;color:#475569}
.cal-day{min-height:118px;border:1px solid #dbe3ed;border-radius:10px;padding:10px;background:#fff;cursor:pointer;position:relative}
.cal-day:hover{box-shadow:0 4px 14px rgba(15,27,45,.10)}
.cal-day.empty{background:#f8fafc;cursor:default}
.cal-date{font-weight:700;margin-bottom:8px}
.cal-status{font-size:13px;line-height:1.5}
.cal-day.available{border-left:5px solid #22c55e}
.cal-day.limited{border-left:5px solid #f59e0b}
.cal-day.full{border-left:5px solid #ef4444}
.cal-day.standby{box-shadow:inset 0 0 0 2px #8b5cf6}
.report-summary{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:12px;margin:16px 0}
.summary-box{background:#f8fafc;border-radius:9px;padding:12px}
.summary-box strong{font-size:22px;display:block}
.attention-item{padding:10px 12px;border-bottom:1px solid #e5eaf0}
.attention-item:last-child{border-bottom:0}
@media(max-width:900px){.calendar-grid{grid-template-columns:repeat(4,minmax(110px,1fr))}}
@media(max-width:600px){.calendar-grid{grid-template-columns:repeat(2,minmax(110px,1fr))}}
@media print{
  .topbar,.sidebar,.notice,.actions,.formgrid,.nav{display:none!important}
  .layout,.main{display:block!important;padding:0!important}
  .screen{display:none!important}
  #screen-reports{display:block!important}
  #screen-reports h1,#screen-reports .lead{display:block!important}
  body{background:#fff}
  .panel{box-shadow:none;border:0;padding:0}
}

.shift-swatch{width:16px;height:16px;border-radius:4px;display:inline-block;border:1px solid rgba(15,23,42,.20)}
.shift-swatch.yellow{background:#fff3a3}
.shift-swatch.green{background:#ccebd5}
.shift-swatch.blue{background:#cfe5ff}
.shift-swatch.red{background:#ffd5d5}
.calendar-note{margin-bottom:14px}
.cal-day.shift-yellow{background:#fff9d8}
.cal-day.shift-green{background:#e9f7ed}
.cal-day.shift-blue{background:#eaf4ff}
.cal-day.shift-red{background:#fff0f0}
.cal-shift-badge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.3px;padding:2px 6px;border-radius:999px;margin-bottom:6px;border:1px solid rgba(15,23,42,.14)}
.cal-shift-badge.yellow{background:#ffe66a;color:#5f4b00}
.cal-shift-badge.green{background:#a9dfb7;color:#155724}
.cal-shift-badge.blue{background:#a9cff7;color:#123f72}
.cal-shift-badge.red{background:#f3aaaa;color:#7a1b1b}

.cal-leave-types{margin-top:7px;padding-top:7px;border-top:1px solid rgba(15,23,42,.12);display:grid;gap:3px}
.cal-leave-row{display:flex;justify-content:space-between;gap:8px;font-size:12px}
.cal-leave-row strong{font-weight:800}
.cal-leave-row.lsl strong{color:#7a4c00}
.cal-leave-row.accrued strong{color:#334155}
.cal-availability-line{margin-top:5px;font-weight:700}

.cal-type-block{margin-top:7px;padding:7px 8px;border-radius:7px;background:rgba(255,255,255,.62);border:1px solid rgba(15,23,42,.10)}
.cal-type-block:first-of-type{margin-top:8px}
.cal-type-title{display:flex;justify-content:space-between;gap:8px;font-size:12px;font-weight:800}
.cal-type-detail{font-size:11px;line-height:1.45;color:#334155}
.cal-type-detail .standby-count{color:#6d28d9;font-weight:700}

/* v1.4 compact calendar tiles */
.cal-day{min-height:0}
.cal-type-block.compact{margin-top:4px;padding:4px 6px}
.cal-type-block.compact .cal-type-title{display:block;font-size:11px;line-height:1.2;font-weight:800}
.cal-type-available{font-size:11px;line-height:1.25;font-weight:600}
.cal-type-block.compact .standby-count{font-size:10px;line-height:1.2}

/* v1.5 day/night visual indicator */
.cal-date{display:flex;align-items:center;justify-content:space-between;gap:4px}
.cal-shift-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:18px;
  height:18px;
  font-size:16px;
  line-height:1;
  font-weight:400;
  flex:0 0 auto;
}

/* v1.7 reporting */
.report-titlebar{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;margin:8px 0 14px}
.report-titlebar h2{margin:0}
.report-subtitle{font-size:12px;color:#64748b}
.report-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.report-day{min-height:128px;border:1px solid #cfd8e3;border-radius:7px;padding:6px;page-break-inside:avoid;overflow:hidden}
.report-day.empty{background:#f8fafc}
.report-day.shift-yellow{background:#fff9d8}
.report-day.shift-green{background:#e9f7ed}
.report-day.shift-blue{background:#eaf4ff}
.report-day.shift-red{background:#fff0f0}
.report-day-head{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:12px;font-weight:800;margin-bottom:4px}
.report-date-full{font-size:10px;color:#475569;font-weight:600}
.report-shift{padding:3px 0;font-size:9px;line-height:1.25}
.report-shift + .report-shift{border-top:1px solid rgba(15,23,42,.28);margin-top:3px;padding-top:4px}
.report-shift-title{display:flex;align-items:center;gap:4px;font-size:10px;font-weight:800;margin-bottom:2px}
.report-shift-icon{font-size:12px;line-height:1}
.report-leave-heading{font-size:8px;font-weight:800;color:#475569;margin:2px 0 1px;text-transform:uppercase;letter-spacing:.2px}
.report-booking-line{font-size:8px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.report-empty-shift{font-size:8px;color:#94a3b8;font-style:italic}
.report-weekday-head{font-size:10px;font-weight:800;text-align:center;color:#475569;padding:2px 0}
.summary-report-table td,.summary-report-table th{font-size:11px;padding:6px 7px}
.report-person-line{font-weight:600}
@page{size:A4 landscape;margin:8mm}
@media print{
  body{font-family:Arial,sans-serif}
  .report-controls,.report-actions-panel>.actions{display:none!important}
  #reportOutput{width:100%}
  .report-calendar{grid-template-columns:repeat(7,1fr);gap:3px}
  .report-day{min-height:28mm;padding:3px;border-radius:3px}
  .report-day-head{font-size:9px;margin-bottom:2px}
  .report-date-full{font-size:7px}
  .report-shift{font-size:7px;padding:2px 0}
  .report-shift-title{font-size:8px}
  .report-shift-icon{font-size:9px}
  .report-leave-heading{font-size:6.5px}
  .report-booking-line{font-size:6.5px}
  .report-empty-shift{font-size:6.5px}
  .report-weekday-head{font-size:8px}
  .summary-report-table td,.summary-report-table th{font-size:8pt;padding:3px 4px}
  .report-titlebar{margin:0 0 5px}
  .report-titlebar h2{font-size:13pt}
  .report-subtitle{font-size:7pt}
}

/* v1.8 FRV branding */
.frv-logo{display:block;width:100%;max-width:205px;height:auto;object-fit:contain;margin:0 auto 10px auto}
.brand-app-name{font-size:22px;line-height:1.15;font-weight:800;letter-spacing:.2px;margin-bottom:5px}
.brand .small{color:#aebdce}
.report-brand-header{display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:3px solid #d71920;padding-bottom:8px;margin-bottom:10px}
.report-brand-header img{width:180px;height:auto;display:block}
.report-brand-name{text-align:right;font-weight:800;font-size:14px;color:#0b2b4b}
.report-brand-name span{display:block;font-size:10px;font-weight:600;color:#64748b;margin-top:2px}
@media print{
 .report-brand-header{border-bottom-width:2px;padding-bottom:4px;margin-bottom:5px}
 .report-brand-header img{width:42mm}
 .report-brand-name{font-size:9pt}
 .report-brand-name span{font-size:6.5pt}
}

/* v1.8.1 branding layout fix */
.sidebar{
  overflow-x:hidden;
}
.brand{
  display:block;
  position:relative;
  width:100%;
  max-width:100%;
  overflow:hidden;
  padding:4px 8px 16px 8px;
  margin:0;
}
.frv-logo{
  display:block;
  width:100%;
  max-width:205px;
  height:auto;
  object-fit:contain;
  margin:0 auto 10px auto;
}
.brand-app-name{
  position:relative;
  display:block;
  margin:0 0 5px 0;
}
.sidebar .nav{
  position:relative;
  z-index:2;
}

/* v1.8.2 definitive title bar layout */
.topbar{
  height:84px;
  min-height:84px;
  background:#fff;
  border-bottom:1px solid #dce3eb;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:8px 24px;
  position:sticky;
  top:0;
  z-index:20;
  overflow:hidden;
}
.topbar-brand{
  min-width:0;
  display:flex;
  align-items:center;
  gap:18px;
  height:100%;
}
.topbar-logo{
  display:block;
  width:150px;
  max-width:150px;
  height:62px;
  object-fit:contain;
  object-position:left center;
  flex:0 0 150px;
}
.topbar-title{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-width:0;
}
.topbar-title strong{
  font-size:22px;
  line-height:1.1;
  color:#10243c;
}
.topbar-title span{
  margin-top:4px;
  color:#64748b;
  font-size:13px;
  white-space:nowrap;
}
.userbox{
  flex:0 0 auto;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  justify-content:center;
  text-align:right;
  min-width:220px;
  position:relative;
  z-index:21;
}
.topbar-status{
  display:flex;
  justify-content:flex-end;
  gap:6px;
  margin-top:4px;
  flex-wrap:wrap;
}
.topbar .storage-pill{
  align-self:auto;
  margin-top:0;
}
.layout{
  min-height:calc(100vh - 84px);
}
.sidebar{
  padding-top:22px;
  overflow-x:hidden;
}
.sidebar .brand{
  display:none!important;
}
@media(max-width:850px){
  .topbar{height:auto;min-height:84px;align-items:flex-start;flex-wrap:wrap}
  .topbar-logo{width:125px;max-width:125px;flex-basis:125px;height:52px}
  .topbar-title strong{font-size:19px}
  .topbar-title span{white-space:normal}
  .userbox{min-width:0;align-items:flex-start;text-align:left}
  .topbar-status{justify-content:flex-start}
}
@media print{
  .topbar{display:none!important}
}

/* v1.9 Master Data status */
.master-data-panel{
  background:#fff;
  border:1px solid #dce3eb;
  border-left:5px solid #0b2b4b;
  border-radius:12px;
  padding:16px 18px;
  margin:0 0 22px 0;
}
.master-data-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:14px;
}
.master-data-title{
  font-size:12px;
  font-weight:800;
  letter-spacing:.6px;
  color:#64748b;
}
.master-data-file{
  margin-top:3px;
  font-size:16px;
  font-weight:700;
  color:#10243c;
}
.master-data-state{
  font-size:12px;
  font-weight:800;
  border-radius:999px;
  padding:5px 10px;
  white-space:nowrap;
}
.state-good{background:#dcfce7;color:#166534}
.state-warn{background:#fff7d6;color:#854d0e}
.state-bad{background:#fee2e2;color:#991b1b}
.master-data-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(120px,1fr));
  gap:10px;
  margin-top:14px;
}
.master-data-grid>div{
  background:#f8fafc;
  border-radius:8px;
  padding:9px 11px;
}
.master-data-grid span{
  display:block;
  font-size:11px;
  color:#64748b;
  margin-bottom:2px;
}
.master-data-grid strong{
  font-size:13px;
  color:#1e293b;
}
.master-data-actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:12px;
}
@media(max-width:850px){
  .master-data-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:520px){
  .master-data-grid{grid-template-columns:1fr}
}
@media print{
  .master-data-panel{display:none!important}
}

.master-data-help{margin-top:10px;padding:10px 12px;border-radius:8px;background:#f8fafc;color:#475569;font-size:12px;line-height:1.45}
.restore-choice{margin-top:14px;padding:14px;border-radius:9px;background:#fff7d6;border:1px solid #f2d97a}
.refresh-diff{font-size:11px;color:#475569;line-height:1.35}
.delete-person{color:#b42318;border-color:#efc0bc}
.booking-refresh-summary{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:10px;margin:12px 0}
.booking-refresh-summary>div{background:#f8fafc;border-radius:8px;padding:10px}
.booking-refresh-summary strong{display:block;font-size:20px}
@media(max-width:700px){.booking-refresh-summary{grid-template-columns:1fr}}

/* v2.0.2 live personnel selection */
.booking-form{overflow:visible}
.person-picker{grid-column:1/-1;position:relative;min-width:0}
.person-picker>label{display:block;margin-bottom:6px;font-weight:600}
.person-search-input{display:flex;align-items:center;gap:8px}
.person-search-input input{min-width:0;flex:1}
.person-search-input button{flex:none}
.person-search-status{margin-top:6px;line-height:1.4}
.person-search-results{position:absolute;top:100%;left:0;right:0;z-index:15;list-style:none;margin:6px 0 0;padding:0;max-height:300px;overflow-y:auto;overscroll-behavior:contain;background:#fff;border:1px solid #b7c9d5;border-radius:9px;box-shadow:0 8px 22px rgba(15,27,45,.16)}
.person-search-option{padding:11px 14px;border-bottom:1px solid #e5eaf0;cursor:pointer;overflow-wrap:anywhere}
.person-search-option:last-child{border-bottom:0}
.person-search-option:hover,.person-search-option.active{background:#e6f5f6;box-shadow:inset 4px 0 #087f8c}
.person-search-name{display:block;font-weight:700;color:#142033}
.person-search-meta{display:block;margin-top:3px;font-size:12px;line-height:1.5;color:#475569}
.person-search-input input:focus-visible{outline:2px solid #087f8c;outline-offset:2px}
@media(max-width:700px){.person-search-results{max-height:240px}}

/* v2.0.4 Book Leave: keep Date, Shift and Leave type inputs aligned at every breakpoint. */
.booking-form > label{min-width:0;align-self:stretch;justify-content:flex-end}
.booking-form .booking-shift-note{grid-column:1/-1;margin-top:-8px;line-height:1.4;min-width:0}

/* v2.0.6: per-shift, per-leave-type availability within each date. */
.cal-day.available,.cal-day.limited,.cal-day.full{border-left:1px solid #dbe3ed}
.cal-day.standby{box-shadow:none}
.cal-tile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
.cal-type-block.compact{margin:0;min-width:0;padding:5px 5px 6px;border-width:1px;border-left-width:4px;background:rgba(255,255,255,.87)}
.cal-type-block.compact.available{border-left-color:#22c55e}
.cal-type-block.compact.limited{border-left-color:#f59e0b;background:#fff8e8}
.cal-type-block.compact.full{border-left-color:#ef4444;background:#fff0f0}
.cal-type-block.compact .cal-type-title{display:flex;align-items:center;justify-content:flex-start;gap:3px;font-size:10px;overflow-wrap:anywhere}
.cal-type-block.compact .cal-shift-icon{width:15px;height:15px;font-size:14px}
.cal-type-block.compact .cal-type-available{font-size:10px;overflow-wrap:anywhere}
.cal-type-block.compact .standby-count{color:#6d28d9;font-weight:700}
@media(max-width:1200px){.calendar-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:680px){.calendar-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:380px){.calendar-grid{grid-template-columns:repeat(1,minmax(0,1fr))}}

/* v2.0.6: each calendar day has two three-column rows: shift | LSL | accrued. */
.cal-tile-grid{display:grid;grid-template-columns:minmax(36px,.66fr) repeat(2,minmax(0,1fr));gap:4px;align-items:stretch}
.cal-shift-row-label{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;font-size:9px;font-weight:800;line-height:1.1;color:#334155;text-align:center}
.cal-shift-row-label .cal-shift-icon{width:18px;height:18px;font-size:17px}
.cal-tile-grid .cal-type-block.compact{min-width:0;padding:4px 3px 5px}
.cal-tile-grid .cal-type-title{font-size:9px;line-height:1.2;word-break:normal;overflow-wrap:anywhere}
.cal-tile-grid .cal-type-available{font-size:9px;line-height:1.25;overflow-wrap:anywhere}

/* v2.0.7: availability subtile is a distinct, keyboard-accessible booking target. */
.cal-type-block[data-calendar-leave-type]{cursor:pointer;transition:box-shadow .12s ease, transform .12s ease}
.cal-type-block[data-calendar-leave-type]:hover{box-shadow:0 0 0 2px #345d86;transform:translateY(-1px)}
.cal-type-block[data-calendar-leave-type]:focus-visible{outline:3px solid #235f99;outline-offset:2px}

/* Find Available Leave: booking shortcut */
.availability-date-link{border:0;background:transparent;padding:3px 2px;color:#087f8c;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.availability-date-link:hover{color:#075c65;background:#e8f7f8}
.availability-date-link:focus-visible{outline:2px solid #087f8c;outline-offset:3px}

/* v2.0.11: personnel add/edit modal */
.personnel-page-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.personnel-page-heading h1{margin:0}
.personnel-modal-open{overflow:hidden}
.personnel-modal{position:fixed;inset:0;background:rgba(15,27,45,.58);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}
.personnel-modal-card{background:#fff;border-radius:14px;box-shadow:0 22px 60px rgba(0,0,0,.28);padding:22px;width:min(760px,100%);max-height:calc(100vh - 40px);overflow:auto}
.personnel-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}
.personnel-modal-head button{font-size:20px;line-height:1;padding:7px 12px}
@media(max-width:700px){.personnel-modal{padding:10px}.personnel-modal-card{padding:16px;max-height:calc(100vh - 20px)}}

/* Personnel import: compact CSV heading guidance */
.personnel-csv-hint{margin-top:0.35rem;overflow-wrap:anywhere;line-height:1.5}
.personnel-csv-hint code{font-size:.92em;white-space:normal}

/* Standby applicants are always red on printed and on-screen calendar reports. */
.report-standby-heading,.report-standby-line{color:#b91c1c!important;font-weight:800}
.report-standby-line{white-space:normal;overflow-wrap:anywhere;line-height:1.25}
@media print{.report-standby-heading,.report-standby-line{color:#b91c1c!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* v2.0.17: collapsible standby dates and actionable-shift count */
.sidebar .nav[data-screen="standby"]{display:flex;align-items:center;justify-content:space-between;gap:8px}
.standby-nav-badge{background:#dc2626;color:white;min-width:23px;height:23px;padding:2px 6px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-weight:750;font-size:12px;line-height:1}
.standby-nav-badge[hidden]{display:none!important}
.standby-date-group{border:1px solid #dce3eb;border-radius:10px;margin:10px 0;background:white;overflow:hidden}
.standby-date-group>summary{cursor:pointer;display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:13px 15px;background:#f8fafc;font-weight:650}
.standby-date-group>summary:hover{background:#edf5fb}
.standby-date-label{font-size:16px}
.standby-date-meta{font-size:13px;color:#64748b;font-weight:400}
.standby-action-indicator{margin-left:auto;background:#fff1f2;color:#b91c1c;border:1px solid #fecdd3;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:700}
.standby-date-content{overflow-x:auto;padding:4px 10px 12px}

/* v2.0.18 Bookings live person filter */
.booking-filter-person{position:relative;min-width:0;align-self:start}
.booking-filter-person>label{display:block;font-weight:600;margin-bottom:6px}
.booking-filter-person .person-search-results{z-index:20}

/* v2.0.19 local role-management prototype */
.userbox select {max-width:210px; padding:5px; border-radius:6px; background:#fff;color:#17233a}
.simulation-banner {background:#b91c1c;color:white;border:1px solid #fff;border-radius:7px;padding:7px 12px;cursor:pointer;font-weight:800;line-height:1.3}
.simulation-banner small {font-size:11px;font-weight:600}
.um-panel {margin:16px 0;padding:18px;border:1px solid #d5dbe4;border-radius:10px;background:var(--card,#fff)}
.um-row {display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:12px 0}
.um-row label {display:grid;gap:5px;min-width:210px}.um-row input,.um-row select,.um-panel select {padding:8px;max-width:320px}
.um-table {width:100%;border-collapse:collapse;margin:12px 0}.um-table th,.um-table td{padding:9px;border-bottom:1px solid #ddd;text-align:left}.um-table select {width:100%;max-width:280px}
.um-table button{margin:2px}.um-disabled {opacity:.5}.nav[hidden],.screen[hidden]{display:none!important}

.cloud-gate{position:fixed;inset:0;background:#f4f7fb;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}.cloud-auth-card{max-width:475px;width:100%;background:white;border:1px solid #d7e2ed;border-radius:16px;box-shadow:0 12px 45px #18304e18;padding:32px}.cloud-auth-card label{display:block;margin:14px 0;font-weight:600}.cloud-auth-card label input{display:block;margin-top:8px}.cloud-auth-card button{width:100%;margin-top:12px}.cloud-auth-card p{color:#64748b}.cloud-warning{background:#fff3dc;border:1px solid #e9c477;border-radius:10px;padding:14px 18px;margin-bottom:18px;color:#69400a}.cloud-warning p{margin:7px 0}.cloud-signout{padding:5px 9px;font-size:12px;margin-top:4px}.cloud-locked{opacity:.65}#screen-users .um-panel:not(:last-child){pointer-events:none;opacity:.7}@media print{.cloud-warning{display:none}}

.cloud-personnel-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:10px 0}.cloud-personnel-controls button{padding:6px 10px}#cloudPersonnelCount{margin-right:auto}.tablewrap{overflow-x:auto}