:root{--green:#006747;--green-dark:#004d36;--green-light:#e8f4ee;--ink:#18302b;--text:#253b35;--muted:#63736d;--border:#d8e3dd;--bg:#f4f8f5;--white:#fff;--danger:#9f2929;--warning:#805400}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.topbar{background:var(--green);color:#fff;padding:0 24px;min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.brand{font-weight:700;color:#fff;text-decoration:none;font-size:18px}.topnav{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.topnav a{color:#fff;text-decoration:none;font-size:13px}.topnav a:hover{text-decoration:underline}.who{font-size:12px;color:#e4f1e9}
.container{max-width:1240px;margin:28px auto;padding:0 20px;min-height:70vh}h1{font-size:26px;color:var(--green-dark);margin:0 0 20px}h2{font-size:19px;color:var(--green-dark)}h3{font-size:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}.card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:18px;box-shadow:0 2px 8px #143a2710}.metric{font-size:30px;font-weight:700;color:var(--green);line-height:1.2}.muted{color:var(--muted);font-size:13px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.btn,button{display:inline-block;border:0;border-radius:7px;padding:9px 13px;background:var(--green);color:#fff;text-decoration:none;cursor:pointer;font:inherit;font-size:14px}.btn:hover,button:hover{background:var(--green-dark)}.btn.secondary{background:#e7efea;color:var(--green-dark)}.btn.danger{background:#a72f2f}.btn.small{padding:5px 9px;font-size:12px}
form.panel,.panel{background:#fff;border:1px solid var(--border);border-radius:12px;padding:18px;margin:16px 0}.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}label{display:block;font-weight:600;font-size:13px;margin-bottom:5px}input,select,textarea{width:100%;border:1px solid #cbd8d0;border-radius:7px;padding:10px;background:#fff;color:var(--text);font:inherit}textarea{min-height:84px;resize:vertical}.field{margin-bottom:12px}
.tablewrap{overflow:auto;background:#fff;border:1px solid var(--border);border-radius:10px;margin:14px 0}table{width:100%;border-collapse:collapse;min-width:650px}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #e7eee9;vertical-align:top;font-size:13px}th{background:#edf5f0;color:#294b3c;font-weight:650;white-space:nowrap}tr:last-child td{border-bottom:0}.badge{display:inline-block;padding:3px 8px;border-radius:999px;background:#edf2ef;font-size:12px}.badge.green{background:#e0f2e6;color:#135e36}.badge.red{background:#fde8e8;color:#8d2424}.badge.amber{background:#fff1d1;color:#785000}.alert{padding:12px 15px;border-radius:8px;margin-bottom:16px;background:#e2f3e7;color:#14552f}.alert.error{background:#fde8e8;color:#8d2424}.empty{padding:24px;text-align:center;color:var(--muted)}.footer{text-align:center;color:var(--muted);padding:22px;font-size:12px}.section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.inline-form{display:inline-flex;gap:6px;align-items:center}.inline-form select{min-width:120px;width:auto;padding:6px}.narrow{max-width:520px;margin:45px auto}.notice{border-left:4px solid #c18a1b;background:#fff8e8;padding:12px;margin:12px 0;font-size:13px}
@media(max-width:700px){.topbar{padding:12px 16px}.topnav{gap:10px}.container{padding:0 12px;margin:20px auto}h1{font-size:23px}.who{width:100%}}

/* Shared event and form styling */
.badge.red-event{background:#fde3e3;color:#8b1717;border:1px solid #e9a6a6;font-weight:800;letter-spacing:.04em}
.badge.event-type{background:#e8efeb;color:#294b3c}
tr.fixture-red td{background:#fff2f2}
tr.fixture-red td:first-child{border-left:4px solid #b42323}
input[readonly],input:disabled{background:#f0f3f1;color:#52615b}
.checkbox-label{display:flex;align-items:center;gap:9px;font-weight:500}
.checkbox-label input{width:auto;margin:0}
small.muted{display:block;margin-top:5px}


/* RosterPro shift status highlighting */
.badge.red-event{display:inline-block;background:#b5121b;color:#fff;border:2px solid #7d0710;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:900;letter-spacing:.08em;box-shadow:0 0 0 2px #f7c5c7}
tr.shift-red td{background:#fff0f0}
tr.shift-red td:first-child{border-left:6px solid #b5121b}
tr.shift-red td:nth-child(2){font-weight:800;color:#8b1018}
.staffing-count{display:inline-block;min-width:34px;text-align:center;padding:3px 8px;border-radius:6px;font-weight:800;font-size:14px}
.count-under{background:#ffe1e1;color:#a20e18;border:1px solid #d92d38}
.count-over{background:#fff0cf;color:#7b4700;border:1px solid #d99a20}
.count-met{background:#dff5e5;color:#155d31;border:1px solid #83c99a}
.staffing-label{display:block;margin-top:4px;font-size:10px;font-weight:900;letter-spacing:.04em}
.count-under-label{color:#a20e18}.count-over-label{color:#7b4700}.count-met-label{color:#155d31}
tr.staffing-under td{border-top:1px solid #efb0b4;border-bottom:1px solid #efb0b4}
tr.staffing-over td{border-top:1px solid #e8c47d;border-bottom:1px solid #e8c47d}


/* v0.4: explicit, high-contrast dashboard and shift-list alerts */
.tablewrap table tbody tr.shift-red > td {
  background: #ffe0e0 !important;
  border-top: 2px solid #c51f2a;
  border-bottom: 2px solid #c51f2a;
}
.tablewrap table tbody tr.shift-red > td:first-child {
  border-left: 7px solid #b5121b;
}
.tablewrap table tbody tr.shift-red .badge.red-event {
  display: inline-block;
  background: #b5121b !important;
  color: #fff !important;
  border: 2px solid #7d0710;
  border-radius: 6px;
  padding: 5px 10px;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .08em;
  box-shadow: 0 0 0 3px #f7c5c7;
}
.tablewrap table tbody tr.staffing-under > td {
  background: #fff0f0 !important;
  border-top: 2px solid #d92d38;
  border-bottom: 2px solid #d92d38;
}
.tablewrap table tbody tr.staffing-over > td {
  background: #fff3d6 !important;
  border-top: 2px solid #d99a20;
  border-bottom: 2px solid #d99a20;
}
.tablewrap table tbody tr.staffing-under .count-under,
.tablewrap table tbody tr.staffing-under .count-under-label {
  color: #a20e18 !important;
  background: #ffe1e1;
  font-weight: 900;
}
.tablewrap table tbody tr.staffing-over .count-over,
.tablewrap table tbody tr.staffing-over .count-over-label {
  color: #7b4700 !important;
  background: #fff0cf;
  font-weight: 900;
}
.tablewrap table tbody tr.staffing-under .staffing-label,
.tablewrap table tbody tr.staffing-over .staffing-label {
  display: block;
  font-size: 11px;
  letter-spacing: .04em;
}


/* RosterPro v0.5 module layouts and high-visibility status cues */
.topbar { flex-wrap: wrap; }
.topnav { flex-wrap: wrap; }
.panel { margin-bottom: 18px; }
.panel h2 { margin-top: 0; }
.tablewrap tfoot th { background: #edf5f0; border-top: 2px solid var(--calms-border, #dce6e1); }
.badge.red { background: #b5121b; color: #fff; border: 1px solid #7d0710; font-weight: 800; }
.badge.amber { background: #fff0cf; color: #7b4700; border: 1px solid #d99a20; font-weight: 700; }
.badge.green { background: #e0f4e7; color: #075c36; border: 1px solid #78bf91; font-weight: 700; }
textarea { min-height: 90px; }

/* v0.8 compact grouped navigation */
.topnav{gap:12px}.navgroup{position:relative;display:inline-flex;align-items:center;font-size:13px;color:#fff;cursor:pointer;padding:18px 0}.navmenu{display:none;position:absolute;top:100%;left:0;min-width:190px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #10251b26;padding:6px;z-index:100}.navgroup:hover .navmenu,.navgroup:focus-within .navmenu{display:block}.navmenu a{display:block!important;color:var(--text)!important;padding:8px 10px;border-radius:5px;white-space:nowrap}.navmenu a:hover{background:var(--green-light);text-decoration:none}.navgroup>span{white-space:nowrap}@media(max-width:700px){.navgroup{padding:6px 0}.navmenu{position:absolute;top:100%;left:0}}

/* v0.8 compact grouped navigation */
.topnav{gap:12px}.navgroup{position:relative;display:inline-flex;align-items:center;font-size:13px;color:#fff;cursor:pointer;padding:18px 0}.navmenu{display:none;position:absolute;top:100%;left:0;min-width:190px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #10251b26;padding:6px;z-index:100}.navgroup:hover .navmenu,.navgroup:focus-within .navmenu{display:block}.navmenu a{display:block!important;color:var(--text)!important;padding:8px 10px;border-radius:5px;white-space:nowrap}.navmenu a:hover{background:var(--green-light);text-decoration:none}.navgroup>span{white-space:nowrap}@media(max-width:700px){.navgroup{padding:6px 0}.navmenu{position:absolute;top:100%;left:0}}

/* RosterPro v0.9 reporting tables and compact bar charts */
.copy-table table { width:100%; border-collapse:collapse; background:#fff; }
.copy-table th, .copy-table td { border:1px solid #b9c9c2; padding:9px 11px; text-align:left; vertical-align:top; }
.copy-table th { background:#eaf2ed; color:#152b2b; font-weight:600; }
.copy-table tbody tr:nth-child(even) { background:#f7faf8; }
.report-bar-row { display:grid; grid-template-columns:minmax(120px, 1.2fr) minmax(80px, 2fr) 36px; gap:10px; align-items:center; margin:10px 0; }
.report-bar-label { overflow-wrap:anywhere; font-size:.92rem; }
.report-bar-track { height:16px; background:#e6eee9; border-radius:4px; overflow:hidden; }
.report-bar-fill { height:100%; background:#006747; border-radius:4px; min-width:2px; }
.report-bar-value { text-align:right; font-weight:600; font-variant-numeric:tabular-nums; }
