/* Styles for index.html, moved out of the page unchanged and in the same order. */

/* ---- index.html head ---- */
:root{
  --brand-green:#6cb448;--brand-green-deep:#3f8f28;--brand-pink:#e44890;--brand-cyan:#00a8d8;--brand-orange:#f09c18;
  --bg:#f3f6f1;--panel:#fff;--text:#1b2430;--muted:#5c6b66;--border:#d7e0d8;
  --accent:var(--brand-green-deep);--accent-soft:#e8f5df;
  /* Clinic colors follow the Kids Dental website and logo: pink, blue, orange, green. */
  --loc-rh-bg:#fbe7f0;--loc-rh-bd:#eea1c3;--loc-rh-ink:#8f2a5a;--loc-rh-dot:#dd5e95;
  --loc-st-bg:#e1f1f9;--loc-st-bd:#8ccbe8;--loc-st-ink:#1d5f80;--loc-st-dot:#4daad5;
  --loc-ma-bg:#fdf0dc;--loc-ma-bd:#f4c47f;--loc-ma-ink:#8a5410;--loc-ma-dot:#eea642;
  --loc-hc-bg:#e8f3df;--loc-hc-bd:#aed58f;--loc-hc-ink:#3d6b22;--loc-hc-dot:#83bd59;
  --ok:#e8f5ec;--warn:#fff4df;--bad:#fdeaea;--ga:#efe8f6;--shadow:0 7px 20px rgba(20,40,20,.06);
  --rail:#1e4a2c;--rail-width:252px;--rail-collapsed:84px;
  --font-ui:"Figtree",system-ui,-apple-system,sans-serif;--font-display:"Nunito",system-ui,sans-serif
}
*{box-sizing:border-box} body{margin:0;font-family:var(--font-ui);background:
  radial-gradient(900px 480px at 8% -8%,rgba(108,180,72,.18) 0%,transparent 55%),
  radial-gradient(700px 420px at 92% 0%,rgba(0,168,216,.12) 0%,transparent 50%),
  linear-gradient(180deg,#f7faf4 0%,var(--bg) 45%,#eef3ea 100%);
  color:var(--text);background-attachment:fixed}
button,select,input{font:inherit}.app{display:grid;grid-template-columns:var(--rail-width) 1fr;min-height:100vh;transition:grid-template-columns .22s ease}
aside{background:linear-gradient(180deg,#2f6b3e 0%,var(--rail) 42%,#163822 100%);color:#fff;padding:14px 12px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:10px;overflow:visible;z-index:45;border-right:1px solid rgba(255,255,255,.08)}
.brand{display:flex;flex-direction:column;align-items:center;gap:8px;margin:2px 2px 6px;padding:10px 8px;border-radius:14px;background:#fff;box-shadow:0 6px 16px rgba(0,0,0,.16)}
.brand-logo-full{display:block;width:min(176px,100%);height:auto}
.brand-logo-mark{display:none;width:58px;height:auto}
.brand-product{font-family:var(--font-display);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#5c6b66}
.brand-product b{color:var(--brand-green-deep);font-weight:800}
body.rail-collapsed .brand{background:transparent;box-shadow:none;padding:8px 4px}
.rail-toggle{align-self:flex-end;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#fff;border-radius:8px;width:34px;height:34px;display:grid;place-items:center;cursor:pointer;padding:0;margin:0 4px 2px}
.rail-toggle:hover{background:rgba(108,180,72,.22);border-color:rgba(108,180,72,.45)}.rail-toggle svg{width:16px;height:16px;transition:transform .22s ease}
nav{display:flex;flex-direction:column;gap:2px;flex:1;min-height:0}
nav button{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;color:#fff;text-align:left;padding:11px 12px;border-radius:10px;cursor:pointer;margin:0;font-weight:600;font-size:14px}
nav button .nav-ic{flex:0 0 auto;width:20px;height:20px;opacity:.92}
nav button .nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
nav button:hover{background:rgba(255,255,255,.1)}
nav button.active{background:linear-gradient(90deg,rgba(108,180,72,.28),rgba(108,180,72,.12));box-shadow:inset 3px 0 0 var(--brand-green)}
.nav-group{display:flex;flex-direction:column;gap:2px;position:relative}
.nav-sub{display:none;flex-direction:column;gap:2px;position:absolute;left:100%;top:0;z-index:40;margin:0;padding:8px 8px 8px 12px;min-width:210px;border:0;border-radius:0 12px 12px 0;background:#163822;box-shadow:8px 10px 24px rgba(0,0,0,.28)}
.nav-group:hover .nav-sub,
.nav-group:focus-within .nav-sub{display:flex}
.nav-sub button{justify-content:flex-start;padding:8px 12px;font-size:13px;font-weight:650}
.nav-sub button .nav-label{position:static;width:auto;height:auto;overflow:visible;clip:auto}
.nav-sub-title{display:none}
/* Menu sections: Schedule and Team are always open; Settings and Help sit at the bottom. */
.nav-section{display:flex;flex-direction:column;gap:2px}
.nav-section-title{margin:12px 12px 2px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.nav-bottom{margin-top:auto;padding-top:8px;border-top:1px solid rgba(255,255,255,.14);display:flex;flex-direction:column;gap:2px}
.nav-bottom .nav-sub{top:auto;bottom:0}
.nav-sub-sec{margin:8px 12px 2px;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.nav-chev{width:14px;height:14px;margin-left:auto;opacity:.7;flex:0 0 auto}
.nav-badge{margin-left:auto;min-width:20px;padding:1px 6px;border-radius:999px;background:#f0a63b;color:#2a1a00;font-size:11px;font-weight:800;text-align:center;line-height:16px}
body.rail-collapsed .nav-section-title{height:0;margin:6px 10px;overflow:hidden;border-top:1px solid rgba(255,255,255,.14)}
body.rail-collapsed .nav-chev{display:none}
body.rail-collapsed .nav-badge{position:absolute;top:3px;right:6px;min-width:16px;padding:0 4px;font-size:10px;line-height:14px}
/* Short laptop screens: a smaller logo and tighter rows so Settings and Help stay on screen. */
@media(min-width:981px) and (max-height:820px){
  aside{gap:6px;padding-top:10px;padding-bottom:10px}
  .brand-logo-full{width:112px}
  .brand{padding:8px;gap:4px;margin-bottom:2px}
  nav button{padding-top:8px;padding-bottom:8px}
  .nav-section-title{margin-top:8px}
  .nav-bottom{padding-top:4px}
}
body.rail-collapsed{--rail-width:var(--rail-collapsed)}
body.rail-collapsed .brand{padding:10px 4px;margin:0}
body.rail-collapsed .brand-logo-full{display:none}
body.rail-collapsed .brand-logo-mark{display:block}
body.rail-collapsed .brand-product{display:none}
body.rail-collapsed .rail-toggle{align-self:center;margin-left:0;margin-right:0}
body.rail-collapsed .rail-toggle svg{transform:rotate(180deg)}
body.rail-collapsed nav button{justify-content:center;padding-left:10px;padding-right:10px}
body.rail-collapsed nav button .nav-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
body.rail-collapsed .nav-sub button .nav-label{position:static;width:auto;height:auto;overflow:visible;clip:auto}
body.rail-collapsed .nav-sub button{justify-content:flex-start;padding-left:12px;padding-right:12px}
@media(min-width:981px){
  body.rail-collapsed nav > button,
  body.rail-collapsed .nav-section > button,
  body.rail-collapsed .nav-bottom > button,
  body.rail-collapsed .nav-group > button{position:relative}
  body.rail-collapsed nav > button:hover .nav-label,
  body.rail-collapsed nav > button:focus-visible .nav-label,
  body.rail-collapsed .nav-section > button:hover .nav-label,
  body.rail-collapsed .nav-section > button:focus-visible .nav-label,
  body.rail-collapsed .nav-bottom > button:hover .nav-label,
  body.rail-collapsed .nav-bottom > button:focus-visible .nav-label{
    position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);
    width:max-content;height:auto;overflow:visible;clip:auto;
    padding:8px 12px;border-radius:10px;background:#163822;color:#fff;
    box-shadow:8px 10px 24px rgba(0,0,0,.28);z-index:50;pointer-events:none
  }
  .nav-sub-title{display:block;padding:8px 12px 8px;margin:0 4px 4px 0;border-bottom:1px solid rgba(255,255,255,.16);font-size:13px;font-weight:800;color:#fff}
}
main{padding:24px;min-width:0}.page{display:none}.page.active{display:block;animation:pageIn .18s ease}
@keyframes pageIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.top{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:16px}
h1{font-family:var(--font-display);font-size:28px;margin:0 0 4px;letter-spacing:-.02em;font-weight:800}h2{font-size:18px;margin:0 0 10px}.sub,.muted{color:var(--muted);font-size:13px}
.grid{display:grid;gap:13px}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.two{grid-template-columns:1.1fr .9fr}.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:15px;box-shadow:var(--shadow)}.metric{font-weight:750;font-size:26px;margin-top:4px}.label{font-size:12px;color:var(--muted)}
.toolbar{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.btn{border:1px solid var(--border);background:#fff;border-radius:10px;padding:9px 11px;cursor:pointer}.btn:hover{border-color:#9bb39a}.btn.primary{background:var(--brand-green-deep);border-color:var(--brand-green-deep);color:#fff}.btn.primary:hover{filter:brightness(1.05)}.btn.active{background:var(--accent-soft);border-color:var(--brand-green)}
.btn.unsaved{background:#b45309;border-color:#b45309;color:#fff;box-shadow:0 0 0 2px #fde68a}
.btn.save-status:not(.unsaved){background:transparent;border-color:transparent;box-shadow:none;color:#15803d;cursor:default;opacity:1;font-weight:650;padding-left:6px;padding-right:6px}
.btn.save-status.is-saving:not(.unsaved){color:#64748b}
#unsavedBar{position:fixed;left:var(--rail-width);right:0;bottom:0;z-index:40;display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding:10px 18px;background:#fff7ed;border-top:1px solid #fdba74;box-shadow:0 -8px 24px rgba(15,23,42,.08);font-size:13px;font-weight:650;transition:left .22s ease}
#unsavedBar[hidden]{display:none!important}
body.has-unsaved main{padding-bottom:72px}
.account-bar{display:flex;justify-content:flex-end;align-items:center;position:sticky;top:0;z-index:35;margin:-8px 0 10px;padding:8px 0 6px;background:var(--bg)}
.account-bar[hidden]{display:none!important}
.account-cluster{position:relative;z-index:1;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.account-menu{position:relative}
.account-saved{max-width:min(420px,calc(100vw - 48px));font-size:12px;font-weight:650;line-height:1.3;text-align:right;color:var(--muted)}
.account-saved[hidden]{display:none!important}
.account-view-only{flex:0 0 auto;font-size:10px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;background:#fff4df;color:#92400e;border-radius:999px;padding:2px 6px}
.account-view-only[hidden]{display:none!important}
body.read-only main button,
body.read-only main select,
body.read-only main input,
body.read-only main textarea{pointer-events:none}
body.read-only button.read-ok,
body.read-only button.locbtn,
body.read-only .account-cluster button,
body.read-only #appStatusAction,
body.read-only .wk-label,
body.read-only .wk-ic,
body.read-only .wk-today,
body.read-only .view-toggle button,
body.read-only .staff-issue-locs button{pointer-events:auto}
body.read-only .editor-only{display:none!important}
.publish-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:0 0 12px;padding:10px 12px;border:1px solid #b7d9a8;background:#f3faef;border-radius:12px;font-size:13px;font-weight:650}
.publish-bar[hidden]{display:none!important}
.publish-bar.is-dirty{border-color:#fdba74;background:#fff7ed}
.publish-bar.is-fresh{border-color:#b7d9a8;background:#f3faef}
#publishModal .modal-card{width:min(680px,100%);max-height:min(86vh,760px);overflow:auto}
.publish-person{padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}
.publish-person ul{margin:6px 0 0;padding-left:18px}
.link-row{display:grid;grid-template-columns:minmax(140px,1.1fr) minmax(140px,.9fr) minmax(140px,.9fr) minmax(240px,1.4fr);gap:8px 12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}
.link-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.link-row input.link-pin,.schedule-link-box input.link-pin{width:88px;min-height:34px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:#fff}
.schedule-link-box{border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:#f7faf6}
.schedule-link-head{display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap;margin-bottom:8px}
.links-table{width:100%;border-collapse:collapse}
.links-table th,.links-table td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--border);vertical-align:top;font-size:14px}
.links-table th{font-size:12px;color:var(--muted)}
@media(max-width:900px){.link-row{grid-template-columns:1fr}}
.checkline{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:650;min-height:34px}
#linksTable{overflow-x:auto;-webkit-overflow-scrolling:touch}
.links-table .btn{padding:6px 8px;font-size:12px}
.links-table .to-emp-link{font-weight:inherit}
.links-table .link-full-name{font-size:13px}
.links-table tr.links-group-row td{padding:14px 6px 6px;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--surface-2,#f4f7f2);border-bottom:1px solid var(--border)}
.doc-name-pill{display:inline-flex;align-items:center;max-width:100%;padding:1px 8px;border-radius:999px;border-style:solid;border-width:1px;line-height:1.35;font-weight:750}
.links-table .link-pick{width:28px;padding-right:0}
.links-table tr.link-row-open td{border-bottom:0}
.links-table tr.link-manage-row td{padding:0 6px 10px}
.link-manage{display:flex;flex-wrap:wrap;gap:10px 22px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#f7faf6}
.link-manage-group{display:flex;flex-direction:column;gap:6px}
.link-manage-group>strong{font-size:12px;color:var(--muted)}
.link-manage input.link-pin{width:88px;min-height:30px;padding:4px 8px;border:1px solid var(--border);border-radius:8px;background:#fff}
.links-table tr.link-row-flash td{background:#fff7d6;transition:background .6s}
.links-table .link-pick input{width:16px;height:16px;margin:2px 0 0}
/* Links page controls */
.links-controls{margin-bottom:13px;padding:18px}
.links-locations{margin-bottom:13px;padding:18px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
/* Team announcements (Links page) */
.links-announce{margin-bottom:13px;padding:18px}
.links-announce h2{margin:0 0 4px}
.links-announce>p.muted{margin:0 0 8px;font-size:13px}
.links-announce>p.muted:empty{display:none}
.announce-form textarea{width:100%;box-sizing:border-box;font:inherit;font-size:14px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;resize:vertical;min-height:64px}
.announce-options,.announce-send{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:8px;font-size:13px}
.announce-options label{display:inline-flex;align-items:center;gap:6px;font-weight:600;white-space:nowrap}
.announce-send .switch-row{flex:0 0 auto;width:auto}
.announce-options select,.announce-options input{font:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--border);border-radius:8px;background:#fff}
.announce-send #announcePost{margin-left:auto}
.announce-list{display:grid;gap:6px;margin-top:10px}
.announce-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:start;padding:8px 12px;border:1px solid #b9d3ee;border-radius:10px;background:#e8f1fb}
.announce-item.is-past{background:#f7f8f9;border-color:var(--border)}
.announce-msg{margin:0;white-space:pre-line;overflow-wrap:anywhere;font-size:14px}
.announce-meta{grid-column:1;font-size:12px}
.announce-item .btn{grid-column:2;grid-row:1 / span 2;align-self:center}
.announce-empty{margin:0;font-size:13px}
.announce-past summary{cursor:pointer;font-size:13px;color:var(--muted);font-weight:700;margin:4px 0}
.announce-past .announce-item{margin-top:6px}
@media (max-width:600px){.announce-send #announcePost{margin-left:0;width:100%}}
.links-locations h2{margin:0 0 4px}
/* Clock in (Links page) */
.links-clock{margin-bottom:13px;padding:18px}
.clock-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.clock-head h2{margin:0 auto 0 0}
.links-clock>p.muted{margin:4px 0 8px;font-size:13px}
.links-clock>p.muted:empty{display:none}
.clock-group{margin:12px 0 4px;font-size:12px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}
.clock-rows{display:grid;gap:6px}
.clock-row{display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr);gap:4px 12px;align-items:center;padding:8px 12px;border:1px solid var(--border);border-radius:10px;background:#fff}
.clock-row.is-on{border-color:#9cc68e;background:#f3f9ef}
.clock-name{font-weight:700;overflow-wrap:anywhere}
.clock-punches{display:flex;flex-wrap:wrap;gap:6px;font-size:13px}
.clock-punch{display:inline-flex;flex-wrap:wrap;align-items:center;gap:3px 5px;background:#f3f6f1;border-radius:999px;padding:2px 9px}
.clock-punch b{color:#3f6b32}
.clock-flag{white-space:nowrap;font-size:11px;font-weight:800;background:#fff4df;color:#92400e;border:1px solid #f3d19c;border-radius:999px;padding:1px 7px}
.clock-empty{margin:0;font-size:13px}
.clock-pins{display:grid;gap:8px}
.clock-pin{display:grid;grid-template-columns:44px minmax(0,1fr) auto 96px;gap:8px;align-items:center}
.clock-pin b{font-size:14px}
.clock-pin input{font:inherit;font-size:14px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;min-width:0}
.clock-pin a{font-size:13px;white-space:nowrap}
.clock-radius{margin:12px 0 0;max-width:260px}
.clock-pin-help{font-size:13px;margin:0 0 8px}
@media (max-width:600px){.clock-row{grid-template-columns:1fr}.clock-pin{grid-template-columns:40px minmax(0,1fr) auto}.clock-pin a{grid-column:2}}
.clock-text-btn{border:0;background:none;padding:0;color:#1d4f8a;font:inherit;font-weight:750;cursor:pointer;text-decoration:underline}
.clock-text-btn:hover{color:#163a66}
.clock-review-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}
.clock-review-day{font-family:var(--font-display);font-size:18px}
.clock-rev-where{margin:0 0 12px}
.clock-rev-list{display:grid;gap:10px}
.clock-rev-person{border:1px solid var(--border);border-radius:12px;background:#fff;padding:12px 14px}
.clock-rev-person.has-flag{border-color:#f3d19c;background:#fffdf8}
.clock-rev-head strong{font-size:16px}
.clock-rev-split{display:grid;grid-template-columns:minmax(180px,260px) minmax(0,1fr);gap:8px 16px;margin-top:8px}
.clock-rev-expected,.clock-rev-punches{min-width:0}
.clock-rev-expected{background:#f6f9f4;border-radius:10px;padding:10px 12px}
.clock-rev-expected .k,.clock-rev-punches>.k{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.clock-rev-look{display:grid;gap:4px;margin-top:8px}
.clock-rev-row{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline;padding:6px 0;border-top:1px solid #e7eee8}
.clock-rev-row.is-fix{background:#f7faf4;border-radius:8px;padding:6px 8px;margin-top:4px}
.clock-rev-kind{color:#3f6b32}
.clock-rev-flag{font-size:13px;font-weight:700;background:#fff4df;color:#92400e;border:1px solid #f3d19c;border-radius:999px;padding:2px 8px}
button.clock-rev-flag{font:inherit;cursor:pointer}
.clock-rev-note{flex-basis:100%;color:#3f4a44}
.clock-rev-hint{margin:4px 0 0;font-size:13px;flex-basis:100%}
.clock-rev-form{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-top:8px}
.clock-rev-form input,.clock-rev-form select{font:inherit;font-size:14px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;color:var(--text)}
.clock-rev-note-field{flex:1;min-width:180px}
.clock-rev-correct{margin:4px 0 8px}
.clock-rev-add{margin-top:12px}
.clock-added{font-size:11px;font-weight:800;color:#1e4a2c;background:#e8f5df;border-radius:999px;padding:1px 7px}
@media(max-width:700px){.clock-rev-split{grid-template-columns:1fr}}
.btn.gray{background:#f3f4f6;border-color:#e5e7eb;color:#374151}
.btn.gray:hover{background:#e5e7eb}
.links-locations .btn:disabled,.links-controls .link-actions .btn:disabled,.schedule-link-box .link-actions .btn:disabled{opacity:.5;cursor:not-allowed}
.links-locations>p.muted{margin:0 0 8px;font-size:13px}
.links-locations>p.muted:empty{display:none}
.links-controls input[type=checkbox]{accent-color:var(--brand-green-deep)}
.switch-row{display:flex;align-items:flex-start;gap:12px;flex:1 1 420px;min-width:0;cursor:pointer}
.switch{position:relative;flex:0 0 auto;width:42px;height:24px;margin-top:1px}
.switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}
.switch-track{position:absolute;inset:0;border-radius:999px;background:#cbd5cc;transition:background .18s ease}
.switch-track::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .18s ease}
.switch input:checked+.switch-track{background:var(--brand-green-deep)}
.switch input:checked+.switch-track::after{transform:translateX(18px)}
.switch input:focus-visible+.switch-track{outline:2px solid var(--brand-green-deep);outline-offset:2px}
.switch input:disabled{cursor:not-allowed}
.switch input:disabled+.switch-track{opacity:.5}
.switch-text{display:grid;gap:3px;min-width:0}
.switch-text strong{font-size:15px;font-weight:750}
.switch-text .muted{line-height:1.45}
/* The same green switch, drawn on a bare checkbox (add class="sw" role="switch"). Lists of items to pick keep plain ticks. */
input[type=checkbox].sw{-webkit-appearance:none;appearance:none;position:relative;flex:0 0 auto;box-sizing:border-box;width:42px;min-width:42px;height:24px;min-height:0;margin:0;padding:0;border:0;border-radius:999px;background:#cbd5cc;cursor:pointer;vertical-align:middle;transition:background .18s ease}
input[type=checkbox].sw::before{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .18s ease}
input[type=checkbox].sw:checked{background:var(--brand-green-deep)}
input[type=checkbox].sw:checked::before{transform:translateX(18px)}
input[type=checkbox].sw:focus-visible{outline:2px solid var(--brand-green-deep);outline-offset:2px}
input[type=checkbox].sw:disabled{cursor:not-allowed;opacity:.5}
input[type=checkbox].sw.sw-sm{width:34px;min-width:34px;height:20px}
input[type=checkbox].sw.sw-sm::before{width:14px;height:14px}
input[type=checkbox].sw.sw-sm:checked::before{transform:translateX(14px)}
label:has(>input.sw){cursor:pointer}
.copy-check:has(>input.sw){align-items:center}
.links-seen{margin:0;flex:0 1 auto;max-width:100%;padding:6px 12px;border-radius:999px;background:var(--accent-soft);border:1px solid #c8e3b8;color:#2f5a22;font-size:13px;font-weight:650;line-height:1.35}
.links-seen:empty{display:none}
.links-seen:empty+.links-filters{margin-top:0}
#employeeapp .switch-row{margin:4px 0 8px}
.links-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:16px 0 0}
.links-search{position:relative;flex:1 1 260px;max-width:360px}
.links-search-icon{position:absolute;left:12px;top:50%;width:17px;height:17px;transform:translateY(-50%);color:#8b978c;pointer-events:none}
.links-search input[type=search]{border-radius:10px;padding:8px 12px 8px 38px;min-height:40px}
.links-search input[type=search]:focus{outline:2px solid rgba(63,143,40,.35);border-color:var(--brand-green)}
.links-search:focus-within .links-search-icon{color:var(--brand-green-deep)}
select.links-filter{width:auto;min-height:40px;padding:8px 34px 8px 12px;border-radius:10px;font-size:14px;font-weight:650;color:#243028;cursor:pointer;-webkit-appearance:none;appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='%236b756c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center/12px}
select.links-filter:hover{border-color:var(--brand-green)}
select.links-filter:focus{outline:2px solid rgba(63,143,40,.35);border-color:var(--brand-green)}
select.links-filter:not(:has(option[value=""]:checked)){background-color:var(--accent-soft);border-color:var(--brand-green);color:#2f5a22}
select.links-filter.people-sort:not(:hover):not(:focus){background-color:#fff;border-color:var(--border);color:#243028}
.filter-chip{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:8px 14px;border:1px solid var(--border);border-radius:999px;background:#fff;font-size:14px;font-weight:650;color:#243028;cursor:pointer;user-select:none}
.filter-chip:hover{border-color:var(--brand-green)}
.filter-chip input{width:16px;height:16px;margin:0}
.filter-chip:has(input:checked){background:var(--accent-soft);border-color:var(--brand-green);color:#2f5a22}
#linksNote:empty{display:none}
#linksNote{margin:10px 0 0}
#linksTable{margin-top:14px}
.links-bulk{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;margin:0 0 10px;padding:8px 12px;border:1px dashed #c5d4c4;border-radius:12px;background:rgba(255,255,255,.6)}
.links-bulk.has-selection{border-style:solid;border-color:#c8e3b8;background:var(--accent-soft)}
.links-bulk .checkline{min-height:32px}
.links-bulk.has-selection>.muted{color:#2f5a22;font-weight:700}
.links-bulk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
.links-bulk select.links-filter{min-height:34px;padding-top:6px;padding-bottom:6px;font-size:13px}
.links-bulk .btn{padding:7px 12px;font-size:13px}
@media(max-width:560px){.links-controls{padding:12px}.links-search{max-width:none;flex-basis:100%}select.links-filter,.filter-chip{flex:1 1 100%}.links-bulk-actions{margin-left:0}}
.links-table select,.schedule-link-box select{min-width:168px;min-height:34px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:#fff}
@media(max-width:800px){
  .links-table,.links-table tbody,.links-table tr,.links-table td{display:block;width:100%}
  .links-table thead{display:none}
  .links-table tr{border:1px solid var(--border);border-radius:12px;margin:0 0 10px;padding:8px 4px}
  .links-table td{border:0;padding:4px 8px}
  .links-table th.link-pick{display:none}
  .links-table tr.link-row-open{border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:0;border-bottom:0}
  .links-table tr.link-manage-row{margin-top:0;border-top:0;border-top-left-radius:0;border-top-right-radius:0;padding-top:0}
  .links-table tr.link-manage-row td{box-sizing:border-box}
  .links-table tr.link-manage-row td::before{display:none}
  .link-manage{flex-direction:column;box-sizing:border-box;max-width:100%}
  .links-table tr.links-group-row{border:0;padding:0;margin:14px 0 6px}
  .links-table tr.links-group-row td{background:none;border:0;padding:0 4px}
  .links-table td::before{content:attr(data-label);display:block;font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}
}
/* Status messages float over the top of the page (a toast), so showing or hiding one never pushes the page down. */
#appStatus{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;position:fixed;z-index:75;top:10px;left:calc(var(--rail-width,0px) + (100vw - var(--rail-width,0px))/2);transform:translateX(-50%);width:max-content;max-width:min(620px,calc(100vw - var(--rail-width,0px) - 32px));margin:0;box-shadow:0 10px 28px rgba(15,23,42,.16)}
@media(max-width:980px){#appStatus{left:50%;max-width:calc(100vw - 24px)}}
#appStatus[hidden]{display:none!important}
#appStatusText{min-width:0}
#appStatusAction{flex:0 0 auto;display:inline-flex;align-items:center}
#appStatusAction[hidden]{display:none!important}
.account-menu-btn{display:inline-flex;align-items:center;gap:8px;max-width:min(320px,calc(100vw - 48px));border:1px solid var(--border);background:#fff;border-radius:999px;padding:8px 12px;cursor:pointer;font-weight:700;font-size:13px;color:var(--accent);box-shadow:var(--shadow)}
.account-menu-btn:hover{border-color:#94a3b8}
.account-menu-btn span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-caret{font-size:11px;color:var(--muted)}
.account-menu-pop{position:absolute;top:calc(100% + 6px);right:0;min-width:160px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 34px rgba(15,23,42,.18);padding:6px}
.account-menu-pop[hidden]{display:none!important}
.account-menu-pop button{display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:8px;padding:9px 10px;cursor:pointer;font-weight:700}
.account-menu-pop button:hover{background:#f1f5f9}
table{width:100%;border-collapse:collapse;min-width:790px}.table-wrap{overflow:auto}th,td{padding:9px 8px;border-bottom:1px solid var(--border);font-size:14px;text-align:left}th{background:#f8fafc;color:#334155}
select,input[type=number],input[type=text],input[type=email],input[type=search],input[type=time]{width:100%;border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px;min-height:38px}
select.rule-bad{border-color:#c24141;background:#fff8f8}.pill{display:inline-block;font-size:11px;font-weight:700;padding:4px 7px;border-radius:999px}.pill.ok{background:var(--ok)}.pill.warn{background:var(--warn)}.pill.bad{background:var(--bad)}.pill.ga{background:var(--ga)}
button.pill{border:0;font:inherit;line-height:1.2}
button.pill.review-jump{cursor:pointer}
button.pill.review-jump:hover{filter:brightness(.97);box-shadow:0 0 0 2px #e4b8b8}
.issue.issue-target{box-shadow:0 0 0 2px var(--accent);background:#fff4f4}
.banner{border:1px solid #b7d9a8;border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:12px;background:var(--ok);color:#1f3d1a}.banner.ok,.banner.info{background:var(--ok);border-color:#b7d9a8;color:#1f3d1a}.banner.warn{background:var(--warn);border-color:#f0d59a;color:#6b4a12}.banner.bad{background:var(--bad);border-color:#e4b8b8;color:#7f1d1d}.banner.is-working{display:flex;align-items:center;gap:8px}.work-spin{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;flex:0 0 auto;animation:workSpin .7s linear infinite}@keyframes workSpin{to{transform:rotate(360deg)}}.btn.is-working{display:inline-flex;align-items:center;gap:8px;cursor:progress}body.is-generating,body.is-generating button,body.is-generating a,body.is-generating select,body.is-generating input{cursor:progress}@media (prefers-reduced-motion:reduce){.work-spin{animation:none;opacity:.7}}.empty-state,.ovr-empty,.br-empty,.staff-sec-empty,.rule-empty{padding:14px;border:1px dashed #c5d4c4;border-radius:10px;color:var(--muted);font-size:13px;text-align:center;background:rgba(255,255,255,.55)}.issue{background:var(--bad);border-radius:8px;padding:8px 10px;margin:6px 0;font-size:13px}.soft{background:var(--warn)}
.issue.overridden{background:#f3f4f6;border:1px dashed var(--border);opacity:.95}
.issue-meta{display:inline-flex;align-items:center;gap:4px;margin-right:6px;vertical-align:middle}
.issue-when,.issue-loc{display:inline-flex;align-items:center;font-size:11px;font-weight:800;line-height:1.2;border-radius:999px;padding:2px 7px;white-space:nowrap;vertical-align:middle}
.issue-when{background:#fff;border:1px solid rgba(15,23,42,.14);color:#1e293b}
.issue-loc{border:1px solid}
.issue-loc.loc-RH{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd);color:var(--loc-rh-ink)}
.issue-loc.loc-ST{background:var(--loc-st-bg);border-color:var(--loc-st-bd);color:var(--loc-st-ink)}
.issue-loc.loc-MA{background:var(--loc-ma-bg);border-color:var(--loc-ma-bd);color:var(--loc-ma-ink)}
.issue-loc.loc-HC{background:var(--loc-hc-bg);border-color:var(--loc-hc-bd);color:var(--loc-hc-ink)}
.issue-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.issue-actions .btn{padding:6px 10px;font-size:12px}
.issue-override-hint{font-size:11px}
.month-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.cal-head{text-align:center;font-size:11px;font-weight:700;color:var(--muted);padding:4px}.cal-cell{min-height:120px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:8px;display:flex;flex-direction:column;gap:6px}.cal-cell.other{opacity:.38}.cal-num{font-size:12px;font-weight:750}.cal-locs{display:flex;gap:4px;flex-wrap:wrap}.locbtn{border:1px solid var(--border);border-radius:8px;background:#f8fafc;padding:5px 6px;font-size:10px;cursor:pointer;font-weight:700;text-align:left;line-height:1.3}.locbtn:hover{filter:brightness(.97);box-shadow:0 0 0 2px rgba(31,78,120,.18)}.locbtn.loc-RH{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd);color:var(--loc-rh-ink)}.locbtn.loc-ST{background:var(--loc-st-bg);border-color:var(--loc-st-bd);color:var(--loc-st-ink)}.locbtn.loc-MA{background:var(--loc-ma-bg);border-color:var(--loc-ma-bd);color:var(--loc-ma-ink)}.locbtn.loc-HC{background:var(--loc-hc-bg);border-color:var(--loc-hc-bd);color:var(--loc-hc-ink)}.cycle{font-size:10px;color:var(--muted);margin-top:auto}
#restorePointsCard.data-recovery{background:linear-gradient(180deg,#f3faf0,#fff 42%);border-color:#b7d9a8}
#restorePointsDetails summary{display:inline-block;background:#dcfce7;border:1px solid #86efac;color:#166534;border-radius:999px;padding:5px 12px;font-weight:650;font-size:13px;cursor:pointer}
.staff-location-card.dash-jump,.staff-location-card.history-lock.dash-jump{box-shadow:0 0 0 2px var(--accent),var(--shadow)}
.detail{border:1px solid var(--border);border-radius:10px;padding:12px;margin-top:12px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.detail-box{border:1px solid var(--border);border-radius:10px;padding:10px}
.employee-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.employee-sections{display:grid;gap:18px}.employee-section-head{display:flex;align-items:baseline;gap:10px;margin:4px 0 10px}.employee-section-head h2{margin:0;font-size:16px}.employee-section-head .muted{font-size:12px}.employee{border:1px solid var(--border);border-radius:10px;background:#fff;padding:11px}.pill.doctor{background:#ede9fe;color:#5b21b6}.employee strong{display:block}.employee span{font-size:12px;color:var(--muted)}
.rule-grid{display:grid;grid-template-columns:1.2fr .55fr .55fr .65fr 1fr;gap:8px;align-items:center;border-bottom:1px solid var(--border);padding:9px 0}.rule-head{font-size:11px;color:var(--muted);font-weight:750}
.loc-card{border:1px solid var(--border);border-radius:10px;padding:12px;background:#fff}.loc-card strong{font-size:16px}

.employee-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.employee-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.btn.danger{border-color:#fecaca;background:#fef2f2;color:#991b1b}.btn.danger:hover{background:#fee2e2}.meta-list{margin-top:8px;display:grid;gap:4px;font-size:12px;color:var(--muted)}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.42);display:grid;place-items:center;padding:18px;z-index:50}.modal-backdrop[hidden]{display:none}.employee-cancel-warn{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;margin:0;padding:10px 12px;border-radius:10px;background:#fff7ed;border:1px solid #fdba74;color:#9a3412;font-size:13px;font-weight:700}.employee-cancel-warn[hidden]{display:none!important}.employee-cancel-warn span{margin-right:auto}.modal-card{width:min(900px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:14px;padding:18px;box-shadow:0 24px 60px rgba(0,0,0,.22)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field{display:grid;gap:5px;font-size:13px}.field[hidden]{display:none!important}.field span{font-weight:650}.field-block{margin-top:15px;padding-top:13px;border-top:1px solid var(--border)}.check-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}.check-item{display:flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:8px;padding:7px 9px;background:#fff}.rule-edit-row{display:grid;grid-template-columns:120px 1fr auto;gap:8px;align-items:center;margin-top:8px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:999px;margin-right:5px;background:#16a34a}.status-dot.inactive{background:#9ca3af}@media(max-width:680px){.form-grid{grid-template-columns:1fr}.rule-edit-row{grid-template-columns:1fr}.modal-card{padding:14px}}

.year-horizon{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.week-title{font-size:14px;font-weight:700}.vacation-list{display:grid;gap:8px;margin-top:9px}.vacation-item{display:grid;grid-template-columns:1fr 1fr .8fr .8fr 1.5fr auto;gap:7px;align-items:center;border:1px solid var(--border);border-radius:10px;padding:8px;background:#fafafa}.vac-badge{display:inline-block;padding:3px 7px;border-radius:999px;font-size:11px;font-weight:700;background:#e8f0fe}.vac-badge.pending{background:var(--warn)}.vac-badge.approved{background:var(--ok)}.date-head{font-size:11px;color:var(--muted);display:block;font-weight:500}.annual-note{padding:9px 11px;border-radius:10px;background:var(--accent-soft);font-size:13px;margin-bottom:12px}.vacation-calendar-mark{font-size:10px;padding:2px 5px;border-radius:8px;background:#fee2e2;display:inline-block;margin-top:2px}
@media(max-width:760px){.vacation-item{grid-template-columns:1fr 1fr}.vacation-item .wide{grid-column:1/-1}}
.vacation-ro{display:grid;grid-template-columns:1.6fr .7fr 1.1fr 1.1fr;gap:8px;align-items:center;border:1px solid var(--border);border-radius:10px;padding:8px;background:#fafafa;font-size:13px}.vacation-ro-head{background:transparent;border:0;padding:0 8px;font-size:11px;font-weight:700;color:var(--muted)}
@media(max-width:760px){.vacation-ro{grid-template-columns:1fr 1fr}}


.vac-summary-row{display:grid;grid-template-columns:1.3fr .8fr .8fr .7fr .7fr 1.2fr auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border);font-size:12px}
.vac-summary-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.vac-summary-head{font-weight:700;color:var(--muted);font-size:11px}
.vac-summary-card{max-width:1040px}
@media(min-width:761px){.vac-summary-card .vac-summary-row{grid-template-columns:1.5fr .8fr .8fr .7fr minmax(170px,1fr) 1fr 200px}}
.vac-edit{border:1px solid var(--border);border-radius:14px;padding:12px;margin:8px 0 12px;background:#f8fbfa;display:grid;gap:8px;font-size:13px}
.outside-horizon{opacity:.28;pointer-events:none}
.cal-cell.history{background:#f4f5f4}
select.history-lock:disabled{opacity:1;color:inherit;cursor:default;background:#f3f4f6}
.emp-cal-chip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;box-sizing:border-box;font-size:14px;font-weight:800;line-height:1.15;padding:7px 8px;border-radius:10px;background:var(--brand-green);border:1px solid #4ea332;color:#fff;margin:2px 0}.emp-cal-chip .emp-cal-hours{font-size:11px;font-weight:750;line-height:1.25;color:#f3ffe8}.emp-cal-chip.vac{background:#fee2e2;border-color:#f5c2c2;color:#991b1b}.emp-cal-chip.off{width:auto;background:#f3f4f6;border-color:var(--border);color:var(--muted);font-weight:700;font-size:12px;padding:4px 8px}.emp-cal-chip.ga{background:#3b82f6;border-color:#1d4ed8;color:#fff}.emp-cal-chip.ga .emp-cal-hours{color:#eff6ff}#employeeScheduleModal .modal-card{width:min(1100px,100%);max-height:calc(100vh - 28px);display:flex;flex-direction:column;overflow:hidden}#employeeScheduleModal .top,#employeeScheduleModal .emp-schedule-nav,#empScheduleFooter{flex:0 0 auto}#employeeScheduleModal #empMonthCalendar{min-height:0;overflow:auto;flex:1 1 auto}#employeeScheduleModal .cal-cell{min-height:112px;cursor:default}#employeeScheduleModal .cal-cell.clickable{cursor:pointer}#employeeScheduleModal .cal-cell.clickable:hover{border-color:#94a3b8;background:#f8fafc}#empScheduleFooter{margin-top:12px;font-size:13px;color:var(--muted)}
.emp-schedule-nav{width:100%;align-items:center}
.emp-span-toggle{display:inline-flex;margin-left:auto;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff}
.emp-span-toggle .btn{border:0;border-radius:0;box-shadow:none}
.emp-span-toggle .btn+.btn{border-left:1px solid var(--border)}
.emp-span-toggle .btn.active{background:var(--brand-green);color:#fff}
.emp-span-boards{display:grid;gap:14px;align-items:start}
.emp-span-boards.quarter{grid-template-columns:1fr;gap:28px}
.emp-span-boards.year{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 14px}
.emp-span-month>h3{margin:0 0 8px;font-size:16px;font-weight:800;font-family:var(--font-display)}
#employeeScheduleModal.span-year .cal-cell{min-height:0;padding:3px 3px;gap:2px;border-radius:8px}
#employeeScheduleModal.span-year .cal-num{font-size:11px}
#employeeScheduleModal.span-year .cal-head{font-size:10px;padding:1px 0}
#employeeScheduleModal.span-year .month-calendar{grid-template-columns:repeat(5,minmax(0,1fr));gap:3px}
#employeeScheduleModal.span-year .emp-cal-chip{font-size:11px;padding:2px 3px;border-radius:8px;margin:1px 0;line-height:1.2;width:100%}
#employeeScheduleModal.span-year .emp-cal-chip .emp-cal-loc,#employeeScheduleModal.span-year .emp-cal-chip .emp-cal-hours{display:block;white-space:nowrap;max-width:100%}
#employeeScheduleModal.span-year .emp-cal-chip .emp-cal-hours{font-size:10px}
#employeeScheduleModal.span-year .emp-cal-chip.off{font-size:10px;padding:2px 6px;width:auto}
#employeeScheduleModal.span-year .vac-chip{font-size:10px;padding:1px 4px;white-space:nowrap}
#employeeScheduleModal.span-year .emp-span-month>h3{font-size:13px;margin-bottom:6px}
@media(max-width:800px){.emp-span-boards.year{grid-template-columns:1fr}}
@media(max-width:680px){#employeeScheduleModal .month-calendar{grid-template-columns:repeat(7,minmax(0,1fr))}#employeeScheduleModal .cal-head{display:block}}
@media(max-width:760px){.vac-summary-row{grid-template-columns:1fr 1fr}.vac-summary-head{display:none}}


.staff-day-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.staff-day-tabs .btn{min-width:0;display:inline-flex;align-items:center;gap:8px;padding:12px 16px;font-size:16px;font-weight:700;line-height:1.2;min-height:48px;white-space:nowrap}
.staff-location-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.staff-location-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:9px 10px;box-shadow:var(--shadow);min-width:0}
.staff-location-card[data-loc="RH"]{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd)}
.staff-location-card[data-loc="ST"]{background:var(--loc-st-bg);border-color:var(--loc-st-bd)}
.staff-location-card[data-loc="MA"]{background:var(--loc-ma-bg);border-color:var(--loc-ma-bd)}
.staff-location-card[data-loc="HC"]{background:var(--loc-hc-bg);border-color:var(--loc-hc-bd)}
.staff-location-card.closed{opacity:.62;background:#fafafa}
.staff-location-head{display:flex;flex-direction:column;gap:6px;margin:0 0 8px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.staff-loc-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.staff-location-head.split{flex-direction:row;align-items:flex-start;justify-content:space-between;gap:10px}
.staff-loc-left{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1 1 auto}
.staff-loc-alerts{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:0 0 auto;max-width:45%}
.staff-loc-alerts>*{margin:0!important;white-space:nowrap}
.staff-loc-ident{display:flex;align-items:center;flex-wrap:wrap;gap:6px;min-width:0}
.staff-loc-day{display:inline-flex;align-items:center;padding:5px 12px;border:1px solid var(--border);border-radius:10px;background:#fff;font-size:14px;font-weight:700;color:#1b2430;line-height:1.2;white-space:nowrap}
.staff-loc-code{display:inline-flex;align-items:center;justify-content:center;min-width:0;padding:5px 12px;border-radius:999px;font-size:14px;font-weight:800;letter-spacing:0;line-height:1.2;white-space:nowrap}
.staff-loc-code.loc-RH{background:var(--loc-rh-bg);color:var(--loc-rh-ink)}
.staff-loc-code.loc-ST{background:var(--loc-st-bg);color:var(--loc-st-ink)}
.staff-loc-code.loc-MA{background:var(--loc-ma-bg);color:var(--loc-ma-ink)}
.staff-loc-code.loc-HC{background:var(--loc-hc-bg);color:var(--loc-hc-ink)}
.staff-location-card[data-loc="RH"] .staff-loc-code.loc-RH{background:var(--loc-rh-dot);color:#fff}
.staff-location-card[data-loc="ST"] .staff-loc-code.loc-ST{background:var(--loc-st-dot);color:#fff}
.staff-location-card[data-loc="MA"] .staff-loc-code.loc-MA{background:var(--loc-ma-dot);color:#fff}
.staff-location-card[data-loc="HC"] .staff-loc-code.loc-HC{background:var(--loc-hc-dot);color:#fff}
.staff-location-card[data-loc="RH"] .staff-location-head{border-bottom-color:var(--loc-rh-bd)}
.staff-location-card[data-loc="ST"] .staff-location-head{border-bottom-color:var(--loc-st-bd)}
.staff-location-card[data-loc="MA"] .staff-location-head{border-bottom-color:var(--loc-ma-bd)}
.staff-location-card[data-loc="HC"] .staff-location-head{border-bottom-color:var(--loc-hc-bd)}
.staff-location-head .sc-badge{margin-left:0}
.staff-loc-fill{flex:0 0 auto;font-size:11px;font-variant-numeric:tabular-nums;padding:3px 8px}
.staff-loc-meta{display:flex;flex-wrap:wrap;align-items:center;gap:2px 0;min-width:0}
.staff-loc-meta>*+*::before{content:'·';margin:0 7px;color:#b7c3bb;font-weight:700}
.staff-location-head .staff-daytype-tag{margin-left:0}
.staff-location-head .staff-shift-hours{font-size:14px;font-weight:700;color:#3d4a44}
.staff-doctors{font-size:16px;font-weight:700;color:#1b2430;margin:0;line-height:1.2}
.staff-slot-list{display:grid;gap:4px}
.staff-slot-row{display:grid;grid-template-columns:minmax(6.75rem,max-content) minmax(0,1fr);gap:6px;align-items:center;padding:3px 6px;border:1px solid var(--border);border-left-width:4px;border-radius:8px;background:#fff}
.staff-slot-main{display:flex;gap:6px;align-items:center;min-width:0}
.staff-slot-main select{flex:1;min-width:0;font-weight:700}
.staff-slot-main select option,.staff-slot-main select optgroup{font-weight:400}
.person-shift{display:inline-flex;align-items:center;gap:2px;flex:0 0 auto}
.person-shift input[type=time]{width:88px;min-width:88px;min-height:0;padding:2px 4px;font-size:11px;border:1px solid var(--border);border-radius:8px;background:#fff}
.person-shift.custom input{border-color:#b45309;background:#fff7ed}
.staff-slot-label{font-size:12px;font-weight:700;padding-top:0;line-height:1.2}
.staff-slot-label small{display:block;font-size:9px;color:var(--muted);font-weight:500;margin-top:1px}
.staff-slot-row select{border-color:inherit;min-height:30px;padding:3px 6px;font-size:13px}
.staff-slot-row select.invalid{border-color:#c24141;background-color:#fff8f8}
.staff-slot-note{grid-column:2;font-size:11px;color:var(--muted);margin-top:0;line-height:1.3}
.staff-slot-note.hard-note{color:#9b1c1c}
.staff-metrics{margin:8px 0!important;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.staff-metrics .card{padding:8px 10px;min-width:0}
.staff-metrics .metric{font-size:20px;margin-top:2px}
.staff-metric-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:flex-start}
.staff-metric-empty{font-size:12px;font-weight:650;color:var(--muted)}
.issue-pill{display:inline-flex;align-items:center;width:fit-content;max-width:100%;border:1px solid transparent;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800;line-height:1.35;cursor:default;white-space:nowrap}
.issue-pill.issue-pill-jump{cursor:pointer}
.issue-pill:hover,.issue-pill:focus,.issue-pill:focus-visible{outline:2px solid var(--brand-green-deep);outline-offset:2px}
.issue-pill.conflict{background:#fee2e2;color:#991b1b;border-color:#fca5a5}
.issue-pill.incomplete{background:#fef3c7;color:#92400e;border-color:#fcd34d}
.issue-pill.soft{background:var(--warn);color:#6b4a12;border-color:#f0d59a}
.issue-pop{position:fixed;z-index:90;box-sizing:border-box;width:min(340px,calc(100vw - 24px));max-height:min(50vh,280px);overflow:auto;overscroll-behavior:contain;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#94a3b8 transparent;padding:8px 10px;background:#fff;color:var(--text);border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 34px rgba(15,23,42,.16);font-family:var(--font-ui);font-size:12px;font-weight:650;line-height:1.4;text-align:left}
.issue-pop::-webkit-scrollbar{width:10px}
.issue-pop::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:8px}
.issue-pop[hidden]{display:none!important}
.issue-pop-title{font-size:11px;font-weight:800;margin:0 0 6px;color:#1b2430}
.issue-pop ul{margin:0;padding:0;list-style:none;display:grid;gap:5px}
.issue-pop li{padding:4px 6px;border-radius:8px}
.issue-pop li.conflict{background:#fee2e2;color:#991b1b}
.issue-pop li.incomplete{background:#fef3c7;color:#92400e}
.issue-pop li.soft{background:var(--warn);color:#6b4a12}
.issue-pop-k{display:block;font-size:10px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;opacity:.85;margin-bottom:1px}
/* Position tones — master17 Agendrix-style distinct colors (CSS fallbacks; inline color wins for customs) */
.pos-swatch{display:inline-block;width:12px;height:12px;border-radius:999px;margin-right:8px;vertical-align:-1px;border:1px solid rgba(0,0,0,.12);flex-shrink:0}
.pos-name-cell{display:flex;align-items:center;gap:2px;min-width:0}
.pos-name-cell strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.add-position-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.add-position-bar input[type=text]{flex:1;min-width:160px;max-width:280px}
.add-position-bar input[type=color]{width:42px;height:36px;padding:2px;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer}
.rule-grid{grid-template-columns:1.6fr .5fr .5fr .6fr auto}
/* master20: staffing mins per Master day type (Rules) */
.staffing-sections{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:14px;align-items:start}
.staff-sec{border:1px solid var(--border);border-radius:12px;background:#fff;overflow:hidden;min-width:0}
.staff-sec-head{padding:10px 12px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.staff-sec-head h3{margin:0;font-size:16px;font-weight:800}
.staff-sec-head .title-with-help{margin:0;gap:6px;align-items:center}
.staff-sec-head .help-tip{background:#fff}
.staff-sec-head .sec-applies{font-size:11px;opacity:.85;margin-top:2px;line-height:1.3}
.staff-sec-total{font-weight:800;font-size:12px;white-space:nowrap;background:#fff;border-radius:999px;padding:3px 9px;border:1px solid currentColor}
.staff-sec-body{padding:2px 12px}
.sec-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:6px;align-items:center;padding:7px 0;border-bottom:1px solid var(--border)}
.sec-row:last-child{border-bottom:0}
.sec-row.zero{opacity:.55}
.sec-row .sec-pos{display:flex;align-items:center;gap:6px;min-width:0}
.sec-row .sec-pos select{min-width:0;min-height:32px;padding:5px 4px;font-weight:650;font-size:13px;text-overflow:ellipsis;border-left:4px solid var(--pos-color,#94a3b8)}
.sec-row .type-sel{width:auto;min-height:32px;padding:4px 8px}
@media(max-width:560px){.sec-row{grid-template-columns:minmax(0,1fr) auto auto}.sec-row .sec-pos{grid-column:1 / -1}}
.days-strength{width:auto;max-width:100%;font-weight:750}
.count-stepper{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff}
.count-stepper button{border:0;background:#f8fafc;width:26px;height:32px;cursor:pointer;font-weight:800;font-size:16px;color:#334155}
.count-stepper button:hover{background:#e2e8f0}
.count-stepper input[type=number]{width:44px;text-align:center;border:0;border-left:1px solid var(--border);border-right:1px solid var(--border);border-radius:0;min-height:32px;padding:0;-moz-appearance:textfield}
.count-stepper input::-webkit-outer-spin-button,.count-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.sec-rm{border:1px solid transparent;background:transparent;color:#991b1b;border-radius:8px;width:30px;height:32px;cursor:pointer;font-size:16px;font-weight:800}
.sec-rm:hover{background:#fef2f2;border-color:#fecaca}
.staff-sec-empty{margin-top:4px}
.staff-sec-foot{padding:9px 12px;display:flex;gap:6px;flex-wrap:wrap;align-items:center;border-top:1px solid var(--border);background:#f8fafc}
.staff-sec-foot select{flex:1;min-width:150px;min-height:34px;padding:5px 6px}
.staff-sec-foot .btn{padding:7px 10px;font-size:12px}
.staff-sec-foot .sec-reset{margin-left:auto;color:var(--muted)}
.doctor-staff-block{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.doctor-staff-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.doctor-staff-add select{width:auto;min-width:220px}
.doc-staff-groups{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}
.doc-staff-group.pedo{grid-column:1 / -1}
.doc-staff-group{border:1px solid var(--border);border-radius:12px;padding:8px 10px 10px;background:#f8fafc;min-width:0}
.doc-staff-group.pedo{border-top:3px solid #93c5fd}
.doc-staff-group.ortho{border-top:3px solid #d8b4fe}
.doc-staff-group.os{border-top:3px solid #fca5a5}
.doc-staff-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}
.doc-staff-group-head h3{margin:0;font-size:14px;font-weight:800}
.doc-staff-count{font-size:12px;color:var(--muted);font-weight:700}
.doc-staff-empty{margin:0}
.doc-staff-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;align-items:start}
/* Columns are at least as wide as a one-line row needs, so a narrower window drops a column (3 → 2 → 1) instead of wrapping the position onto its own line. */
#doctorStaffRules .doc-staff-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,30rem),1fr))}
#doctorStaffRules .staff-sec{max-width:100%;container-type:inline-size;container-name:docstaff}
#doctorStaffRules .sec-row .sec-pos select,#doctorStaffRules .staff-sec-foot select{width:100%;max-width:100%;min-width:0}
#doctorStaffRules .staff-sec-foot{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 8px;align-items:center}
#doctorStaffRules .staff-sec-foot .sec-reset{grid-column:1 / -1;justify-self:start;margin-left:0}
/* Hard and Soft pills share one width so the stepper and × line up on every row. */
#doctorStaffRules .sec-row select.type-sel.hs-select{width:84px;min-width:84px}
/* Only a single card narrower than a one-line row (phones) stacks the position above its controls. */
@container docstaff (max-width:26rem){#doctorStaffRules .sec-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}#doctorStaffRules .sec-row .sec-pos{flex:1 0 100%;min-width:0}#doctorStaffRules .sec-row .count-stepper{flex:0 0 auto;width:auto}}
.staff-sec-head.doc-min.pedo{background:#dbeafe;color:#1e3a8a}
.staff-sec-head.doc-min.ortho{background:#f3e8ff;color:#6b21a8}
.staff-sec-head.doc-min.os{background:#fee2e2;color:#991b1b}
.staff-sec-zeros{margin:2px 0 6px}
.staff-sec-zeros summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--muted);padding:4px 0}
#staffRules.staffing-sections{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
#rules .sec-row{padding:3px 0}
#rules .staff-sec-body{padding:0 8px}
#rules .staff-sec-head{padding:8px 10px}
#rules .staff-sec-foot{padding:6px 8px}
@media(max-width:1100px){#staffRules.staffing-sections{grid-template-columns:repeat(2,minmax(0,1fr))}}
.staff-sec.addon{border-style:dashed}
.staff-sec.addon .staff-sec-total{background:#f0fdf4;border-color:#86efac;color:#166534}
.dw-doctors{display:block;width:100%;max-width:none}
.card.dw-doc{width:100%;max-width:none;padding:8px 10px;box-shadow:none;overflow:hidden}
.dw-doc h2{font-size:16px;margin:0}
.dw-doc-pos{font-size:12px;font-weight:700;color:var(--muted);margin-top:1px}
.dw-doc .mt-head{margin:-8px -10px 6px;padding:6px 10px;border-radius:12px 13px 0 0}
.card.dw-doc.pedo .mt-head{background:#dbeafe;color:#1e3a8a}
.card.dw-doc.ortho .mt-head{background:#f3e8ff;color:#6b21a8}
.card.dw-doc.os .mt-head{background:#fee2e2;color:#991b1b}
.card.dw-doc.pedo .dw-doc-pos,.card.dw-doc.ortho .dw-doc-pos,.card.dw-doc.os .dw-doc-pos{color:inherit;opacity:.82}
.dw-doc .emp-days-row{margin:6px 0 0;gap:6px 10px;padding:6px 8px}
.dw-doc .emp-days-pair{gap:5px}
.dw-doc .emp-days-pair input[type=number]{width:52px;min-height:26px;padding:1px 6px}
.dw-doc .pref-grid{gap:4px;margin:6px 0 0}
.dw-doc .hours-pair{gap:8px}
.dw-doc .hours-pair .field{min-width:0;gap:3px}
.dw-doc .hours-pair input[type=number]{width:84px;min-height:28px;padding:2px 8px}
.dw-doc .dw-form{margin-top:6px;gap:4px}
.dw-doc .dw-rule{gap:6px;padding:5px 0}
.dw-form{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.dw-form>details{align-self:stretch}
.dw-add{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:6px;margin-top:0;width:fit-content;max-width:100%}
.dw-add select{width:auto;flex:0 0 auto;min-width:9.25rem;max-width:12.5rem;min-height:34px;padding:5px 28px 5px 10px;border-radius:999px}
.dw-add select.dw-often{min-width:11.2rem;max-width:13.5rem}
.dw-add select.dw-pos{min-width:11.2rem;max-width:16rem}
.dw-add .hs-pill{flex:0 0 auto}
.dw-docs{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.dw-docs label{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:750;border:1px solid var(--border);border-radius:999px;padding:3px 8px;background:#fff;cursor:pointer}
.dw-docs input{width:auto;min-height:0;margin:0}
.dw-rule{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;padding:8px 0;border-top:1px solid var(--border)}
.dw-rule .rule-chip-text{font-weight:750}
#doctorRulesNote{margin:8px 0}
.position-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 18px;align-items:start}
.position-group h3{margin:0 0 8px;font-size:16px}
.position-group-other{grid-column:1}
.position-list{display:flex;flex-direction:column;gap:6px}
@media(max-width:980px){.position-groups{grid-template-columns:1fr}.position-group-other{grid-column:auto}}
.position-col-head,.position-row{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:10px;align-items:center}
.position-col-head{padding:0 10px 2px;font-size:11px;font-weight:750;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.position-row{border:1px solid var(--border);border-left:4px solid var(--pos-color,#94a3b8);border-radius:10px;padding:8px 10px;background:#fff}
.position-name-text{display:block;font-weight:700;padding:8px 2px}
.position-row input[type=text]{width:100%;min-height:36px;font-weight:700}
.position-row input[type=color]{width:36px;height:36px;padding:2px;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer}
.position-actions{display:flex;align-items:center;gap:4px}
.position-edit{padding:6px 10px;font-size:12px;min-height:34px}
.position-row .rmc{border:0;background:transparent;color:#991b1b;cursor:pointer;font-weight:800;font-size:18px;line-height:1;padding:4px}
.staff-daytype-tag{display:inline-block;font-size:11px;font-weight:800;border:1px solid;border-radius:999px;padding:2px 7px;margin-left:6px;vertical-align:1px;line-height:1.2}
.staff-slot-row.role-other{border-left-color:#94a3b8;background:#f8fafc;border-color:#e2e8f0}.staff-slot-row.role-other .staff-slot-label{color:#475569}
.staff-slot-row.has-pos-color{background:color-mix(in srgb, var(--pos-color) 10%, #fff);border-color:color-mix(in srgb, var(--pos-color) 35%, #e2e8f0);border-left-color:var(--pos-color)}
.staff-slot-row.has-pos-color .staff-slot-label{color:color-mix(in srgb, var(--pos-color) 70%, #0f172a)}
.staff-slot-row.has-pos-color select:not(.invalid){background-color:color-mix(in srgb, var(--pos-color) 6%, #fff);border-color:color-mix(in srgb, var(--pos-color) 40%, #cbd5e1)}
/* History weeks: location cards read as locked (view only). Current and future weeks stay colored. */
.staff-location-card.history-lock{background:#f3f4f6;color:#6b7280;box-shadow:none}
.staff-location-card.history-lock.sc-has-conflict,.staff-location-card.history-lock.sc-has-incomplete:not(.sc-has-conflict){box-shadow:inset 3px 0 0 #d1d5db}
.staff-location-card.history-lock .staff-location-head{border-bottom-color:#e5e7eb}
.staff-location-card.history-lock .staff-loc-code,.staff-location-card.history-lock .staff-loc-code.loc-RH,.staff-location-card.history-lock .staff-loc-code.loc-ST,.staff-location-card.history-lock .staff-loc-code.loc-MA,.staff-location-card.history-lock .staff-loc-code.loc-HC{background:#e5e7eb;color:#6b7280}
.staff-location-card.history-lock .staff-daytype-tag{background:#e5e7eb;border-color:#d1d5db;color:#6b7280}
.staff-location-card.history-lock .staff-shift-hours,.staff-location-card.history-lock .staff-slot-label,.staff-location-card.history-lock .staff-slot-label small,.staff-location-card.history-lock .staff-slot-note,.staff-location-card.history-lock .staff-slot-note.hard-note,.staff-location-card.history-lock .sc-reasons,.staff-location-card.history-lock .sc-reasons .sc-c,.staff-location-card.history-lock .sc-reasons .sc-i{color:#6b7280}
.staff-location-card.history-lock .staff-doctors{color:#4b5563;font-weight:750}
.staff-location-card.history-lock .pill,.staff-location-card.history-lock .sc-badge{background:#e5e7eb;border-color:#d1d5db;color:#6b7280}
.staff-location-card.history-lock .sc-reasons{background:#f8fafc;border-color:#e5e7eb}
.staff-location-card.history-lock .staff-slot-row,.staff-location-card.history-lock .staff-slot-row.role-other,.staff-location-card.history-lock .staff-slot-row.has-pos-color{background:#f8fafc;border-color:#e5e7eb;border-left-color:#d1d5db!important}
.staff-location-card.history-lock .staff-slot-row .staff-slot-label,.staff-location-card.history-lock .staff-slot-row.has-pos-color .staff-slot-label{color:#6b7280}
.staff-location-card.history-lock .staff-slot-row select,.staff-location-card.history-lock .staff-slot-row.has-pos-color select,.staff-location-card.history-lock .staff-slot-row.has-pos-color select:not(.invalid),.staff-location-card.history-lock .staff-slot-row select.invalid,.staff-location-card.history-lock select.history-lock:disabled{background:#f3f4f6;border-color:#e5e7eb;color:#6b7280;-webkit-text-fill-color:#6b7280;opacity:1;cursor:default}
.staff-location-card.history-lock .person-shift input[type=time],.staff-location-card.history-lock .person-shift.custom input{background:#f3f4f6;border-color:#e5e7eb;color:#6b7280;-webkit-text-fill-color:#6b7280;opacity:1;cursor:default}
.staff-location-card.history-lock .staff-extra{background:#f8fafc;color:#6b7280}
.support-pos-head::before{content:'';display:inline-block;width:8px;height:8px;border-radius:999px;margin-right:6px;background:var(--pos-color,#94a3b8);vertical-align:1px}
.staff-coverage{font-size:12px;font-weight:700;white-space:nowrap}
.staff-extra{margin-top:6px;padding:6px 8px;border:1px dashed var(--border);border-radius:8px;background:#fafafa}
.staff-extra-row{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:12px;padding:2px 0}
.staff-issue-section{margin-top:8px}
.staff-issues-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin-bottom:8px}
.staff-issues-head h2{margin:0}.staff-issues-day{margin-top:2px;font-size:13px;font-weight:700}
.staff-issue-locs{display:flex;gap:6px;flex-wrap:wrap}
.staff-issue-locs .btn{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 10px;font-size:12px;font-weight:800}
.staff-issue-locs .btn.loc-RH{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd);color:var(--loc-rh-ink)}
.staff-issue-locs .btn.loc-ST{background:var(--loc-st-bg);border-color:var(--loc-st-bd);color:var(--loc-st-ink)}
.staff-issue-locs .btn.loc-MA{background:var(--loc-ma-bg);border-color:var(--loc-ma-bd);color:var(--loc-ma-ink)}
.staff-issue-locs .btn.loc-HC{background:var(--loc-hc-bg);border-color:var(--loc-hc-bd);color:var(--loc-hc-ink)}
.staff-issue-locs .btn.active{box-shadow:inset 0 0 0 2px currentColor}
.staff-issue-loc-n{font-size:11px;font-weight:800;min-width:1.2em;text-align:center;opacity:.8}
.staff-issue-title{font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin:10px 0 4px}
.coverage-good{background:var(--ok)}
.coverage-short{background:var(--bad)}

.issue-solution{
  margin-top:7px;
  padding:8px 10px;
  border-radius:8px;
  background:#fff;
  border:1px solid rgba(31,78,120,.18);
  font-size:12px;
  line-height:1.4;
  color:var(--text);
}
.issue-solution strong{color:var(--accent)}
.issue-solution .apply-fix{margin-top:8px}
.issue-solution-pick{margin-top:8px;display:grid;gap:5px;justify-items:start;max-width:100%}
.issue-solution-pick label{font-size:12px;font-weight:650;color:var(--muted)}
.issue-solution select{width:280px;max-width:100%;margin-top:0;border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px;min-height:38px}
.btn.apply-fix{background:var(--accent);border-color:var(--accent);color:#fff;padding:6px 10px;font-size:12px}
.btn.apply-fix:disabled{opacity:.55;cursor:not-allowed}
.week-readiness{margin-top:13px}
.week-readiness .ready-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.week-readiness .ready-meta{font-size:12px;color:var(--muted);margin-top:6px}
.profile-badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.profile-badges .pill{font-weight:650}
.fix-toast{position:fixed;right:18px;bottom:18px;z-index:70;max-width:420px;box-shadow:var(--shadow)}
.fix-toast[hidden]{display:none}


.auto-rule-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.auto-rule-grid>div{border:1px solid var(--border);border-radius:10px;padding:11px;background:#fafafa}
.auto-report-row{padding:8px 0;border-bottom:1px solid var(--border);font-size:13px;line-height:1.4}
.auto-report-row:last-child{border-bottom:0}.auto-report-warn{color:#8a4b08}.auto-report-good{color:#166534}
@media(max-width:900px){.auto-rule-grid{grid-template-columns:1fr}}

@media(max-width:980px){.staff-location-grid{grid-template-columns:1fr}}
@media(max-width:680px){.staff-slot-row,.staff-add-row{grid-template-columns:1fr}.staff-slot-note{grid-column:1}.staff-day-tabs .btn{flex:1 1 42%}}


/* Doctor Schedule location select colors */
select.loc-select{font-weight:700;transition:background .12s,border-color .12s,color .12s}
select.loc-select.loc-OFF,select.loc-select.loc-off{background:#fff;border-color:var(--border);color:var(--muted);font-weight:600}
select.loc-select.loc-RH{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd);color:var(--loc-rh-ink)}
select.loc-select.loc-ST{background:var(--loc-st-bg);border-color:var(--loc-st-bd);color:var(--loc-st-ink)}
select.loc-select.loc-MA{background:var(--loc-ma-bg);border-color:var(--loc-ma-bd);color:var(--loc-ma-ink)}
select.loc-select.loc-HC{background:var(--loc-hc-bg);border-color:var(--loc-hc-bd);color:var(--loc-hc-ink)}
select.loc-select.loc-GA-RH{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd);color:var(--loc-rh-ink)}
select.loc-select option{background:#fff;color:var(--text);font-weight:600}
select.loc-select option[value="OFF"]{background:#fff;color:var(--muted)}
select.loc-select option[value="RH"]{background:var(--loc-rh-bg);color:var(--loc-rh-ink)}
select.loc-select option[value="ST"]{background:var(--loc-st-bg);color:var(--loc-st-ink)}
select.loc-select option[value="MA"]{background:var(--loc-ma-bg);color:var(--loc-ma-ink)}
select.loc-select option[value="HC"]{background:var(--loc-hc-bg);color:var(--loc-hc-ink)}
select.loc-select option[value="GA-RH"]{background:var(--loc-rh-bg);color:var(--loc-rh-ink)}


/* Doctor / Staff Schedule month view (docmonth1) */
.view-toggle{display:inline-flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff;flex:0 0 auto}
.view-toggle .btn{border:0;border-radius:0;padding:9px 13px;min-width:72px}
.view-toggle .btn+.btn{border-left:1px solid var(--border)}
.view-toggle .btn.active{background:var(--accent);color:#fff}
.page-chrome{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
#stickyChrome{position:sticky;top:0;z-index:40;background:var(--bg);padding-bottom:0}
#stickyChrome .chrome-row{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;padding-bottom:10px}
#stickyChrome .account-bar{position:static;z-index:auto;margin:0;padding:0;flex:0 1 auto;min-width:0}
#stickyChrome .account-cluster{flex-direction:row;align-items:center;gap:8px;min-width:0}
#stickyChrome .account-saved{max-width:none;min-width:0;line-height:1.2}
#stickyChrome .account-menu-btn{padding:3px 8px;font-size:12px;box-shadow:none}
#stickyChrome .publish-bar{flex:1 1 auto;margin:0;padding:5px 12px;gap:8px;min-width:0;border-radius:8px}
#stickyChrome .publish-bar #publishStatusText{flex:1 1 auto;min-width:0;line-height:1.35}
#stickyChrome .publish-bar.is-dirty #publishStatusText::before{content:"";display:inline-block;width:8px;height:8px;margin-right:7px;border-radius:50%;background:#ea580c;vertical-align:1px}
/* Under the page's buttons the status is a right-aligned note framed only as wide as its text. */
.page-chrome>.publish-bar{flex:0 1 auto;display:flex;justify-content:flex-start;margin:0 auto 0 0;padding:0;border:0;background:none;font-size:13px;font-weight:700;min-width:0}
.page-chrome>.publish-bar #publishStatusText{max-width:28rem;padding:6px 14px;border:1px solid #b7d9a8;border-radius:999px;background:#f3faef;line-height:1.35;text-align:left;cursor:default}
.page-chrome>.publish-bar.is-dirty #publishStatusText{color:#9a3412}
.page-chrome>.account-bar{position:static;z-index:auto;margin:0;padding:0;background:none;flex:0 0 auto}
.page-chrome>.account-bar .account-saved{display:none!important}
.page-chrome>.account-bar .account-menu-btn{padding:7px 12px;font-size:13px;box-shadow:none}
.page-chrome .title-with-help:has(.chrome-today){display:inline-flex;align-items:baseline;flex-wrap:wrap;column-gap:14px}
.page-chrome .chrome-today{font-size:14px;font-weight:650;color:var(--muted);white-space:nowrap}
#stickyChrome .chrome-row[hidden]{display:none}
.page-chrome>.publish-bar.is-dirty #publishStatusText{border-color:#fdba74;background:#fff7ed}
.page-chrome>.publish-bar.is-dirty #publishStatusText::before{content:"";display:inline-block;width:7px;height:7px;margin-right:8px;border-radius:50%;background:#ea580c;vertical-align:1px}
.btn.publish-schedule-btn{display:inline-flex;align-items:center;gap:6px;background:#f4f7f2;border-color:#c5d4c4;color:#2f4630}
.btn.publish-schedule-btn[hidden]{display:none}
.btn.publish-schedule-btn.is-dirty{background:#c2410c;border-color:#c2410c;color:#fff}
.btn.publish-schedule-btn.is-dirty:hover{filter:brightness(1.07)}
.publish-ic{width:14px;height:14px;flex:0 0 auto}
@media(max-width:800px){#stickyChrome .chrome-row{flex-wrap:wrap}#stickyChrome .publish-bar{flex:1 1 100%}}
.page.active>.page-chrome{position:sticky;top:var(--sticky-chrome-top,0px);z-index:34;background:var(--bg);margin-bottom:0;padding-bottom:14px}
#dashboard.page.active>.home-sticky{position:sticky;top:var(--sticky-chrome-top,0px);z-index:34;background:var(--bg)}
#dashboard .home-sticky>.page-chrome{margin-bottom:0;padding-bottom:8px}
#dashboard .home-sticky{padding-bottom:10px}
#schedule.page.active>.page-sched-top,
#staffschedule.page.active>.page-sched-top{position:sticky;top:var(--sticky-chrome-top,0px);z-index:34;background:var(--bg);margin-bottom:0;padding-bottom:14px}
/* The date bar (week / month stepper) stays put under the page header on Doctors, Staff and Stats. */
.page.active>.wknav-card{position:sticky;top:calc(var(--sticky-chrome-top,0px) + var(--page-top-h,0px));z-index:33}
.page-chrome h1{margin:0 0 4px}
.page-chrome .sub{margin:0;max-width:52rem}
.page-chrome-actions{margin-left:auto}
.page-chrome-actions .btn.primary{min-width:7.5rem}
.btn.secondary{background:#f4f7f2;border-color:#c5d4c4;color:#2f4630}
.btn.secondary:hover{border-color:var(--brand-green);background:var(--accent-soft)}
.home-focus{margin:0 0 14px}
.home-focus .home-focus-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.home-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px}
.home-filter-menu{position:relative}
.home-filter-trigger{display:inline-flex;align-items:center;gap:8px;min-width:180px;max-width:280px;border:1px solid #d5ddd4;border-radius:10px;background:#fff;color:#243028;padding:6px 10px;cursor:pointer;font:inherit;font-size:13px;font-weight:750;line-height:1.2;box-shadow:var(--shadow)}
.home-filter-trigger:hover{border-color:var(--brand-green)}
.home-filter-trigger[aria-expanded="true"]{border-color:var(--brand-green-deep);box-shadow:0 0 0 3px rgba(63,143,40,.18)}
.home-filter-trigger:focus-visible{outline:2px solid var(--brand-green-deep);outline-offset:2px}
.home-filter-name{color:#6b756c;font-weight:700;flex:0 0 auto}
.home-filter-summary{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;font-weight:800}
.home-filter-chev{flex:0 0 auto;color:#6b756c;font-size:11px}
.home-filter-pop{position:absolute;z-index:40;top:calc(100% + 6px);left:0;min-width:230px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 40px rgba(15,23,42,.16);padding:6px}
.home-filter-pop[hidden]{display:none!important}
.home-filter-opt{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:700;color:#243028}
.home-filter-opt:hover{background:#f4f7f2}
.home-filter-opt input{accent-color:var(--brand-green-deep);width:15px;height:15px;margin:0}
button.home-filter-viewall{width:100%;border:0;background:transparent;font:inherit;text-align:left;color:inherit}
.home-filter-viewall.is-on{background:#f4f7f2}
.home-filter-mark{width:15px;height:15px;border:1.5px solid #b7c4b6;border-radius:4px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;background:#fff}
.home-filter-viewall.is-on .home-filter-mark{background:var(--brand-green-deep);border-color:var(--brand-green-deep)}
.home-filter-viewall.is-on .home-filter-mark::after{content:"✓";color:#fff;font-size:11px;font-weight:800;line-height:1}
.home-filter-sep{height:1px;margin:4px 2px;background:#e4ebe3}
.home-filter-dot{width:8px;height:8px;border-radius:999px;flex:0 0 auto;background:#c5d0c4}
.home-filter-opt.loc-RH .home-filter-dot{background:var(--loc-rh-dot)}
.home-filter-opt.loc-ST .home-filter-dot{background:var(--loc-st-dot)}
.home-filter-opt.loc-MA .home-filter-dot{background:var(--loc-ma-dot)}
.home-filter-opt.loc-HC .home-filter-dot{background:var(--loc-hc-dot)}
.home-filter-opt.kind-pedo .home-filter-dot{background:#6cb448}
.home-filter-opt.kind-ortho .home-filter-dot{background:#c084fc}
.home-filter-opt.kind-ga .home-filter-dot{background:#60a5fa}
.home-filter-opt.kind-os .home-filter-dot{background:#fb7185}
.home-filter-opt.kind-pp .home-filter-dot{background:#4ade80}
.home-filter-opt.kind-surg .home-filter-dot{background:#f87171}
.home-filter-opt.kind-po .home-filter-dot{background:#38bdf8}
.home-filter-opt.kind-admin .home-filter-dot{background:#f59e0b}
.home-filter-opt.kind-tm .home-filter-dot{background:#6366f1}
.home-filter-opt.kind-ce .home-filter-dot{background:#06b6d4}
.home-filter-opt.kind-closed .home-filter-dot{background:#94a3b8}
.home-filter-opt.kind-away .home-filter-dot{background:#fb923c}
.home-filter-opt.kind-incomplete .home-filter-dot{background:#f59e0b}
.home-filter-opt.kind-conflict .home-filter-dot{background:#f87171}
.home-filter-opt.kind-holiday .home-filter-dot{background:#fb7185}
.home-staff-pop{position:fixed;z-index:80;box-sizing:border-box;width:min(320px,calc(100vw - 16px));max-height:min(340px,52vh);overflow:auto;overscroll-behavior:contain;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#94a3b8 transparent;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 40px rgba(15,23,42,.18);padding:10px 12px;pointer-events:auto}
.home-staff-pop::-webkit-scrollbar{width:10px}
.home-staff-pop::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:8px}
.home-staff-pop[hidden]{display:none!important}
.home-staff-pop-title{font-weight:800;font-size:13px}
.home-staff-pop-when{font-size:12px;color:var(--muted);margin-bottom:2px}
.home-staff-pop ul{margin:0 0 4px;padding-left:16px}
.home-staff-pop li{font-size:12px;margin:1px 0}
.home-staff-pop-empty{font-size:12px;color:var(--muted);margin-top:6px}
.home-focus h2{margin:0 0 2px}
.home-cal-view .btn{padding:7px 12px;min-width:68px}
#monthLabel{min-width:7.5rem;text-align:center}
#monthCalendar.home-span-week{grid-template-columns:repeat(var(--home-cols,5),minmax(0,1fr));gap:8px;align-items:stretch}
.home-week-day{min-height:220px;border:1px solid var(--border);border-radius:12px;background:#fff;padding:8px;display:flex;flex-direction:column;gap:8px}
.home-week-day.today{border:2px solid var(--brand-green-deep);box-shadow:0 0 0 3px rgba(63,143,40,.22);background:#f7fbf4}
.home-week-day.today .home-week-date{color:var(--brand-green-deep)}
.home-week-day.history{background:#f4f5f4}
.home-week-day.outside-horizon{opacity:.4}
.home-week-date{display:flex;align-items:baseline;justify-content:space-between;gap:6px}
.home-week-date .cal-num{font-size:18px;font-weight:800;line-height:1}
.home-week-dow{font-size:11px;font-weight:750;color:var(--muted)}
.home-week-day.today .home-week-dow{color:var(--brand-green-deep)}
.home-week-clinic{display:flex;flex-direction:column;align-items:stretch;gap:3px;width:100%;border:1px solid var(--border);border-radius:10px;background:#f8fafc;padding:8px 9px;text-align:left;cursor:pointer;font:inherit;color:inherit}
.home-week-clinic:hover{filter:brightness(.98);box-shadow:0 0 0 2px rgba(63,143,40,.2)}
.home-week-clinic.loc-RH{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd);color:var(--loc-rh-ink)}
.home-week-clinic.loc-ST{background:var(--loc-st-bg);border-color:var(--loc-st-bd);color:var(--loc-st-ink)}
.home-week-clinic.loc-MA{background:var(--loc-ma-bg);border-color:var(--loc-ma-bd);color:var(--loc-ma-ink)}
.home-week-clinic.loc-HC{background:var(--loc-hc-bg);border-color:var(--loc-hc-bd);color:var(--loc-hc-ink)}
.home-week-clinic.closed-day{opacity:.72}
.home-week-clinic-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.home-week-loc{font-size:14px;font-weight:800;letter-spacing:.01em}
.home-week-locname{display:block;font-size:11px;font-weight:650;opacity:.8;letter-spacing:0}
.home-week-type{font-size:12px;font-weight:800;white-space:nowrap}
.home-week-line{font-size:12px;font-weight:650;line-height:1.35;overflow-wrap:break-word}
.home-week-docs{font-weight:750}
.home-week-note{display:flex;align-items:flex-start;gap:5px;font-size:11px;font-weight:700;line-height:1.3}
.home-week-note.hard{color:#b91c1c}
.home-week-note.soft{color:#b45309}
.home-week-note-text{min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.home-week-empty{font-size:12px;color:var(--muted);font-weight:650}
@media(max-width:680px){#monthCalendar.home-span-week{grid-template-columns:1fr}#monthCalendar.home-span-week .cal-head{display:none}}
.home-search{position:relative;margin:0 0 14px}
.home-search-field{position:relative}
.home-search-icon{position:absolute;left:14px;top:50%;width:18px;height:18px;transform:translateY(-50%);color:#8b978c;pointer-events:none}
.home-search input{width:100%;border:1px solid var(--border);border-radius:12px;padding:12px 14px 12px 42px;background:#fff;box-shadow:var(--shadow);font-size:16px}
.home-search input:focus{outline:2px solid rgba(63,143,40,.35);border-color:var(--brand-green)}
.home-search-field:focus-within .home-search-icon{color:var(--brand-green-deep)}
.home-search-results{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 6px);max-height:min(420px,60vh);overflow:auto;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 16px 40px rgba(20,40,20,.12);padding:6px}
.home-search-results[hidden]{display:none!important}
.home-search-group{padding:8px 10px 4px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.home-search-item{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;text-align:left;padding:8px 8px;border-radius:10px;cursor:pointer}
.home-search-item:hover,.home-search-item:focus{background:var(--accent-soft)}
.home-search-kind{flex:0 0 auto;min-width:72px;text-align:center;font-size:11px;font-weight:800;border-radius:999px;padding:3px 8px;background:#eef3ea;color:var(--brand-green-deep)}
.home-search-kind.doc{background:#e8f1f8;color:#1f4e78}
.home-search-kind.pos{background:#fff4df;color:#8a5a10}
.home-search-main{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.home-search-main strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-search-main span{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-search-actions{display:flex;align-items:center;gap:4px;margin-left:auto;flex:0 0 auto}
.home-search-actions .btn{padding:3px 8px;font-size:12px;line-height:1.25;border-radius:8px;white-space:nowrap}
.home-search-empty{padding:12px;color:var(--muted);font-size:13px}
#monthCalendar .cal-cell:not(.other){background:#f3f4f6}
#monthCalendar .cal-cell.history>*{opacity:.38}
#monthCalendar .home-week-day.history{background:#f3f4f6}
#monthCalendar .home-week-day.history>*{opacity:.38}
#monthCalendar .cal-cell.today{border:2px solid var(--brand-green-deep);box-shadow:0 0 0 3px rgba(63,143,40,.22);background:#f7fbf4}
#monthCalendar .cal-cell.today .cal-num{color:var(--brand-green-deep);font-weight:800}
#monthCalendar .locbtn{display:flex;align-items:flex-start;gap:4px}
#monthCalendar .locbtn-text{flex:1;min-width:0}
#monthCalendar .day-alert{width:7px;height:7px;border-radius:999px;flex:0 0 auto;margin-top:3px}
#monthCalendar .day-alert.hard{background:#dc2626}
#monthCalendar .day-alert.soft{background:#f59e0b}
.data-recovery{border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.72);padding:0 14px;margin:0 0 8px}
.data-recovery>summary{cursor:pointer;list-style:none;padding:13px 0;font-weight:750;font-family:var(--font-display);font-size:16px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.data-recovery>summary::-webkit-details-marker{display:none}
.data-recovery>summary::after{content:"Show";font-size:12px;font-weight:700;font-family:var(--font-ui);color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:3px 9px;background:#fff}
.data-recovery[open]>summary::after{content:"Hide"}
.data-recovery-body{padding:0 0 14px;border-top:1px solid var(--border)}
.data-recovery-body .sub{margin:10px 0 12px}
.data-recovery-actions{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 12px}
.page-sched-top{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin-bottom:14px}
.page-sched-top .page-chrome{margin-bottom:0}
.page-sched-top h1{margin:0}
.page-sched-top .sub{margin:0}
.sched-secondary{width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:7px;padding-top:2px}
/* Clear shifts · Copy · Print week sit under the page title, beside Save Draft and the publish note, so the frozen header is two rows. */
.page-sched-top .page-chrome>div:first-child .sched-secondary{margin-top:8px;padding-top:0}
/* The title column is taller (its buttons sit under it), so the pill, actions and account line up with the title. */
.page-sched-top .page-chrome{align-items:flex-start}
.page-sched-top .page-chrome>.publish-bar,.page-sched-top .page-chrome>.account-bar{margin-top:5px}
.auto-range-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.auto-range-head h2{margin:0}
.auto-range-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 14px}
.auto-preset{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;border:1px solid var(--border);background:#f8fafc;border-radius:12px;padding:10px 12px;cursor:pointer;min-height:62px}
.auto-preset:hover{border-color:#94a3b8;background:#fff}
.auto-preset.active{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.auto-preset strong{font-size:13px;font-weight:750;color:var(--text)}
.auto-preset span{font-size:11px;color:var(--muted);font-weight:500;line-height:1.3}
.auto-range-dates{max-width:420px}
.auto-range-dates .kdp-range-btn{min-height:42px}
.auto-range-sum{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;padding:9px 11px;border-radius:10px;background:var(--accent-soft);font-size:13px}
.auto-range-sum .pill{background:#fff;border:1px solid #c5d5e4}
.auto-range-note{margin-top:8px;font-size:12px}
@media(max-width:720px){.auto-range-presets{grid-template-columns:1fr}.auto-range-dates{max-width:none}}
.view-pane[hidden],.week-only[hidden]{display:none!important}
.mv-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.mv-legend{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:11px;color:var(--muted)}
.mv-cal .cal-cell{min-height:104px;gap:4px;padding:7px}
.mv-cal .cal-cell.clickable{cursor:pointer}
.mv-cal .cal-cell.clickable:hover{border-color:#94a3b8;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.mv-cal .cal-cell.closed{background:#f8fafc}
.mv-cal .cal-cell.empty{background:#fbfbfc}
.mv-cal .cal-cell.today{border:2px solid var(--accent);box-shadow:0 0 0 3px rgba(31,78,120,.12)}
.mv-cal .cal-cell.today .cal-num{color:var(--accent)}
.mv-cal .cal-cell.in-week{background:#f5f9fd}
.mv-today-tag{font-size:9px;font-weight:800;color:#fff;background:var(--accent);border-radius:999px;padding:1px 6px;margin-left:5px;vertical-align:1px}
.mv-note{font-size:10px;color:var(--muted);font-style:italic}
.mv-list{display:flex;flex-direction:column;gap:3px}
.mchip{display:block;font-size:11px;font-weight:700;line-height:1.25;padding:3px 6px;border-radius:8px;border:1px solid var(--border);background:#f8fafc;color:var(--text);overflow-wrap:break-word;word-break:keep-all}
.mchip.loc-RH{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd);color:var(--loc-rh-ink)}
.mchip.loc-ST{background:var(--loc-st-bg);border-color:var(--loc-st-bd);color:var(--loc-st-ink)}
.mchip.loc-MA{background:var(--loc-ma-bg);border-color:var(--loc-ma-bd);color:var(--loc-ma-ink)}
.mchip.loc-HC{background:var(--loc-hc-bg);border-color:var(--loc-hc-bd);color:var(--loc-hc-ink)}
.mchip.loc-GA-RH{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd);color:var(--loc-rh-ink)}
.mchip.ortho{background:#f3e8ff;border-color:#d8b4fe;color:#6b21a8}
.mchip.vac{background:#f1f5f9;border-color:#cbd5e1;color:#475569;font-weight:600}
.mchip.closed-loc{border-style:dashed}
.mchip.no-doc{opacity:.55;font-weight:600}
.mchip .mnames{display:block;font-weight:500;font-size:10px;opacity:.9}
.mchip .mshort{font-weight:800;color:#b91c1c;margin-left:4px}
/* master1/master2: Master Schedule day-type grid + year view */
.master-grid{display:grid;gap:0;overflow:auto}
.master-monthly{display:grid;gap:12px}
.mm-loc{border:1px solid var(--border);border-radius:10px;overflow:auto}
.mm-loc-head{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:6px 10px;background:#f8fafc;border-bottom:1px solid var(--border)}
.mm-loc-head label{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted)}
.mm-loc-head input{width:auto;min-height:0}
/* Each location's chart wears its clinic color: colored frame with a solid left edge, tinted header band, colored name. */
.mm-loc[data-loc="RH"]{border-color:var(--loc-rh-bd);border-left:4px solid var(--loc-rh-dot)}
.mm-loc[data-loc="ST"]{border-color:var(--loc-st-bd);border-left:4px solid var(--loc-st-dot)}
.mm-loc[data-loc="MA"]{border-color:var(--loc-ma-bd);border-left:4px solid var(--loc-ma-dot)}
.mm-loc[data-loc="HC"]{border-color:var(--loc-hc-bd);border-left:4px solid var(--loc-hc-dot)}
.mm-loc[data-loc="RH"] .mm-loc-head{background:var(--loc-rh-bg);border-bottom-color:var(--loc-rh-bd)}
.mm-loc[data-loc="ST"] .mm-loc-head{background:var(--loc-st-bg);border-bottom-color:var(--loc-st-bd)}
.mm-loc[data-loc="MA"] .mm-loc-head{background:var(--loc-ma-bg);border-bottom-color:var(--loc-ma-bd)}
.mm-loc[data-loc="HC"] .mm-loc-head{background:var(--loc-hc-bg);border-bottom-color:var(--loc-hc-bd)}
.mm-loc[data-loc="RH"] .mm-loc-head strong{color:var(--loc-rh-ink)}
.mm-loc[data-loc="ST"] .mm-loc-head strong{color:var(--loc-st-ink)}
.mm-loc[data-loc="MA"] .mm-loc-head strong{color:var(--loc-ma-ink)}
.mm-loc[data-loc="HC"] .mm-loc-head strong{color:var(--loc-hc-ink)}
.mm-table{width:100%;min-width:720px;border-collapse:collapse}
.mm-table th,.mm-table td{padding:4px 6px;border-bottom:1px solid var(--border);font-size:12px;text-align:left}
.mm-table th{color:#334155}
.mm-cell{display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.mm-cell select{min-width:96px;font-weight:700;padding:3px 6px;min-height:0}
.mm-cell select:disabled{opacity:.55}
.mm-hours{display:inline-flex;align-items:center;gap:2px}
.mm-hours input[type=time]{width:88px;min-width:88px;min-height:0;padding:2px 4px;font-size:11px;border:1px solid var(--border);border-radius:8px;background:#fff}
.mm-hours input[type=time]:disabled{opacity:.55}
.mm-hours-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin:0 0 12px}
.mm-hours-bar .field{min-width:120px}
.mm-hours-bar input[type=time]{min-height:34px}
.mm-hours-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:end}
.mm-hours-bar .home-filter-trigger{min-height:34px;min-width:168px}
.mm-hours-note{flex:1 0 100%;font-size:12px;color:var(--muted)}
.mm-copy{padding:2px 7px;font-size:12px;min-height:0;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer}
.staff-shift-hours{font-size:11px;font-weight:750;color:#334155}
.ovr-hours{display:inline-flex;align-items:center;gap:3px}
.ovr-hours input[type=time]{width:88px;min-height:0;padding:2px 4px;font-size:11px;border:1px solid var(--border);border-radius:8px;background:#fff}
.master-table{width:100%;min-width:720px;border-collapse:collapse}
.master-table th,.master-table td{padding:8px;border-bottom:1px solid var(--border);font-size:13px;text-align:left;vertical-align:middle}
.master-table th{background:#f8fafc;color:#334155;font-size:12px}
.master-table select{min-width:110px;font-weight:700}
.master-table .ga-check{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-top:5px}
.master-table .ga-check input{width:auto;min-height:0}
/* Specialty colors are the day-type chips (Doctor Schedule and calendars). People doctor cards share that declaration. */
.master-type-Pedo,
.employee.doctor-card.pedo,
.employee.doctor-card.pedo .employee-top{--spec-bg:#dbeafe;--spec-bd:#93c5fd;--spec-ink:#1e3a8a}
.master-type-Pedo,
.employee.doctor-card.pedo .employee-top{background:var(--spec-bg);border-color:var(--spec-bd);color:var(--spec-ink)}
.master-type-GA{background:#ede9fe;border-color:#c4b5fd;color:#5b21b6}
.master-type-Ortho,
.employee.doctor-card.ortho,
.employee.doctor-card.ortho .employee-top{--spec-bg:#f3e8ff;--spec-bd:#d8b4fe;--spec-ink:#6b21a8}
.master-type-Ortho,
.employee.doctor-card.ortho .employee-top{background:var(--spec-bg);border-color:var(--spec-bd);color:var(--spec-ink)}
.master-type-Closed{background:#f3f4f6;border-color:var(--border);color:var(--muted)}
.master-type-Admin{background:#fef3c7;border-color:#fcd34d;color:#92400e}
.master-type-TM{background:#e0e7ff;border-color:#a5b4fc;color:#3730a3}
.master-type-CE{background:#cffafe;border-color:#22d3ee;color:#155e75}
.master-type-PedoOS{background:#ccfbf1;border-color:#2dd4bf;color:#115e59}
.master-type-PedoPedo{background:#dcfce7;border-color:#4ade80;color:#166534}
.master-type-OralSurgery,
.employee.doctor-card.os,
.employee.doctor-card.os .employee-top{--spec-bg:#fee2e2;--spec-bd:#fca5a5;--spec-ink:#991b1b}
.master-type-OralSurgery,
.employee.doctor-card.os .employee-top{background:var(--spec-bg);border-color:var(--spec-bd);color:var(--spec-ink)}
.master-type-PedoOrtho{background:#e0f2fe;border-color:#7dd3fc;color:#075985}
.master-override-row{display:grid;grid-template-columns:160px 100px 140px 120px auto;gap:8px;align-items:end;margin-top:10px}
.locbtn.closed-day{opacity:.55;background:#f3f4f6}
.master-year-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:10px}
.master-year-toolbar .field{min-width:110px}
/* Year + location pickers sit right above the month cards, below the paint and bulk tools. */
.my-cal-bar{margin:14px 0 4px;padding-top:12px;border-top:1px solid var(--border)}
.my-cal-hint{font-size:12px;color:var(--muted)}
/* Day menu: opens beside a clicked day (or a dragged range) on the year calendar. */
.my-day-menu{position:absolute;z-index:60;width:min(360px,calc(100vw - 16px));background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.18);padding:10px 12px 12px}
.my-day-menu-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px}
.my-day-menu-head strong{font-size:14px}
.my-day-menu-head .muted{font-size:12px;margin-top:1px}
.my-day-menu-x{border:0;background:none;font-size:20px;line-height:1;cursor:pointer;color:var(--muted);padding:0 2px}
.my-day-menu .master-paint-row{margin:0;padding:0;border:0;background:none;gap:6px}
.my-day-menu .master-paint-btn{padding:6px 10px;font-size:13px}
.my-day-menu-hours{display:flex;flex-wrap:wrap;align-items:end;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
.my-day-menu-hours .field{min-width:0;flex:1 1 100px}
.my-cell.sel{box-shadow:0 0 0 2px #0f172a,0 0 0 4px #fff;position:relative;z-index:1}
.master-loc-tabs{display:flex;flex-wrap:wrap;gap:6px}
/* master32: prominent year */
.year-stepper{display:inline-flex;align-items:center;border:1px solid #c9d8e6;border-radius:12px;background:linear-gradient(180deg,#fff,#f4f8fc);overflow:hidden;height:40px}
.ys-btn{width:38px;height:100%;border:0;background:none;font-size:22px;color:var(--accent);cursor:pointer;padding:0 0 3px}
.ys-btn:hover:not(:disabled){background:var(--accent-soft)}
.ys-btn:disabled{opacity:.3;cursor:not-allowed}
.ys-year{font-size:20px;font-weight:850;min-width:64px;text-align:center;color:#0f172a;border-left:1px solid #e2e8f0;border-right:1px solid #e2e8f0;line-height:40px}
.cal-export-doctors{flex:1 0 100%;margin:0 0 6px 22px;padding:6px 8px;background:#f8fafc;border-radius:10px}
.wknav-range{display:contents}
.wknav.mode-month .wknav-range-week,.wknav:not(.mode-month) .wknav-range-month{display:none}
.mkp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:4px}
.mkp-m{border:1px solid transparent;background:none;border-radius:8px;padding:8px 4px;font:inherit;font-size:12px;font-weight:700;color:var(--text);cursor:pointer}
.mkp-m:hover:not(:disabled){background:var(--accent-soft);border-color:#9fbdd6}
.mkp-m.sel{background:var(--accent);border-color:var(--accent);color:#fff}
.mkp-m.today:not(.sel){box-shadow:inset 0 0 0 2px #f59e0b}
.mkp-m:disabled{opacity:.35;cursor:not-allowed}

.master-loc-tabs .btn.loc-RH,
.master-loc-tabs .btn.loc-ST,
.master-loc-tabs .btn.loc-MA,
.master-loc-tabs .btn.loc-HC{background:#fff;border-color:var(--border);color:var(--text)}
.master-loc-tabs .btn.loc-RH.active{background:var(--loc-rh-dot);border-color:var(--loc-rh-dot);color:#fff}
.master-loc-tabs .btn.loc-ST.active{background:var(--loc-st-dot);border-color:var(--loc-st-dot);color:#fff}
.master-loc-tabs .btn.loc-MA.active{background:var(--loc-ma-dot);border-color:var(--loc-ma-dot);color:#fff}
.master-loc-tabs .btn.loc-HC.active{background:var(--loc-hc-dot);border-color:var(--loc-hc-dot);color:#fff}
.master-paint-row,.master-bulk-row{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin:8px 0 12px;padding:10px;border:1px solid var(--border);border-radius:10px;background:#f8fafc}
.master-paint-row .master-paint-btn{font-weight:750}
.master-paint-row .master-paint-btn[data-paint="Pedo"]{background:#dbeafe;border-color:#93c5fd;color:#1e3a8a}
.master-paint-row .master-paint-btn[data-paint="GA"]{background:#ede9fe;border-color:#c4b5fd;color:#5b21b6}
.master-paint-row .master-paint-btn[data-paint="Ortho"]{background:#f3e8ff;border-color:#d8b4fe;color:#6b21a8}
.master-paint-row .master-paint-btn[data-paint="PedoOS"]{background:#ccfbf1;border-color:#5eead4;color:#115e59}
.master-paint-row .master-paint-btn[data-paint="PedoPedo"]{background:#dcfce7;border-color:#4ade80;color:#166534}
.master-paint-row .master-paint-btn[data-paint="OralSurgery"]{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
.master-paint-row .master-paint-btn[data-paint="PedoOrtho"]{background:#e0f2fe;border-color:#7dd3fc;color:#075985}
.master-paint-row .master-paint-btn[data-paint="Admin"]{background:#fef3c7;border-color:#fcd34d;color:#92400e}
.master-paint-row .master-paint-btn[data-paint="TM"]{background:#e0e7ff;border-color:#a5b4fc;color:#3730a3}
.master-paint-row .master-paint-btn[data-paint="CE"]{background:#cffafe;border-color:#22d3ee;color:#155e75}
.master-paint-row .master-paint-btn[data-paint="Closed"]{background:#f3f4f6;border-color:#e5e7eb;color:#6b7280}
.master-paint-row .btn.active{outline:2px solid #0f172a;outline-offset:1px}
.master-year-months{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px} /* master30: fixed 6 columns — Jan–Jun / Jul–Dec */
@media(max-width:1239px){.master-year-months{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}}
.my-month{border:1px solid var(--border);border-radius:10px;padding:5px;background:#fff;min-width:0}
.my-month h3{margin:1px 2px 5px;font-size:13px;font-weight:800}
/* Month cards take the selected location's colour (Stouffville light blue, etc.). */
.my-month.loc-RH{background:var(--loc-rh-bg);border-color:var(--loc-rh-bd)}
.my-month.loc-RH h3{color:var(--loc-rh-ink)}
.my-month.loc-ST{background:var(--loc-st-bg);border-color:var(--loc-st-bd)}
.my-month.loc-ST h3{color:var(--loc-st-ink)}
.my-month.loc-MA{background:var(--loc-ma-bg);border-color:var(--loc-ma-bd)}
.my-month.loc-MA h3{color:var(--loc-ma-ink)}
.my-month.loc-HC{background:var(--loc-hc-bg);border-color:var(--loc-hc-bd)}
.my-month.loc-HC h3{color:var(--loc-hc-ink)}
.my-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) repeat(2,minmax(0,.55fr));gap:2px 1px}
.my-head{font-size:10px;text-align:center;color:var(--muted);font-weight:700;padding:2px 0}
.my-cell{min-height:40px;min-width:0;overflow:hidden;border-radius:8px;border:1px solid transparent;font-size:10px;line-height:1.15;padding:2px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:default;user-select:none;font-family:inherit;background:#fff;color:inherit;-webkit-appearance:none;appearance:none}
.my-cell.weekday{cursor:pointer}
.my-cell.weekday:hover{filter:brightness(.97);box-shadow:0 0 0 1px #94a3b8}
.my-cell .dn{font-weight:800;font-size:10px;line-height:1}
.my-cell .lb{font-size:9px;font-weight:800;white-space:normal;overflow-wrap:normal;word-break:keep-all;text-align:center;letter-spacing:-.2px;margin-top:3px;line-height:1.05;max-width:100%}
.my-cell.weekend .dn,.my-cell.other .dn{font-size:9px;font-weight:700}
.my-cell.Pedo{background:#dbeafe;border-color:#93c5fd;color:#1e3a8a}
.my-cell.GA{background:#ede9fe;border-color:#c4b5fd;color:#5b21b6}
.my-cell.Ortho{background:#f3e8ff;border-color:#d8b4fe;color:#6b21a8}
.my-cell.Closed{background:#f3f4f6;border-color:#e5e7eb;color:#6b7280}
.my-cell.Admin{background:#fef3c7;border-color:#fcd34d;color:#92400e}
.my-cell.TM{background:#e0e7ff;border-color:#a5b4fc;color:#3730a3}
.my-cell.CE{background:#cffafe;border-color:#22d3ee;color:#155e75}
.my-cell.PedoOS{background:#ccfbf1;border-color:#5eead4;color:#115e59}
.my-cell.PedoPedo{background:#dcfce7;border-color:#4ade80;color:#166534}
.my-cell.OralSurgery{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
.my-cell.PedoOrtho{background:#e0f2fe;border-color:#7dd3fc;color:#075985}
.mv-list .pedoos-need{background:#ccfbf1;border-color:#2dd4bf;color:#115e59}
.my-cell.weekend,.my-cell.other{opacity:.35;background:#fafafa;color:#9ca3af}
.my-cell.override{box-shadow:inset 0 0 0 2px #0f172a}
.my-cell .ga{font-size:9px;font-weight:800;color:#5b21b6;background:#ede9fe;border-radius:4px;padding:0 3px;margin-top:1px}
.my-legend{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0 10px;font-size:12px;color:var(--muted)}
.my-legend span.sw{display:inline-flex;align-items:center;gap:4px}
.my-legend span.sw b{color:#0f172a}
.my-legend i{display:inline-block;width:12px;height:12px;border-radius:4px;border:1px solid var(--border)}
.my-legend i.pedo{background:#dbeafe;border-color:#93c5fd}
.my-legend i.ga{background:#ede9fe;border-color:#c4b5fd}
.my-legend i.ortho{background:#f3e8ff;border-color:#d8b4fe}
.my-legend i.closed{background:#f3f4f6}
.my-legend i.admin{background:#fef3c7;border-color:#fcd34d}
.my-legend i.tm{background:#e0e7ff;border-color:#a5b4fc}
.my-legend i.ce{background:#cffafe;border-color:#22d3ee}
.my-legend i.pedoos{background:#ccfbf1;border-color:#5eead4}
.my-legend i.pedopedo{background:#dcfce7;border-color:#4ade80}
.my-legend i.oralsurgery{background:#fee2e2;border-color:#fca5a5}
.my-legend i.pedoortho{background:#e0f2fe;border-color:#7dd3fc}
/* master16: Ontario statutory holidays — rose */
.my-cell.Holiday{background:#ffe4e6;border-color:#fb7185;color:#9f1239}
.my-cell.Holiday .lb{white-space:nowrap}
.my-cell.hol-open{outline:2px dashed #fb7185;outline-offset:1px}
.my-cell.pa-day,.cal-cell.pa-day,.home-week-day.pa-day,#doctorWeekView th.pa-day,.staff-day-tabs .btn.pa-day{outline:2px dotted #15803d;outline-offset:1px}
.master-paint-row .master-paint-btn[data-paint="PA"]{background:#fff;border-color:#15803d;border-style:dotted;color:#166534}
.my-legend i.pa{background:#fff;border:2px dotted #15803d;box-sizing:border-box}
.pa-tag{display:inline-block;margin-left:5px;padding:0 6px;border-radius:999px;background:#f1f5f9;border:1px solid #cbd5e1;color:#64748b;font-size:10px;font-weight:700;letter-spacing:.04em;line-height:15px;vertical-align:middle}
.home-staff-pop-pub{margin:6px 0 2px;font-size:12px;color:#475569}.home-staff-pop-pub .pub-out-tag{margin:0 0 3px}.home-staff-pop-pub-line{line-height:1.35}
.home-staff-pop-pa{font-size:12px;font-weight:800;color:#166534;margin-top:2px}
.my-legend i.holiday{background:#ffe4e6;border-color:#fb7185}
.master-type-Holiday{background:#ffe4e6;border-color:#fb7185;color:#9f1239}
.holiday-chip{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:800;line-height:1.25;padding:2px 7px;border-radius:999px;border:1px solid #fb7185;background:#ffe4e6;color:#9f1239;margin:2px 0;max-width:100%;overflow-wrap:anywhere}
.mv-daytypes .holiday-chip{font-size:10px;padding:1px 6px}
/* master31: vacation / time off pill — same shape as the Holiday chip, amber so it isn't confused with Holiday (rose) or location rows */
.vac-chip{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:800;line-height:1.25;padding:2px 8px;border-radius:999px;border:1px solid #fb923c;background:#ffedd5;color:#9a3412;margin:2px 2px 2px 0;max-width:100%;overflow-wrap:anywhere;white-space:normal;cursor:help}
.vac-chip.pre,.vac-chip.left{border-color:#94a3b8;background:#f1f5f9;color:#334155}
.vac-chip.pending{border-style:dashed}
/* Home Away pill: a small box with a Doctors row and a Staff row. */
.vac-chip.away-list{display:flex;flex-direction:column;align-items:flex-start;gap:1px;border-radius:10px;padding:4px 8px;border-color:#cbd5e1;background:#f1f5f9;color:#475569}
.vac-chip.away-list .away-row b{color:#334155}
.vac-chip.away-list .away-row{font-weight:600}
.vac-chip.away-list .away-row b{font-weight:800}
.vac-pills{display:flex;flex-wrap:wrap;gap:2px;margin-top:4px}
.mv-vac{display:flex;flex-wrap:wrap;gap:2px;margin-top:auto;padding-top:3px;border-top:1px dashed #e2e8f0}
/* Month views: time off in quiet gray so the location rows stand out */
.mv-vac .vac-chip{font-size:9px;padding:1px 7px;margin:0;border-color:#cbd5e1;background:#f1f5f9;color:#475569}
.mv-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.mv-filters .pos-multi-btn{min-height:34px;padding:5px 32px 5px 11px;font-size:13px;gap:6px}
.mv-filters .pos-multi-opt{font-size:13px;padding:6px 10px}
.mv-filters .pos-multi-pop{min-width:180px}
.mv-vac-toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:650;color:#243028;white-space:nowrap}
.vac-strip{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:4px;border:1px solid #fed7aa;background:#fff7ed;border-radius:10px;padding:6px 10px;font-size:12px;color:#9a3412}
.vac-strip>strong{margin-right:4px}
/* master31: week navigator — label + mini-month popover */
.wknav-card{padding:8px 12px}
.wknav{position:relative;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wk-ic{width:34px;height:34px;border-radius:50%;border:1px solid var(--border);background:#fff;font-size:20px;line-height:1;color:var(--accent);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0 0 2px}
.wk-ic:hover:not(:disabled){background:var(--accent-soft);border-color:#9fbdd6}
.wk-ic:disabled{opacity:.35;cursor:not-allowed}
.wk-label{display:inline-flex;align-items:center;gap:9px;border:1px solid #c9d8e6;background:linear-gradient(180deg,#fff,#f4f8fc);border-radius:12px;padding:5px 12px 5px 9px;cursor:pointer;min-width:250px;text-align:left;color:var(--text)}
.wk-label:hover,.wk-label[aria-expanded="true"]{border-color:var(--accent);box-shadow:0 0 0 3px rgba(31,78,120,.12)}
.wk-cal-ic{display:inline-flex;width:30px;height:30px;border-radius:10px;background:var(--accent);color:#fff;align-items:center;justify-content:center}
.wk-text{display:flex;flex-direction:column;line-height:1.15;flex:1}
.wk-main{font-weight:800;font-size:14px}
.wk-sub{font-size:11px;color:var(--muted);font-weight:600}
.wk-caret{color:var(--muted);font-size:11px}
.wk-today{border:1px solid var(--border);background:#fff;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:700;color:var(--accent);cursor:pointer}
.wk-today:hover:not(:disabled){background:var(--accent-soft)}
.wk-today:disabled{opacity:.45;cursor:default}
.wk-horizon{font-size:11px;color:#94a3b8;margin-left:auto}
.wknav-view{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1}
.wk-hidden-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;left:0;top:0}
.wk-pop{position:absolute;top:calc(100% + 6px);left:42px;z-index:60;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 14px 34px rgba(15,23,42,.18);padding:10px;width:286px}
.wkp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.wkp-head strong{font-size:13px}
.wkp-head .wk-ic{width:28px;height:28px;font-size:18px}
.wkp-dow,.wkp-row{display:grid;grid-template-columns:repeat(5,1fr) repeat(2,.7fr);gap:2px}
.wkp-dow span{font-size:10px;font-weight:800;color:var(--muted);text-align:center;padding:2px 0}
.wkp-row{width:100%;border:1px solid transparent;background:none;border-radius:10px;padding:2px;margin:1px 0;cursor:pointer;font:inherit}
.wkp-row:hover:not(:disabled){background:var(--accent-soft);border-color:#9fbdd6}
.wkp-row.sel{background:var(--accent);border-color:var(--accent)}
.wkp-row.sel .wkp-d{color:#fff}
.wkp-row.sel .wkp-d.other,.wkp-row.sel .wkp-d.we{color:#cfe0ef}
.wkp-row:disabled{cursor:not-allowed;opacity:.35}
.wkp-d{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:30px;font-size:12px;font-weight:700;color:var(--text);border-radius:8px}
.wkp-d.we{color:#a3acb9;font-weight:600;font-size:11px}
.wkp-d.other{color:#c3cad3}
.wkp-d.today::after{content:'';position:absolute;inset:2px;border:2px solid #f59e0b;border-radius:8px}
.wkp-dots{display:flex;gap:2px;height:5px;margin-top:1px}
.wkp-dots i{width:5px;height:5px;border-radius:50%;display:block}
.wkp-dots i.h,.wkp-foot i.h{background:#fb7185}.wkp-dots i.c,.wkp-foot i.c{background:#dc2626}.wkp-dots i.n,.wkp-foot i.n{background:#f59e0b}.wkp-dots i.v,.wkp-foot i.v{background:#fb923c;border:1px solid #c2410c}
.wkp-row.sel .wkp-dots i{box-shadow:0 0 0 1px #fff}
.wkp-foot{display:flex;flex-wrap:wrap;gap:8px;margin-top:7px;padding-top:6px;border-top:1px solid var(--border);font-size:10px;color:var(--muted)}
.wkp-foot span{display:inline-flex;align-items:center;gap:3px}.wkp-foot i{width:6px;height:6px;border-radius:50%;display:inline-block}
.wkp-note{font-size:10px;color:#94a3b8;margin-top:4px}
@media(max-width:680px){.wk-label{min-width:0;flex:1}.wk-horizon{width:100%;margin-left:0}.wk-pop{left:0}.wknav-view{position:static;transform:none}}
.mchip.holiday,.locbtn.holiday{background:#ffe4e6;border-color:#fb7185;color:#9f1239}
.holiday-banner{border:1px solid #fb7185;background:#fff1f2;color:#9f1239;border-radius:10px;padding:10px 12px;font-weight:700;margin-bottom:10px}
.holiday-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px;margin-top:10px}
.holiday-row{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #fecdd3;background:#fff1f2;border-radius:8px;padding:6px 8px;font-size:12px}
.holiday-row.off{background:#f8fafc;border-color:var(--border);color:var(--muted);text-decoration:line-through}
.holiday-row.opened{border-style:dashed}
.holiday-row .btn{padding:3px 8px;font-size:11px;min-height:0}
.locbtn.admin,.mchip.admin{background:#fef3c7;border-color:#fcd34d;color:#92400e}
.locbtn.tm,.mchip.tm{background:#e0e7ff;border-color:#a5b4fc;color:#3730a3}
.locbtn.ce,.mchip.ce{background:#cffafe;border-color:#22d3ee;color:#155e75}
.my-legend i.ov{box-shadow:inset 0 0 0 2px #0f172a;background:#fff}
@media(max-width:760px){.master-override-row{grid-template-columns:1fr 1fr}.master-year-months{grid-template-columns:1fr 1fr}}

/* doctotals1: monthly doctor day totals under Doctor Schedule month view */
.doc-month-totals{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.doc-month-totals h3{margin:0 0 4px;font-size:16px}
.doc-month-totals .sub{margin-bottom:8px}
.doc-month-totals{overflow:auto}
.doc-month-totals table{min-width:720px;width:100%;max-width:100%;border-collapse:collapse}
.doc-month-totals th,.doc-month-totals td{font-size:12px;padding:6px 7px;white-space:nowrap}
.doc-month-totals thead th{background:#f8fafc;position:sticky;top:0}
.doc-month-totals th.group{text-align:center;font-size:11px;color:var(--muted);border-bottom:0;padding-bottom:2px}
.doc-month-totals th.group-start,.doc-month-totals td.group-start{border-left:1px solid var(--border)}
.doc-month-totals td.num,.doc-month-totals th.num{text-align:right;font-variant-numeric:tabular-nums}
.doc-month-totals tr.zero{opacity:.55}
.doc-month-totals .ga-num{color:#5b21b6;font-weight:700}
.doc-month-totals .vac-num{color:#991b1b}
.doc-month-totals .delta-pos{color:#166534}
.doc-month-totals .delta-neg{color:#9b1c1c}
.mstat{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.mstat-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.mstat-head .mstat-bar{margin-left:auto}
.mstat-head h3{margin:0;font-size:16px}
.mstat-sub{font-size:12px;color:var(--muted)}
.mstat-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.mstat-bar .btn{padding:5px 10px;font-size:12px}
.mstat-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 10px;padding:8px 10px;background:#f8faf7;border:1px solid var(--border);border-radius:12px}
.mstat-filters .pos-multi-btn{min-height:34px;padding:5px 32px 5px 11px;font-size:13px;gap:6px}
.pos-multi-btn[data-label]::before{content:attr(data-label)}
.mstat-filters .pos-multi-opt{font-size:13px;padding:6px 10px}
.mstat-filters .btn{padding:6px 12px;font-size:13px}
.mstat-filters input.mstat-search{flex:0 1 220px;width:220px;min-height:34px;padding:5px 11px;font-size:13px;border-radius:10px}
.mstat-filters input.mstat-search:focus{outline:2px solid rgba(63,143,40,.35);border-color:var(--brand-green)}
.mstat-more-pos{color:var(--muted)}
.mstat-spacer{flex:1}
.mstat-clear{background:none;border:0;padding:4px 6px;font:inherit;font-size:13px;font-weight:650;color:var(--brand-green-deep);cursor:pointer}
.mstat-clear:hover{text-decoration:underline}
.mstat-chk{font-size:13px;display:flex;align-items:center;gap:4px}
.mstat-wrap{overflow:auto;max-width:100%}
.mstat-table{border-collapse:collapse;width:100%}
.mstat-table th,.mstat-table td{font-size:12px;padding:3px 6px;line-height:1.35;white-space:nowrap;border:1px solid #e3e9e4}
.mstat-table thead th{background:#f6f8f5;color:#3a463e;position:sticky;top:0}
.mstat-table th.group{text-align:center;font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:3px 6px 1px}
.mstat-table th.sortable{cursor:pointer;user-select:none}
.mstat-table th.sorted{color:#1d4ed8}
.mstat-table td.num,.mstat-table th.num{text-align:center;font-variant-numeric:tabular-nums}
.mstat-table th.group-start,.mstat-table td.group-start{border-left:2px solid #b6c3b9}
.mstat-table tr.zero{opacity:.6}
.mstat-table tr.mstat-flag td{background:#fef6f6}
.mstat-table tr.mstat-warn td{background:#fffcf0}
.mstat-table tr.mstat-hl td{outline:2px solid #2563eb;outline-offset:-2px}
.mstat-table .mstat-bad{color:#991b1b;font-weight:750}
.mstat-table .mstat-avg-under{color:#92400e}
.mstat-table .mstat-amber{color:#92400e;font-weight:700}
.mstat-table tfoot td{font-weight:750;border-top:2px solid #cfd8d1;background:#f6f8f5}
.mstat-target{display:inline-block;min-width:30px;color:var(--muted)}
.mstat-table td.mstat-target{display:table-cell}
.mstat-chip{display:inline-block;padding:0 7px;border-radius:999px;font-size:11px;font-weight:700;line-height:17px}
.mstat-chip.is-ok{background:#e8f5df;color:#2f5a22}.mstat-chip.is-over{background:#fde2e2;color:#991b1b}.mstat-chip.is-under{background:#fef0c7;color:#92400e}
.mstat-name{background:none;border:0;padding:0;font:inherit;font-weight:650;color:#1e3a8a;cursor:pointer;text-align:left}
.mstat-name:hover{text-decoration:underline}
.mstat-legend{font-size:11px;margin-top:6px}
.mstat-balance{font-size:12px;margin-top:8px;display:grid;gap:2px}
.mstat-balance-over{color:#6b4a12;font-weight:600}
@media(max-width:560px){.mstat-filters .pos-multi,.mstat-filters .pos-multi-btn,.mstat-filters input.mstat-search{flex:1 1 100%;width:100%}.mstat-filters .pos-multi-pop{right:0}.mstat-spacer{display:none}}
.mv-hl-on .cal-cell:not(.mv-emp-hl):not(.closed){opacity:.45}
.cal-cell.mv-emp-hl{box-shadow:inset 0 0 0 3px #2563eb}
.doc-month-totals tfoot td{font-weight:750;border-top:2px solid var(--border);background:#f8fafc}

.doc-daytype-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.doc-daytype-chip{display:inline-flex;align-items:center;gap:2px;font-size:10px;font-weight:800;padding:2px 6px;border-radius:999px;border:1px solid var(--border);line-height:1.3}
#doctorWeekView .table-wrap table{table-layout:fixed;width:100%;min-width:0}
#doctorWeekView .table-wrap td{padding:5px 6px}
#doctorWeekView .table-wrap thead th{padding:3px 4px 4px;vertical-align:top}
#doctorWeekView .table-wrap td{vertical-align:middle}
#doctorWeekView .table-wrap th:first-child,#doctorWeekView .table-wrap td:first-child{width:120px;white-space:nowrap}
#doctorWeekView .table-wrap th:nth-child(7),#doctorWeekView .table-wrap td:nth-child(7){width:46px;text-align:center;padding-left:2px;padding-right:2px}
#doctorWeekView .table-wrap th:nth-child(8),#doctorWeekView .table-wrap td:nth-child(8){width:68px;text-align:center;white-space:nowrap;padding-left:2px;padding-right:2px}
#doctorWeekView .table-wrap select{width:100%;min-width:0;min-height:30px;padding:3px 4px;font-size:12px}
#doctorWeekView .doc-assign{display:flex;align-items:center;gap:3px;min-width:0}
#doctorWeekView .doc-assign>select{flex:1 1 auto;width:auto}
#doctorWeekView .doc-assign>.pin-btn{width:22px;height:22px;flex:0 0 22px;border-radius:8px}
#doctorWeekView .doc-assign>.pin-btn svg{width:12px;height:12px}
#doctorWeekView .doc-daytype-chips{gap:2px;margin-top:2px}
#doctorWeekView .doc-daytype-chip{padding:0 3px;font-size:10px;line-height:1.2;gap:1px;white-space:nowrap}
#doctorWeekView .table-wrap tr.doc-group-row td{width:auto;white-space:nowrap;padding:7px 8px 4px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-top:1px solid transparent}
#doctorWeekView .table-wrap tr.doc-group-row.pedo td{color:#1d4ed8;background:#eff6ff;border-top-color:#bfdbfe}
#doctorWeekView .table-wrap tr.doc-group-row.ortho td{color:#6b21a8;background:#faf5ff;border-top-color:#e9d5ff}
#doctorWeekView .table-wrap tr.doc-group-row.other td{color:#475569;background:#f8fafc;border-top-color:#e2e8f0}
#doctorWeekView .table-wrap tr.doc-group-row:first-child td{border-top:0}
/* Staff page, View by Locations: clinic tabs in their colors, the clinic's five weekday cards */
.staff-day-tabs .staff-loc-tab.loc-RH.active{background:var(--loc-rh-dot);border-color:var(--loc-rh-dot);color:#fff}
.staff-day-tabs .staff-loc-tab.loc-ST.active{background:var(--loc-st-dot);border-color:var(--loc-st-dot);color:#fff}
.staff-day-tabs .staff-loc-tab.loc-MA.active{background:var(--loc-ma-dot);border-color:var(--loc-ma-dot);color:#fff}
.staff-day-tabs .staff-loc-tab.loc-HC.active{background:var(--loc-hc-dot);border-color:var(--loc-hc-dot);color:#fff}
.staff-location-grid.by-loc .staff-loc-code{display:none}
.staff-location-grid.by-loc .staff-loc-day{font-size:15px;font-weight:800}
.staff-location-grid .staff-closed-day{background:repeating-linear-gradient(135deg,#f8fafc 0 10px,#f1f5f9 10px 20px);border-style:dashed}
.staff-location-card .staff-card-away{margin:8px 0 0}
/* Locations layout: a row per clinic in its color, doctor dropdowns in each day */
.wknav.mode-month .doc-layout-wrap{display:none}
.doc-layout-wrap{display:inline-flex;align-items:center;gap:7px}
.doc-layout-label{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.doc-layout-toggle .btn{min-width:0;padding:7px 11px}
#doctorWeekView table.by-loc th.doc-only{display:none}
#doctorWeekView table.by-loc thead th:not(:first-child){text-align:center}
#doctorWeekView table.by-loc thead th:not(:first-child)>div{justify-content:center}
#doctorWeekView table.by-loc th:first-child,#doctorWeekView table.by-loc td:first-child{width:76px}
#doctorWeekView table.by-loc td{vertical-align:top;padding:7px 8px}
#doctorWeekView tr.loc-row td{border-top:1px solid #fff}
#doctorWeekView tr.loc-row.loc-RH td{background:var(--loc-rh-bg)}
#doctorWeekView tr.loc-row.loc-ST td{background:var(--loc-st-bg)}
#doctorWeekView tr.loc-row.loc-MA td{background:var(--loc-ma-bg)}
#doctorWeekView tr.loc-row.loc-HC td{background:var(--loc-hc-bg)}
#doctorWeekView tr.loc-row td.loc-name{vertical-align:middle}
#doctorWeekView .loc-code{display:inline-block;font-weight:800;font-size:15px;padding:3px 10px;border-radius:8px;color:#fff}
#doctorWeekView tr.loc-RH .loc-code{background:var(--loc-rh-dot)}
#doctorWeekView tr.loc-ST .loc-code{background:var(--loc-st-dot)}
#doctorWeekView tr.loc-MA .loc-code{background:var(--loc-ma-dot)}
#doctorWeekView tr.loc-HC .loc-code{background:var(--loc-hc-dot)}
#doctorWeekView .loc-daytype{display:flex;justify-content:center;margin-bottom:3px}
#doctorWeekView .doc-assign.loc-slot{margin-top:5px;gap:5px}
#doctorWeekView .table-wrap .doc-assign.loc-slot>select{background:#fff;font-weight:700;font-size:14px;min-height:36px;padding:5px 8px}
#doctorWeekView .doc-assign.loc-slot>.pin-btn{width:26px;height:26px;flex:0 0 26px}
#doctorWeekView .loc-daytype .doc-daytype-chip{font-size:11px;padding:1px 6px}
#doctorWeekView .table-wrap .doc-assign.loc-slot>select.empty{border-color:#f87171;color:#b91c1c;background:#fef2f2}
#doctorWeekView .slot-role{flex:0 0 38px;font-size:10px;font-weight:800;color:#475569;text-transform:uppercase;letter-spacing:.03em}
#doctorWeekView .loc-closed-box{margin:3px 0 0;border:1px dashed #cbd5e1;border-radius:10px;padding:8px;text-align:center;font-size:13px;font-weight:700;color:#94a3b8;background:repeating-linear-gradient(45deg,#f8fafc,#f8fafc 6px,#f1f5f9 6px,#f1f5f9 12px)}
#doctorWeekView tr.loc-vac-row td{background:#f8fafc;text-align:center;font-size:12px;color:#94a3b8;vertical-align:middle}
#doctorWeekView tr.loc-vac-row td.loc-name{text-align:left;color:#475569}
#doctorWeekView tr.loc-vac-row .vac-chip{border-color:#cbd5e1;background:#f1f5f9;color:#475569}
.doc-days-strip{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:9px 10px 2px;border-top:1px solid var(--border);font-size:12px}
.doc-days-strip .t{font-weight:800;color:#475569;margin-right:4px}
.doc-days-strip .days-chip{display:inline-flex;gap:6px;align-items:center;border:1px solid var(--border);border-radius:999px;padding:2px 3px 2px 10px;background:#fff}
.doc-days-strip .days-chip.bad{border-color:#fecaca;background:#fff5f5}
.doc-days-strip .pill{margin:0}
.doc-daytype-chip .loc{opacity:.75;font-weight:700;margin-right:2px}
.mv-daytypes{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:5px}
.mv-daytypes .doc-daytype-chip{font-size:10px;padding:2px 6px}
.soft-balance-card .check-row{margin-top:6px}
.holiday-close-row{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-top:10px}
.support-pos-head{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin:8px 0 2px}
.support-pos-head:first-child{margin-top:4px}
.detail-box ul{margin:2px 0 6px;padding-left:18px}
.staff-add{margin-top:6px;padding:6px 8px;border:1px dashed var(--border);border-radius:8px;background:#fafafa;display:grid;gap:5px}
.staff-add-row{display:grid;grid-template-columns:minmax(6.75rem,max-content) minmax(0,1fr) auto;gap:6px;align-items:center}
.staff-add-row select{min-height:30px;padding:3px 6px;font-size:13px}
.staff-add-row .btn{padding:6px 10px}
.staff-add .muted{font-size:11px}
.staff-add-all{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px;padding-top:5px;border-top:1px dashed var(--border)}
.staff-add-all .btn{padding:6px 10px}
.staff-add-all-btns{display:flex;flex-wrap:wrap;gap:6px}
@media(max-width:680px){.staff-add-row{grid-template-columns:1fr}}
@media(max-width:980px){.app{grid-template-columns:1fr}aside{position:static;height:auto;overflow:visible;border-right:0;min-width:0;max-width:100%}body.rail-collapsed{--rail-width:252px}body.rail-collapsed .brand-logo-full{display:block}body.rail-collapsed .brand-logo-mark{display:none}body.rail-collapsed .brand-product{display:inline}body.rail-collapsed nav button{justify-content:flex-start}body.rail-collapsed nav button .nav-label{position:static;width:auto;height:auto;overflow:visible;clip:auto}body.rail-collapsed .nav-sub{display:flex}nav{display:flex;flex-direction:row;overflow:auto;gap:4px;min-width:0;max-width:100%}main,.page,.card{min-width:0;max-width:100%}.nav-group,.nav-sub{display:contents}.brand{margin-bottom:8px;align-items:flex-start}.brand-logo-full{width:132px}.rail-toggle{display:none}#unsavedBar{left:0}.metrics,.four,.two,.employee-grid{grid-template-columns:1fr 1fr}}
@media(max-width:980px){.nav-section,.nav-bottom{display:contents}.nav-section-title,.nav-sub-sec,.nav-chev{display:none}body.rail-collapsed .nav-badge{position:static}.nav-group:hover .nav-sub,.nav-group:focus-within .nav-sub,body.rail-collapsed .nav-group:hover .nav-sub,body.rail-collapsed .nav-group:focus-within .nav-sub{display:contents;position:static;min-width:0;padding:0;margin:0;background:transparent;box-shadow:none;border-radius:0}aside{z-index:auto}}
@media(max-width:680px){.account-bar{flex-direction:column;align-items:center;gap:6px}.account-cluster,.account-saved{align-items:center;text-align:center}main{padding:13px}.top{flex-direction:column}.metrics,.four,.two,.employee-grid,.detail-grid{grid-template-columns:1fr}.month-calendar{grid-template-columns:repeat(2,minmax(0,1fr))}.cal-head{display:none}.rule-grid{grid-template-columns:1fr 1fr}.rule-head{display:none}}
/* master22: employee rule dropdown builder */
.rule-builder{border:1px solid var(--border);border-radius:10px;padding:10px;background:#fafafa;margin-top:8px}
.rule-builder-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.rule-builder-field{display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:700;color:var(--muted)}
.rule-builder-field select{font-weight:500}
.rule-builder-preview{margin-top:8px;font-size:13px;font-weight:650}
.rule-builder-preview.bad{color:#b42318}
.rule-builder-actions{display:flex;gap:8px;margin-top:8px}
.rule-builder button:disabled{opacity:.45;cursor:not-allowed}
.rule-custom-note{margin-top:8px;font-size:12px}
.rule-custom-note summary{cursor:pointer;color:var(--muted);font-weight:650}
.rule-custom-row{display:grid;grid-template-columns:100px 1fr auto;gap:8px;align-items:center;margin-top:6px}
.rule-custom-hint{font-size:11px;margin-top:4px}
.rule-edit-row.rule-chip-row{display:grid;grid-template-columns:56px 1fr auto;gap:8px;align-items:start;border:1px solid var(--border);border-radius:8px;padding:7px 8px;margin-top:6px}
.rule-chip-row.unrecognized{border-color:#f5c26b;background:#fffbeb}
.rule-edit-row.rule-chip-row{grid-template-columns:auto minmax(0,1fr) auto}
.rule-chip-text{font-size:13px;font-weight:600}.rule-chip-tag{font-size:11px;color:var(--muted)}
.rule-empty{margin-top:6px}
@media(max-width:680px){.rule-builder-grid{grid-template-columns:1fr 1fr}.rule-custom-row{grid-template-columns:1fr}.rule-edit-row.rule-chip-row{grid-template-columns:auto minmax(0,1fr)}.rule-edit-row.rule-chip-row .btn{grid-column:1 / -1;justify-self:start}}

/* master32: Master Template cards + Doctor balance rules + override list */
.mt-cards-grid{display:grid;grid-template-columns:minmax(260px,1fr) minmax(320px,1.6fr);gap:13px;margin-top:13px;align-items:start}
.mt-cards-grid>.card{margin-top:0}
@media(max-width:980px){.mt-cards-grid{grid-template-columns:1fr}}
.mt-card{margin-top:13px}
.mt-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}
.mt-head h2{margin:0}
.mt-sub{font-size:12px;font-weight:600;color:#64748b;background:#f1f5f9;border-radius:999px;padding:2px 8px;margin-left:6px;vertical-align:middle}
.mt-help{font-size:13px;line-height:1.45;margin-bottom:10px}
.mt-count{font-size:12px;font-weight:700;color:#475569;background:#eef2ff;border-radius:999px;padding:2px 9px}
.ovr-filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.ovr-filters label{display:flex;align-items:center;gap:6px;font-size:12px;color:#475569}
.ovr-filters select{padding:4px 8px;border-radius:8px;border:1px solid #cbd5e1;font-size:13px}
.ovr-list{display:flex;flex-direction:column;gap:4px;max-height:320px;overflow:auto}
.ovr-row{display:grid;grid-template-columns:150px 150px 1fr 30px;gap:8px;align-items:center;padding:6px 8px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;font-size:13px}
.ovr-row .ovr-date{font-weight:700}
.ovr-row .ovr-loc{color:#334155}
.ovr-row .ovr-type{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ovr-row .ovr-hol{font-size:12px;color:#9a3412;background:#fff7ed;border:1px solid #fed7aa;border-radius:999px;padding:1px 7px}
.ovr-x{width:26px;height:26px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;color:#b91c1c;font-size:16px;line-height:1;cursor:pointer}
.ovr-x:hover{background:#fee2e2;border-color:#fca5a5}
@media(max-width:700px){.ovr-row{grid-template-columns:1fr 1fr 30px}.ovr-row .ovr-type{grid-column:1/3}}
.br-head{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b;padding:0 10px 4px}
.br-list{display:flex;flex-direction:column;gap:8px}
.br-rule{border:1px solid #e2e8f0;border-radius:10px;padding:8px 10px;background:#fff}
.br-rule.off{opacity:.55;background:#f8fafc}
.br-rule.hard{border-left:4px solid #475569}
.br-rule.soft{border-left:4px solid #f59e0b}
.br-rule.draft{border-style:dashed;border-left:4px solid #cbd5e1}
.br-row select,.br-row input[type=number]{width:100%;padding:5px 7px;border:1px solid #cbd5e1;border-radius:8px;font-size:13px;background:#fff}
.br-row select:disabled{background:#f1f5f9;color:#64748b}
.br-num{display:flex;align-items:center;gap:4px}.br-num span{font-size:12px;color:#475569;white-space:nowrap}
.br-docs{position:relative}
.br-docs summary{list-style:none;cursor:pointer;padding:5px 8px;border:1px solid #cbd5e1;border-radius:8px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#fff}
.br-docs summary::-webkit-details-marker{display:none}
.br-docs[open] summary{border-color:#6366f1}
.br-docs .br-docs-pop{position:absolute;z-index:30;top:calc(100% + 4px);left:0;min-width:190px;max-height:260px;overflow:auto;background:#fff;border:1px solid #cbd5e1;border-radius:10px;box-shadow:0 10px 24px rgba(15,23,42,.14);padding:6px}
.br-docs .br-docs-pop label{display:flex;gap:7px;align-items:center;padding:4px 6px;border-radius:8px;font-size:13px;cursor:pointer}
.br-docs .br-docs-pop label:hover{background:#f1f5f9}
.br-head,.br-row{display:grid;grid-template-columns:34px minmax(140px,1.3fr) minmax(120px,1.2fr) minmax(88px,130px) minmax(88px,120px) minmax(148px,auto) 32px;gap:8px;align-items:center}
.br-strength{display:flex;flex-wrap:wrap;gap:4px}
.br-strength select.hs-select{width:auto;min-width:84px;flex:0 0 auto}
.br-del{width:28px;height:28px;border-radius:8px;border:1px solid #e2e8f0;background:#fff;color:#b91c1c;font-size:16px;cursor:pointer}
.br-del:hover{background:#fee2e2}
.br-status{margin-top:6px;font-size:13px;padding:4px 8px;border-radius:8px;background:#f0fdf4;color:#166534}
.br-status.warn{background:#fffbeb;color:#92400e}
.br-status.bad{background:#fef2f2;color:#991b1b;font-weight:600}
.br-status.muted-st{background:#f8fafc;color:#64748b}
@media(max-width:900px){.br-head{display:none}.br-row{grid-template-columns:34px 1fr 1fr;}.br-row .br-del{justify-self:end}}
.master-paint-row .master-paint-btn[data-paint="CloseAll"]{background:#ffe4e6;border-color:#fb7185;color:#9f1239}
.master-paint-row .master-paint-btn[data-paint="CloseAll"].active{background:#9f1239;color:#fff;border-color:#9f1239}
.emp-modal-top{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;align-items:start}
.emp-name-grid{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.emp-ident{display:grid;gap:10px}
.emp-dates{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.emp-pos-stack{display:grid;gap:7px}
.emp-pos-stack .field{grid-template-columns:88px minmax(0,1fr);align-items:center;gap:8px}
.emp-pos-stack .field span{font-size:12px}
.emp-pos-stack select{min-height:34px;padding:6px 8px}
.emp-days-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:12px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#f8fafc}
.emp-days-row>.emp-days-lab{font-size:12px;font-weight:700;color:var(--muted);margin-right:4px}
.emp-days-pair{display:flex;align-items:center;gap:7px;flex:0 0 auto}
.emp-days-pair>span{font-size:13px;font-weight:650;white-space:nowrap}
.emp-days-pair input[type=number]{width:58px;flex:0 0 auto;min-height:34px;padding:6px 8px}
.emp-days-pair select{width:auto;min-width:88px;flex:0 0 auto;min-height:34px}
.emp-days-pair .days-strength{width:auto}
@media(max-width:680px){.emp-modal-top,.emp-dates,.emp-name-grid{grid-template-columns:1fr}.emp-pos-stack .field{grid-template-columns:1fr}}
.closed-days-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;flex-wrap:wrap}.closed-days-banner[hidden]{display:none}
.help-toc{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.help-toc a{display:inline-block;padding:7px 12px;border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--brand-green-deep);text-decoration:none;font-size:13px;font-weight:700}
.help-toc a:hover{background:var(--accent-soft);border-color:#b7d9a8}
.help-page .help-key{background:rgba(255,255,255,.9)}
.help-page .help-n{background:var(--brand-green-deep)}
.help-steps{display:grid;gap:12px;margin:0}
.help-step{display:grid;grid-template-columns:40px 1fr;gap:12px;align-items:start;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#fff}
.help-n{width:40px;height:40px;border-radius:12px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px}
.help-step h3{margin:2px 0 6px;font-size:16px}
.help-step p,.help-step ul{margin:0 0 8px;font-size:14px;color:#334155}
.help-step ul{padding-left:18px}
.help-step p:last-child,.help-step ul:last-child{margin-bottom:0}
.help-keys{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.help-key{border:1px solid var(--border);border-radius:12px;padding:12px 14px;background:#fff}
.help-key h3{margin:0 0 6px;font-size:16px}
.help-key p{margin:0;font-size:13px;color:#475569;line-height:1.45}
@media(max-width:680px){.help-keys{grid-template-columns:1fr}.help-step{grid-template-columns:1fr}}
/* Shared "?" beside a title. Hover, keyboard focus, or click shows the description. */
.title-with-help{display:flex;align-items:center;gap:8px;flex-wrap:wrap;width:fit-content;max-width:100%;margin:0 0 10px}
.title-with-help > :is(h1,h2,h3,strong){margin:0}
.page-chrome .title-with-help,
.top .title-with-help,
.mt-head .title-with-help,
.mv-head .title-with-help,
.auto-range-head .title-with-help,
.auto-rule-grid .title-with-help{margin:0}
.mt-head:has(.help-tip){margin-bottom:10px}
.help-tip-wrap{display:inline-flex;align-items:center;flex:0 0 auto}
.help-tip{appearance:none;-webkit-appearance:none;width:17px;height:17px;min-width:17px;min-height:17px;padding:0;border-radius:50%;border:1px solid #c5cfc6;background:#f3f6f1;color:var(--muted);font-family:var(--font-display);font-size:11px;font-weight:800;line-height:1;display:inline-grid;place-items:center;cursor:pointer;flex:0 0 auto;box-shadow:none}
.help-tip:hover,.help-tip:focus-visible,.help-tip[aria-expanded="true"]{border-color:#9bb39a;color:#243028;background:#fff}
.help-tip:focus-visible{outline:2px solid var(--brand-green-deep);outline-offset:2px}
body.read-only main button.help-tip{pointer-events:auto}
.help-tip-pop{position:fixed;z-index:120;box-sizing:border-box;width:min(380px,calc(100vw - 24px));max-height:min(70vh,440px);overflow:auto;padding:10px 12px;background:#fff;color:var(--text);border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 40px rgba(20,40,20,.14);font-family:var(--font-ui);font-size:13px;font-weight:500;line-height:1.45;letter-spacing:0;text-align:left;text-transform:none}
.help-tip-pop[hidden]{display:none!important}
.help-tip-pop strong{font-weight:750;color:inherit}
.help-tip-p{display:block}
.help-tip-p+.help-tip-p{margin-top:8px}
.to-layout{display:block;max-width:1040px}
.to-filters{background:#f3faf8;border:1px solid #d7ebe4;border-radius:14px;padding:10px 12px;margin:0 0 10px;display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;color:#000}
.to-filters>.to-search{flex:1.4 1 220px}
.to-filters>.to-block{flex:1 1 160px;min-width:0}
.to-search{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #d7ebe4;border-radius:10px;padding:0 10px;height:38px;box-sizing:border-box}
.to-search input{border:0;background:transparent;padding:0;min-height:0;width:100%}
.to-block h2{margin:0 0 4px;font-size:12px;font-weight:800;color:#000;display:flex;align-items:center;gap:8px}
.to-multi{position:relative}
.to-multi-btn{width:100%;height:38px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff;color:#000;border:1px solid #d7ebe4;border-radius:10px;padding:0 10px;font:inherit;font-size:14px;font-weight:650;text-align:left;cursor:pointer}
.to-multi-btn:focus-visible{outline:2px solid var(--brand-green-deep);outline-offset:2px}
.to-multi-panel{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 4px);background:#fff;color:#000;border:1px solid #d7ebe4;border-radius:12px;box-shadow:0 12px 28px rgba(20,40,20,.12);padding:8px;max-height:280px;overflow:auto}
.to-multi-panel[hidden]{display:none!important}
.to-multi-search{width:100%;margin:0 0 8px;background:#fff;color:#000}
.to-multi .to-check,.to-multi .to-pos{padding:4px 2px}
.to-status{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.to-status label,.to-check{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:650}
.to-status input,.to-check input{width:auto;min-height:0;margin:0}
.to-filters select,.to-filters input{background:#fff;color:#000}
.to-block>select{width:100%;height:38px;min-height:0;box-sizing:border-box;border:1px solid #d7ebe4;border-radius:10px;padding:0 30px 0 10px;font:inherit;font-size:14px;font-weight:650;appearance:none;-webkit-appearance:none;cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 10 6%27%3E%3Cpath d=%27M0 0h10L5 6z%27/%3E%3C/svg%3E") no-repeat right 11px center/9px 6px}
.to-pos-search{margin:8px 0}
.to-pos{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:14px;font-weight:650}
.to-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.to-pager{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:12px;color:var(--muted)}
.to-pager select{width:auto;min-height:28px;padding:2px 8px}
.to-card{border:1px solid var(--border);border-radius:14px;background:#fff;padding:12px 14px;margin-bottom:10px}
.to-card h3{margin:0;font-size:16px}
.to-emp-link{margin:0;padding:0;border:0;background:none;color:inherit;font:inherit;font-weight:750;cursor:pointer;text-align:left}
.to-card .to-emp-link{font-size:16px}
.to-emp-link:hover,.to-emp-link:focus-visible{text-decoration:underline}
.to-meta{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:6px;color:#334155;font-size:13px}
.to-pill{display:inline-flex;align-items:center;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:800}
.to-pill.Pending{background:#fef3c7;color:#92400e}
.to-new-note{display:inline-flex;align-items:center;margin-left:8px;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:650;color:#3f6212;background:#f0fdf4;border:1px solid #bbf7d0}
.to-new-note[hidden]{display:none}
.to-pill.Approved{background:#dcfce7;color:#166534}
.to-pill.Declined{background:#fee2e2;color:#991b1b}
.to-pill.Canceled,.to-pill.Expired{background:#e2e8f0;color:#334155}.to-pill.Imported{background:#e0e7ff;color:#3730a3}.to-pill.Short{background:#ffedd5;color:#9a3412;margin-left:6px}
.to-conflict{margin-top:8px;background:#fff7ed;border:1px solid #fdba74;border-radius:10px;padding:8px 10px;font-size:13px}
.to-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.to-note{display:grid;gap:8px;margin-top:8px;padding:10px;border-radius:10px;border:1px solid var(--border);background:#f8fafc}
.to-note[hidden]{display:none}
.to-note[data-mode=Declined]{border-color:#fecaca;background:#fef2f2}
.to-note[data-mode=Approved]{border-color:#bbf7d0;background:#f0fdf4}
.to-note-label{display:block}
.to-note input{width:100%;box-sizing:border-box}
.to-note-error{color:#991b1b;font-size:13px;font-weight:650}
.to-note-actions{display:flex;flex-wrap:wrap;gap:8px}
.to-note .btn.to-confirm-decline{background:#dc2626;border-color:#dc2626;color:#fff;font-weight:700}
.to-actions .btn.to-decline.selected{background:#fee2e2;border-color:#dc2626;color:#991b1b;font-weight:700}
.to-actions .btn.to-approve.selected{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--brand-green-deep)}
.to-history{margin-top:8px;font-size:13px}
.to-history li{margin:4px 0}
.to-form{border:1px solid var(--border);border-radius:14px;padding:12px;margin-bottom:12px;background:#fff;display:grid;gap:8px}
.to-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.to-notice-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 18px}
.to-notice-input{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:650}
.to-notice .to-notice-input input{width:72px;height:38px;min-height:0;box-sizing:border-box;font-size:14px}
.to-notice .to-check{min-height:38px}
.to-notice-note{margin:0;font-size:13px}
.to-form select,.to-form input[type=date],.to-form input[type=time],.to-form input[type=text]{height:38px;min-height:0;box-sizing:border-box;font-size:14px}
.to-form select{appearance:none;-webkit-appearance:none;padding:0 30px 0 10px;cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 10 6%27%3E%3Cpath d=%27M0 0h10L5 6z%27/%3E%3C/svg%3E") no-repeat right 11px center/9px 6px}
.to-empty{padding:28px 8px;color:var(--muted)}
@media(max-width:800px){.to-layout,.to-form-grid{grid-template-columns:1fr}}
.to-section-head{display:flex;align-items:center;gap:10px;margin:18px 0 10px}.to-section-head h2{margin:0}
.to-history-section{margin-top:18px}
.to-history-section>summary{display:flex;align-items:baseline;gap:10px;cursor:pointer;list-style:none;padding:10px 0}
.to-history-section>summary::-webkit-details-marker{display:none}
.to-history-section>summary h2{margin:0;display:inline-flex;align-items:center;gap:8px}
.to-history-section>summary h2::before{content:"▸";font-size:14px;color:var(--muted);transition:transform .15s}
.to-history-section[open]>summary h2::before{transform:rotate(90deg)}
.to-view-switch{display:inline-flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff;margin:0 0 12px}
.to-view-switch button{border:0;background:none;padding:7px 16px;font:inherit;font-size:14px;font-weight:700;color:var(--muted);cursor:pointer}
.to-view-switch button+button{border-left:1px solid var(--border)}
.to-view-switch button.on{background:var(--accent-soft);color:var(--accent)}
/* Time off calendar */
.toc-card{position:relative;margin-bottom:13px}
#timeoff .vac-summary-card{margin-top:18px}
.to-add-card{width:min(560px,100%)}
.to-add-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.to-add-head h2{margin:0}
.to-add-form{border:0;padding:0;margin:0}
.to-emp-combo{position:relative}
.to-emp-combo input{width:100%;box-sizing:border-box}
.to-emp-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:5;max-height:240px;overflow:auto;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 30px rgba(20,40,20,.14);padding:4px}
.to-emp-list[hidden]{display:none}
.to-emp-opt{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:14px}
.to-emp-opt span{color:var(--muted);font-size:12px;font-weight:500}
.to-emp-opt.on,.to-emp-opt:hover{background:#eef6ee}
.to-emp-none{padding:8px 10px;color:var(--muted);font-size:13px}
#empSet-timeoff .to-notice h3{margin:0 0 8px;font-size:15px}
#empSet-timeoff .to-notice .title-with-help{margin:0 0 8px}
#empSet-timeoff .to-actions{justify-content:flex-end;margin-top:14px}
#empSet-timeoff .to-opt{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);display:grid;gap:8px}
#empSet-timeoff .to-opt .field input[type=text],#empSet-timeoff .to-opt .field input[type=date],#empSet-timeoff .to-opt .kdp-range-btn,#empSet-timeoff .to-opt select{height:38px;min-height:0;box-sizing:border-box;font-size:14px}
.to-blackouts{display:flex;flex-wrap:wrap;gap:6px}.to-blackouts:empty{display:none}
.to-blackout{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 10px;border:1px solid var(--border);border-radius:999px;background:#f7faf6;font-size:13px;font-weight:650}
.to-blackout button{border:0;background:none;cursor:pointer;font-size:16px;line-height:1;color:var(--muted);padding:2px 4px}
.to-blackout-add{display:grid;grid-template-columns:1.4fr 1.4fr auto;gap:8px;align-items:end}
@media(max-width:560px){.to-blackout-add{grid-template-columns:1fr 1fr}.to-blackout-reason{grid-column:1/-1}}
.to-types{display:flex;flex-wrap:wrap;gap:6px 14px}.to-types label{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:650}.to-types input{width:auto;min-height:0;margin:0}
.to-pill.Blackout{background:#fce7f3;color:#9d174d;margin-left:6px}.to-pill.Busy{background:#fef3c7;color:#92400e;margin-left:6px}
#employeeapp .switch-row{margin:4px 0 12px}
#employeeapp .to-actions{justify-content:flex-end;margin-top:14px}
#employeeapp .links-opt-ahead{display:grid;gap:4px;margin:4px 0 2px}#employeeapp .links-opt-ahead select{height:38px;max-width:280px}
#employeeapp .links-opt-ahead-note{margin:0 0 6px;font-size:13px}
.toc-card[hidden],.vac-summary-card[hidden]{display:none}
.toc-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.toc-bar2{justify-content:flex-start;gap:14px}
.toc-nav{display:flex;align-items:center;gap:6px}
.toc-nav h2{margin:0;min-width:170px;text-align:center;font-family:var(--font-display);font-size:20px}
.toc-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
#timeOffCalGroups{padding-left:10px;border-left:1px solid var(--border)}
#timeOffCalGroups{flex-direction:column;align-items:flex-start;gap:4px}.toc-switch{font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}
.toc-status{display:flex;align-items:center;gap:8px}
.toc-lab{font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.toc-toggles{display:flex;flex-wrap:wrap;gap:6px}
.toc-toggle{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 12px 0 9px;border:1px solid #c9d4cb;border-radius:9px;background:#fff;color:#334155;font:inherit;font-size:13px;font-weight:700;cursor:pointer;box-shadow:0 1px 2px rgba(20,40,20,.08)}
.toc-toggle:hover{border-color:var(--brand-green-deep);background:#f7fbf5}
.toc-toggle:focus-visible{outline:2px solid var(--brand-green-deep);outline-offset:2px}
.toc-toggle.on{border-color:var(--brand-green-deep);background:var(--accent-soft);color:var(--accent)}
.toc-box{width:16px;height:16px;border:1.5px solid #94a3b8;border-radius:4px;background:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:900;line-height:1;color:#fff}
.toc-toggle.on .toc-box{background:var(--brand-green-deep);border-color:var(--brand-green-deep)}
.toc-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12.5px;color:var(--muted)}
.toc-legend span{display:inline-flex;align-items:center;gap:5px}
.toc-sw{display:inline-block;width:20px;height:11px;border-radius:4px;background:var(--tb);border:1.5px solid var(--td)}
.toc-sw.pend{background:repeating-linear-gradient(135deg,#fff 0 4px,var(--tb) 4px 8px);border-style:dashed}
.t-Vacation{--tb:#e5e9ef;--td:#94a3b8;--ti:#334155}
.t-Sick{--tb:#fde2e2;--td:#f87171;--ti:#991b1b}
.t-Unavailable{--tb:#fef3c7;--td:#f59e0b;--ti:#92400e}
.t-Leave{--tb:#ede4f7;--td:#a78bfa;--ti:#5b21b6}
.t-Other{--tb:#d9f2f7;--td:#22b3cf;--ti:#155e75}
.toc-dow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));font-size:12px;font-weight:700;color:var(--muted);text-align:center;padding-bottom:6px}
.toc-grid{border:1px solid var(--border);border-radius:12px;overflow:hidden}
.toc-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:min-content;position:relative;min-height:104px;padding-bottom:6px;border-top:1px solid var(--border)}
.toc-week:first-child{border-top:0}
.toc-bgs{position:absolute;inset:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.toc-bg{background:#fff;border-left:1px solid var(--border)}.toc-bg:first-child{border-left:0}
.toc-bg.we{background:#f7f9f6}.toc-bg.other{background:#fafbfa}
.toc-bg.today{box-shadow:inset 0 0 0 2px var(--brand-green-deep)}
.toc-num{grid-row:1;position:relative;display:flex;justify-content:space-between;align-items:center;gap:4px;padding:6px 8px 4px;font-size:12.5px;font-weight:750}
.toc-num.other{color:#b4bcb7}
.toc-count{font-size:11px;font-weight:700;color:var(--muted);background:#f1f4f0;border-radius:999px;padding:1px 7px;white-space:nowrap}
.toc-count.busy{background:var(--warn);color:#92400e}
.toc-ev{position:relative;min-width:0;margin:1px 4px 2px;padding:3px 8px;border:1.5px solid var(--td);border-radius:7px;background:var(--tb);color:var(--ti);font:inherit;font-size:12px;line-height:1.35;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toc-ev b{font-weight:700}.toc-ev small{font-weight:600;opacity:.8;margin-left:5px;font-size:11px}
.toc-ev.pend{background:repeating-linear-gradient(135deg,#fff 0 6px,var(--tb) 6px 12px);border-style:dashed}
.toc-ev.s-Declined{opacity:.55;background:#fff;border-style:dotted}.toc-ev.s-Declined b{text-decoration:line-through}
.toc-ev.cont-r{margin-right:0;border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}
.toc-ev.cont-l{margin-left:0;border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}
.toc-ev:hover,.toc-ev:focus-visible{filter:brightness(.97);box-shadow:0 0 0 2px rgba(63,143,40,.25);outline:none}
.toc-ev.sel{box-shadow:0 0 0 2px var(--brand-green-deep)}
/* Role colours: doctors blue, staff green. A stripe on the bar's leading edge keeps the type colour as the fill. */
.r-doc{--role:#1d4ed8;--role-bg:#dbeafe;--role-ink:#1e3a8a}
.r-staff{--role:#3f8f28;--role-bg:#e3f3da;--role-ink:#2f6b1e}
.toc-ev.r-doc,.toc-ev.r-staff{padding-left:10px;box-shadow:inset 4px 0 0 var(--role)}
.toc-ev.r-doc:hover,.toc-ev.r-doc:focus-visible,.toc-ev.r-staff:hover,.toc-ev.r-staff:focus-visible{box-shadow:inset 4px 0 0 var(--role),0 0 0 2px rgba(63,143,40,.25)}
.toc-ev.r-doc.sel,.toc-ev.r-staff.sel{box-shadow:inset 4px 0 0 var(--role),0 0 0 2px var(--brand-green-deep)}
.to-role{display:inline-flex;align-items:center;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:800;background:var(--role-bg);color:var(--role-ink)}
.to-card.r-doc,.to-card.r-staff{border-left:4px solid var(--role)}
.to-role-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--role);margin:0 5px 0 2px;vertical-align:-1px}
.toc-ini{display:none}
.toc-pop{position:absolute;z-index:40;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 34px rgba(15,23,42,.18);padding:12px}
.toc-pop[hidden]{display:none}
.toc-pop-head{display:flex;align-items:center;gap:8px}.toc-pop-head .to-emp-link{font-size:15px}
.toc-pop-x{margin-left:auto;border:0;background:none;font-size:20px;line-height:1;color:var(--muted);cursor:pointer;padding:0 2px}
.toc-pop-meta{font-size:13px;color:var(--muted);margin-top:4px}
.toc-pop .to-actions{margin-top:10px}
@media(max-width:700px){
  .toc-nav h2{min-width:0;font-size:17px}.toc-nav{width:100%;justify-content:space-between}
  .toc-legend,.toc-bar2,.toc-lab{display:none}
  #timeOffCalGroups{padding-left:0;border-left:0}
  .toc-toggle{height:32px;padding:0 9px 0 7px;font-size:12.5px;gap:5px}
  .toc-week{min-height:72px}
  .toc-num{padding:4px 4px 2px;font-size:11px}.toc-count{display:none}
  .toc-ev{margin:1px 2px;padding:2px 3px;font-size:10px;text-align:center}
  .toc-ev.r-doc,.toc-ev.r-staff{padding-left:5px;box-shadow:inset 3px 0 0 var(--role)}
  .toc-full{display:none}.toc-ini{display:inline;font-weight:800}
}

/* ---- index.html body, after the People page ---- */
#copyWeekPanel.modal-backdrop{z-index:90;padding:16px}
#copyWeekPanel[hidden]{display:none!important}
.copy-sheet{width:min(1080px,100%);max-height:min(900px,calc(100vh - 24px));display:flex;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 24px 60px rgba(15,23,42,.28)}
.copy-rail{width:262px;flex:0 0 262px;background:#e7f6df;color:#1b2430;padding:14px 16px 18px;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:14px}
.copy-close{width:36px;height:36px;border:0;background:transparent;border-radius:10px;font-size:26px;line-height:1;cursor:pointer;color:#3f5c48;padding:0}
.copy-close:hover{background:rgba(63,143,40,.12)}
.copy-rail h2{margin:0;font-family:Nunito,system-ui,sans-serif;font-size:28px;color:#245018}
.copy-k{display:block;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#3f6b32;margin-bottom:4px}
.copy-checks{display:flex;flex-direction:column;gap:6px}
.copy-count{margin:0;font-family:Nunito,system-ui,sans-serif;font-size:28px;font-weight:800;color:#245018;line-height:1}
.copy-positions,.copy-included{margin:0;font-size:14px;font-weight:700;line-height:1.35}
.copy-main{flex:1;min-width:0;padding:18px 20px 16px;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column}
.copy-warn{background:#fff4df;border:1px solid #f0c36a;color:#7a4b00;border-radius:12px;padding:10px 12px;font-size:14px;line-height:1.4;margin:0 0 14px}
.copy-warn strong{display:block;margin-bottom:2px}
#copyWeekHistoryNote{display:block;margin-top:4px;font-weight:700}
#copyWeekHistoryNote[hidden]{display:none!important}
.copy-cals{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.copy-cals h3{margin:0 0 8px;font-family:Nunito,system-ui,sans-serif;font-size:20px;color:#245018}
.copy-cal-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}
.copy-cal-nav strong{font-family:Nunito,system-ui,sans-serif;font-size:16px;color:#245018}
.copy-cal-arrow{width:32px;height:32px;border-radius:50%;border:1px solid #d7e0d8;background:#fff;font-size:18px;line-height:1;cursor:pointer;color:#3f8f28}
.copy-cal-arrow:disabled{opacity:.35;cursor:not-allowed}
.copy-dow{display:grid;grid-template-columns:repeat(7,1fr);margin:6px 0 2px}
.copy-dow span{text-align:center;font-size:11px;font-weight:800;color:#5c6b66}
.copy-dow span:nth-child(n+6){color:#9aa89a}
.copy-week{display:grid;grid-template-columns:repeat(7,1fr);align-items:center;width:100%;border:0;background:transparent;border-radius:999px;padding:1px 0;margin:1px 0;cursor:pointer;font:inherit;color:inherit}
.copy-week:hover:not(:disabled){background:#f3f6f1}
.copy-week.sel{background:#d7efc4}
.copy-week.sel:hover:not(:disabled){background:#d7efc4}
.copy-week:focus-visible{outline:2px solid #3f8f28;outline-offset:2px}
.copy-day{display:flex;align-items:center;justify-content:center;height:30px;font-size:13px;font-weight:700;color:#1b2430}
.copy-day.other{color:#9aa89a;font-weight:600}
.copy-day.we{color:#8b978c}
.copy-week.sel .copy-day{color:#245018}
.copy-week.sel .copy-day.other{color:#4d7a40}
.copy-week.sel .copy-day:first-child,.copy-week.sel .copy-day:last-child{background:#3f8f28;color:#fff;border-radius:999px;height:30px}
.copy-week.locked{opacity:.38;cursor:not-allowed}
.copy-day.today{box-shadow:inset 0 0 0 2px #e39b12;border-radius:999px}
.copy-week.sel .copy-day.today:first-child,.copy-week.sel .copy-day.today:last-child{box-shadow:inset 0 0 0 2px #f6d48a}
.copy-cal-range{margin:8px 0 0;font-size:12px;font-weight:700;color:#3f5c48}
.copy-opt-title{margin:16px 0 0;font-family:Nunito,system-ui,sans-serif;font-size:20px;color:#245018}
.copy-options{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;margin-top:8px}
.copy-check{display:flex;align-items:flex-start;gap:8px;font-size:14px;font-weight:650;line-height:1.3}
.copy-check input{accent-color:#3f8f28;margin-top:2px;width:16px;height:16px;flex:0 0 auto}
.copy-actions{margin-top:auto;padding-top:16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
#copyWeekApply{min-width:140px;border-radius:999px;padding:10px 18px;font-weight:800}
#copyWeekApply:disabled{opacity:.45;cursor:not-allowed}
.copy-hint{margin:0;font-size:12px;color:#9a3412;font-weight:700}
.copy-skip-list{display:flex;flex-direction:column;gap:8px}
.copy-skip-empty{margin:0;font-size:13px;color:#3f5c48}
.copy-skip h4{margin:0 0 2px;font-size:13px;color:#245018}
.copy-skip ul{margin:0;padding-left:16px;font-size:12px;line-height:1.35}
.copy-skip li{margin:1px 0}
.copy-more{list-style:none;margin-left:-16px;font-size:11px;color:#3f5c48;font-weight:700}
@media(max-width:860px){.copy-sheet{flex-direction:column;overflow:auto}.copy-rail{width:auto;flex:none;max-height:none}.copy-cals,.copy-options{grid-template-columns:1fr}}

/* ---- replace-employee dialog ---- */
#replaceModal[hidden],#replaceModal [hidden]{display:none!important}#replaceModal .replace-table th,#replaceModal .replace-table td{border-bottom:1px solid var(--border);padding:4px 6px}

/* ---- staff schedule conflict / incomplete labels ---- */
/* master25: Staff Schedule Conflict / Incomplete labels */
.sc-badge{display:inline-block;font-size:11px;font-weight:800;padding:2px 7px;border-radius:999px;margin-left:5px;cursor:help;vertical-align:middle;border:1px solid transparent;line-height:1.35}
.sc-badge.conflict{background:#fee2e2;color:#991b1b;border-color:#fca5a5}
.sc-badge.incomplete{background:#fef3c7;color:#92400e;border-color:#fcd34d}
.mchip .sc-badge{font-size:9px;padding:1px 5px;margin-left:3px}
.sc-reasons{margin:0 0 6px;padding:6px 8px;border-radius:8px;font-size:12px;background:#fff7ed;border:1px solid #fed7aa}
.sc-reasons ul{margin:4px 0 0 16px;padding:0}.sc-reasons .sc-c{color:#991b1b}.sc-reasons .sc-i{color:#92400e}
.staff-day-tabs .sc-badge{font-size:13px;padding:3px 8px;margin-left:0}
.staff-location-card.sc-has-conflict{box-shadow:inset 3px 0 0 #dc2626}.staff-location-card.sc-has-incomplete:not(.sc-has-conflict){box-shadow:inset 3px 0 0 #f59e0b}
button.sc-badge{font:inherit;cursor:pointer}
.staff-location-head button.sc-badge{font-size:14px;font-weight:700;padding:4px 11px;line-height:1.2}
.staff-slot-row{grid-template-columns:auto minmax(6.75rem,max-content) minmax(0,1fr)}
.slot-tools{display:flex;gap:2px;align-items:center}
.pin-btn,.cancel-slot-btn{border:1px solid var(--border);background:#fff;border-radius:8px;width:28px;height:28px;padding:0;cursor:pointer;line-height:1}
.pin-btn.on{background:#fef3c7;border-color:#f59e0b}
.sched-drop{outline:2px dashed var(--brand-green-deep);outline-offset:1px}
.staff-slot-note,.why-note,.staff-slot-notes{grid-column:1 / -1}
.why-note{font-size:11px;color:var(--muted)}
.fill-panel{margin:6px 0;padding:8px;border:1px solid #fed7aa;border-radius:8px;background:#fff7ed}
.fill-person{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:4px 6px;font-size:13px;width:100%;border:0;background:transparent;text-align:left;cursor:pointer;font:inherit;border-radius:8px}
button.fill-person:hover{background:#ffedd5}
.auto-report-scroll{max-height:480px;overflow:auto}
.pref-grid{display:grid;gap:8px}
.pref-days{display:flex;flex-wrap:wrap;gap:8px}
.pref-note{margin:0 0 8px;font-size:13px}
.limits-row{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}
.limits-row>.field-block{flex:1 1 220px;margin:0}
.hours-pair{display:flex;flex-wrap:wrap;gap:10px}
.hours-pair .field{min-width:140px}
.week-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px}
.week-row{display:grid;grid-template-columns:3.2rem minmax(0,1fr) minmax(7.5rem,11rem);gap:8px;align-items:center;margin:4px 0}
.week-day{font-weight:700}
.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.seg button{border:0;background:#fff;padding:4px 8px;cursor:pointer;font:inherit;font-size:12px}
.seg button.on[data-week-state="preferred"]{background:#dbeafe;font-weight:700}
.seg button.on[data-week-state="ok"]{background:#ecfdf3;font-weight:700}
.seg button.on[data-week-state="unavailable"]{background:#fee2e2;font-weight:700}
.hs-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0 0 10px;font-size:13px;line-height:1.45;color:#1e293b}
.hs-pill{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:750;line-height:1.2;padding:3px 8px;border-radius:999px;white-space:nowrap;vertical-align:middle}
.hs-pill.hard{background:#e9edf0;color:#273340}
.hs-pill.soft{background:#dbeafe;color:#1e3a8a}
.hs-pill.hard::before{content:"";width:12px;height:12px;flex:0 0 auto;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M7 10V8a5 5 0 0 1 10 0v2h1a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h1zm2 0h6V8a3 3 0 0 0-6 0v2z'/%3E%3C/svg%3E") center / contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M7 10V8a5 5 0 0 1 10 0v2h1a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h1zm2 0h6V8a3 3 0 0 0-6 0v2z'/%3E%3C/svg%3E") center / contain no-repeat}
.hs-select{width:auto;max-width:100%;font-weight:750;font-size:12px;line-height:1.2;border-radius:999px;min-height:26px}
/* Native select chrome ignores padding on some browsers and paints the lock over "Hard". appearance:none makes padding real; longhands keep the chevron when Hard adds the lock. */
select.hs-select,
.sec-row select.type-sel.hs-select{appearance:none;-webkit-appearance:none;padding:1px 22px 1px 10px;min-height:26px;font-size:12px;background-repeat:no-repeat;background-position:right 6px center;background-size:10px 10px}
select.hs-select.hard,
.sec-row select.type-sel.hs-select.hard{appearance:none;-webkit-appearance:none;background-color:#e9edf0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23273340' d='M7 10V8a5 5 0 0 1 10 0v2h1a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h1zm2 0h6V8a3 3 0 0 0-6 0v2z'/%3E%3C/svg%3E"),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23273340' d='M7.2 8.6 12 13.4 16.8 8.6 18.2 10 12 16.2 5.8 10z'/%3E%3C/svg%3E");background-repeat:no-repeat,no-repeat;background-position:6px center,right 6px center;background-size:10px 10px,10px 10px;color:#273340;border:1px solid #cfd7dd;padding:1px 22px 1px 22px;min-width:84px;min-height:26px}
select.hs-select.soft,
.sec-row select.type-sel.hs-select.soft{appearance:none;-webkit-appearance:none;background-color:#dbeafe;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%231e3a8a' d='M7.2 8.6 12 13.4 16.8 8.6 18.2 10 12 16.2 5.8 10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;background-size:10px 10px;color:#1e3a8a;border:1px solid #bfdbfe;padding:1px 22px 1px 10px;min-height:26px}
/* Days/week Min and Max strength. .days-strength and .emp-days-pair select are less specific than this, so they cannot stretch the pill back to full width or 34px. */
.emp-days-pair select.days-strength.hs-select{width:auto;min-width:84px;max-width:100%;flex:0 0 auto;min-height:26px;height:26px;padding:1px 22px 1px 10px;font-size:12px;font-weight:750;line-height:1.2}
.emp-days-pair select.days-strength.hs-select.hard{padding:1px 22px 1px 22px;min-width:84px;min-height:26px;height:26px}
.emp-days-pair select.days-strength.hs-select.soft{padding:1px 22px 1px 10px;min-width:84px;min-height:26px;height:26px}
.hs-pill:focus-visible,.hs-select:focus-visible{outline:2px solid #1e3a8a;outline-offset:2px}
.modal-card{max-width:calc(100vw - 24px)}
@media(max-width:760px){.staffing-sections{grid-template-columns:minmax(0,1fr)}#staffRules.staffing-sections,.doc-staff-grid,.doc-staff-groups{grid-template-columns:minmax(0,1fr)}.doc-staff-group.pedo{grid-column:auto}.staff-sec,.hs-legend{min-width:0;max-width:100%}}
@media(max-width:560px){.week-row{grid-template-columns:3rem minmax(0,1fr)}.week-row select{grid-column:1 / -1}.seg{max-width:100%}.hs-select{max-width:100%}}
.rule-field-hint{display:block;margin-top:4px;color:#92400e}
#employeeAvailabilityBlock,#employeeLocationsBlock,#addEmployeeRule{display:none !important}
#autoPreviewBody{max-height:50vh;overflow:auto}
#autoPreviewBody h3{margin:12px 0 4px;font-size:16px}
#autoPreviewBody h4{margin:8px 0 2px;font-size:13px}
#autoPreviewBody ul{margin:0 0 8px 18px;padding:0}
#autoPreviewBody li{margin:3px 0}
#autoPreviewBody .auto-preview-pick{display:inline-block;width:auto!important;min-width:160px;max-width:100%;margin-left:4px;padding:3px 8px;font:inherit;border:1px solid var(--border);border-radius:8px;vertical-align:middle}

/* ---- Links page: seen since last publish ---- */
.seen-status{font-weight:600}
.seen-opened{color:#1f7a3d}
.seen-calendar{color:#8a5a00}
.seen-no{color:#b42318}
.seen-changed{display:inline-block;margin-top:2px;padding:1px 6px;border-radius:999px;background:#fff4d6;color:#7a4b00;font-size:11px;font-weight:600}

/* ---- Time off page: shift swap requests ---- */
.swap-item{padding:10px 0;border-bottom:1px solid var(--border)}
.swap-item:last-child{border-bottom:0}
.swap-item-head{margin-bottom:2px}
.swap-actions{display:flex;gap:8px;margin-top:8px}
.swap-more{margin-top:10px}
.swap-more summary{cursor:pointer;font-weight:600}

/* ---- Publish dialog: final through ---- */
.publish-head{position:sticky;top:-18px;z-index:2;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:-18px -18px 10px;padding:18px 18px 12px;background:#fff;border-bottom:1px solid var(--border)}
.publish-head .toolbar{margin:0;gap:8px}
@media(max-width:680px){.publish-head{top:-14px;margin:-14px -14px 10px;padding:14px 14px 10px}}
/* ---- Edit employee dialog: Cancel / Save stay in view with the title ---- */
.employee-modal-head{position:sticky;top:-18px;z-index:3;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:-18px -18px 12px;padding:18px 18px 12px;background:#fff;border-bottom:1px solid var(--border)}
.employee-modal-head .toolbar{margin:0;gap:8px}
@media(max-width:680px){.employee-modal-head{top:-14px;margin:-14px -14px 10px;padding:14px 14px 10px}}
.publish-notify{display:grid;gap:10px;margin:10px 0 4px;padding:12px 14px;border:1px solid var(--line,#d7e0d8);border-radius:12px;background:#f6f9f4}
.publish-notify .switch-row{align-items:center}
.publish-final{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px}
.publish-final input[type=date]{width:auto}
.publish-final .muted{flex-basis:100%;margin:0}
.publish-who{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px}
.publish-who .muted{flex-basis:100%;margin:0}
.publish-final[hidden],.publish-who .muted[hidden]{display:none}
.swap-missing{margin:6px 0;padding:6px 10px;border-radius:8px;background:#fff4d6;color:#7a4b00;font-weight:600}
.swap-missing .btn{margin-left:6px;padding:4px 10px;font-size:12px}

/* Phones and narrow windows: a slim top bar instead of the full logo card, a menu that shows it scrolls,
   and a Doctors week grid that slides sideways instead of squashing its columns. */
@media(max-width:980px){
  aside{flex-direction:row;flex-wrap:wrap;align-items:center;padding:8px 10px;gap:6px}
  .brand,body.rail-collapsed .brand{flex-direction:row;align-items:center;gap:8px;margin:0;padding:4px 10px;border-radius:10px;background:#fff;box-shadow:none}
  .brand-logo-full,body.rail-collapsed .brand-logo-full{display:none}
  .brand-logo-mark,body.rail-collapsed .brand-logo-mark{display:block;width:44px}
  .brand-product,body.rail-collapsed .brand-product{display:inline;font-size:10px}
  nav{flex-basis:100%}
  nav button{flex:0 0 auto;width:auto;padding:8px 10px}
  #doctorWeekView .table-wrap table{min-width:760px}
}
@media(max-width:680px){
  nav{-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent);mask-image:linear-gradient(90deg,#000 85%,transparent)}
  .wk-label{min-width:0}
  .wk-sub{display:none}
}

/* Consistency pass (review items 6–13). */
/* Small buttons inside rows and cards; the page's own Save Draft stays the large green one. */
.btn.small{padding:6px 10px;font-size:13px;min-height:0}
/* Page header: title with Undo / Save Draft on one line, the page's own actions on the line under it. */
.page-chrome-row2{flex-basis:100%;margin-top:-6px}
.page-chrome-row2:empty{display:none}
.page-chrome .help-line{margin:2px 0 0;max-width:52rem}
.help-line{margin:4px 0 8px}
/* Rule issues: one flat block per issue, the fix and its buttons on the same card. */
.issue-solution{background:transparent;border:0;padding:0;margin-top:4px}
.issue-actions{margin-top:6px}
.issue-actions .apply-fix{margin-top:0}
details.issue-more>summary{cursor:pointer;font-weight:700;font-size:13px;color:var(--accent);margin:8px 0 4px;width:max-content}
/* People: More menu for Replace with…, Make Inactive and Delete. */
.emp-more{position:relative}
.emp-more>summary{list-style:none;cursor:pointer;user-select:none}
.emp-more>summary::-webkit-details-marker{display:none}
.emp-more>summary::after{content:" ▾";font-size:11px}
.emp-more-pop{position:absolute;z-index:20;top:calc(100% + 4px);left:0;display:grid;gap:4px;min-width:180px;padding:6px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 28px rgba(20,40,20,.14)}
.emp-more-pop .btn{text-align:left}
/* In-app message boxes (replace the browser's grey pop-ups). */
.app-dialog{z-index:200}
.app-dialog .modal-card{width:min(460px,100%);padding:20px}
.app-dialog-title{font-size:18px;margin:0 0 8px}
.app-dialog-msg{margin:0;white-space:pre-line;line-height:1.5;font-size:14px;color:var(--text,#1f2937)}
.app-dialog-input{width:100%;box-sizing:border-box;margin-top:12px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;font:inherit}
.app-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
/* Loading screen: a thin green bar sweeps under the logo. */
.app-loading-bar{width:160px;height:4px;border-radius:999px;background:#dcebd3;overflow:hidden;position:relative}
.app-loading-bar::after{content:"";position:absolute;inset:0;width:40%;border-radius:999px;background:#6cb448;animation:appLoadingSweep 1.1s ease-in-out infinite}
@keyframes appLoadingSweep{0%{transform:translateX(-100%)}100%{transform:translateX(250%)}}
.busy-loading{position:fixed;inset:0;z-index:99999;background:rgba(246,250,243,.94);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;font:600 15px Figtree,system-ui,-apple-system,sans-serif;color:#3f8f28;cursor:progress}
.busy-loading img{display:block}
/* Printing the page itself (Ctrl+P): just the current page's content, no menu or buttons.
   Type matches the screen (Nunito titles, Figtree UI) and the logo rule is brand green. */
@media print{
  .app{display:block!important}
  .app>aside,.issue-actions,.page-chrome-actions,.page-chrome-row2,.toolbar .btn,.help-tip-wrap,.modal-backdrop,#appStatus,.rail-toggle,.undo-edit-btn,.more-actions,.week-touch{display:none!important}
  body{background:#fff!important;color:#1b2430;font-family:Figtree,system-ui,sans-serif}
  h1,h2{font-family:Nunito,system-ui,sans-serif;color:#1b2430}
  main{padding:0!important;margin:0!important}
  .card{box-shadow:none!important;break-inside:avoid-page}
  .page.active>.page-chrome{position:static!important}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .page.active::before{content:"";display:block;height:56px;margin-bottom:12px;border-bottom:3px solid #3f8f28;background:url("../assets/kids-dental-logo.png") left center/auto 48px no-repeat}
  #doctorWeekView .table-wrap{overflow:visible!important}
  #doctorWeekView .table-wrap table{min-width:0!important}
}
/* Empty lists: a soft box instead of a blank space. */
.empty-state{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px 16px;border:1px dashed #cfd7dd;border-radius:12px;background:#fafcf8;text-align:center;color:var(--muted)}
.empty-state p{margin:0;font-size:14px}

/* Phones (mobile review). */
.nav-menu-btn{display:none}
@media(max-width:680px){
  /* Menu: one button that opens every page, grouped like the computer rail. */
  aside{flex-wrap:nowrap;justify-content:space-between}
  .nav-menu-btn{display:inline-flex;align-items:center;gap:8px;margin-left:auto;padding:8px 14px;border:1px solid rgba(255,255,255,.35);border-radius:10px;background:rgba(255,255,255,.1);color:#fff;font:inherit;font-weight:700;font-size:15px;cursor:pointer}
  .nav-menu-btn svg{width:18px;height:18px}
  body.nav-open .nav-menu-btn{background:#fff;color:#163822}
  aside nav{display:none}
  body.nav-open aside{flex-wrap:wrap}
  body.nav-open aside nav{display:flex;flex-direction:column;flex-basis:100%;gap:2px;overflow:visible;-webkit-mask-image:none;mask-image:none;padding:4px 0 6px}
  body.nav-open aside nav button{width:100%;justify-content:flex-start;padding:11px 12px;font-size:16px}
  body.nav-open aside nav .nav-section,
  body.nav-open aside nav .nav-bottom{display:flex;flex-direction:column;gap:2px}
  body.nav-open aside nav .nav-section-title{display:block;margin:10px 12px 2px;font-size:12px;letter-spacing:.06em;color:rgba(255,255,255,.65)}
  body.nav-open aside nav .nav-bottom{margin-top:8px}
  body.nav-open aside nav .nav-group{display:block}
  body.nav-open aside nav .nav-chev{display:block;width:16px;height:16px;transition:transform .18s ease}
  body.nav-open aside nav .nav-group.open .nav-chev{transform:rotate(90deg)}
  body.nav-open aside nav .nav-sub-title{display:none}
  body.nav-open aside nav .nav-sub-sec{display:block;margin:6px 12px 2px 46px;font-size:11px}
  body.nav-open aside nav .nav-group .nav-sub,
  body.nav-open aside nav .nav-group:hover .nav-sub,
  body.nav-open aside nav .nav-group:focus-within .nav-sub{display:none}
  body.nav-open aside nav .nav-group.open .nav-sub{display:flex;flex-direction:column;position:static;min-width:0;padding:0;margin:0;background:transparent;box-shadow:none;border-radius:0}
  body.nav-open aside nav .nav-sub button{padding-left:46px;font-size:16px}
  /* iPhone zooms the page when a box with text under 16px is tapped. */
  input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{font-size:16px!important}
  /* Less chrome: no page subtitles, header and its buttons scroll away, the bottom bar holds Undo and Save Draft. */
  .page-chrome .help-line,.page-sched-top .sub{display:none}
  .page.active>.page-chrome,
  #stickyChrome,
  #dashboard.page.active>.home-sticky,
  #schedule.page.active>.page-sched-top,
  #staffschedule.page.active>.page-sched-top{position:static}
  .page.active>.wknav-card{position:static}
  body.has-unsaved .page-chrome-actions{display:none}
  .page-sched-top{gap:6px}
  .sched-secondary .btn{padding:6px 10px;font-size:13px}
  #unsavedBar{flex-wrap:nowrap;gap:8px;padding:8px 12px calc(8px + env(safe-area-inset-bottom))}
  #unsavedBar .unsaved-text{flex:1 1 auto;min-width:0;font-size:14px}
  #unsavedBar .unsaved-more{display:none}
  #unsavedBar .toolbar{flex:0 0 auto;flex-wrap:nowrap}
  main{padding-bottom:72px}
  /* Staff slots: role on top, the person picker full width, hours under it. */
  .staff-slot-list .staff-slot-row{grid-template-columns:auto minmax(0,1fr);padding:6px 8px}
  .staff-slot-list .staff-slot-main{grid-column:1 / -1;flex-wrap:wrap}
  .staff-slot-list .staff-slot-main select{flex:1 1 100%;min-height:40px}
  .staff-slot-list .person-shift{flex:1 1 100%}
  .staff-slot-list .person-shift input[type=time]{flex:1 1 0;width:auto;min-width:0;min-height:36px}
}

/* ---- People cards: profile header, positions | schedule columns, footer actions; every card the same height ---- */
.employee-grid{grid-auto-rows:1fr}
.employee{display:flex;flex-direction:column;padding:0;min-width:0}
.employee .employee-top{padding:11px 12px 10px;background:#e3f1d9;border-bottom:1px solid #c9e2b7;border-radius:10px 10px 0 0}
/* Staff cards: a soft green header and a green left edge, like the doctors' specialty color. */
.employee:not(.doctor-card){border-left:4px solid #a9d48e}
.employee:not(.doctor-card) .employee-top{border-radius:6px 10px 0 0}
.employee.doctor-card.pedo,
.employee.doctor-card.ortho,
.employee.doctor-card.os{border-left-width:4px;border-left-style:solid;border-left-color:var(--spec-bd)}
.employee .emp-head-name{min-width:0}
.employee .emp-head-name strong{font-size:15px;font-family:var(--font-display)}
.emp-head-tags{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px}
.employee .profile-badges{padding:0 12px}
.emp-body{display:flex;flex-direction:column;align-items:stretch;gap:5px;padding:10px 12px 12px;min-width:0}
.employee .emp-head-pos{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px;min-width:0}
.employee .emp-head-pos .emp-pos{font-size:11.5px;padding:2px 8px 2px 3px}
.employee .emp-legal-inline{display:inline;font-family:inherit;font-size:1em;font-weight:400;color:var(--muted)}
.employee .emp-body .emp-col-label{margin-top:3px}
.emp-days-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:12.5px}
.employee .emp-days-line span:first-child{font-size:12.5px}
.emp-days-line b{font-weight:750;color:var(--text)}
.employee .emp-body .hs-pill{font-size:10.5px;padding:2px 7px}
.employee .emp-body .hs-pill.hard{color:#273340}
.employee .emp-body .hs-pill.soft{color:#1e3a8a}
.emp-rule-line{display:flex;align-items:flex-start;gap:7px;font-size:12.5px;line-height:1.45;min-width:0}
.emp-rule-line .hs-pill{flex:0 0 auto;margin-top:1px}
.employee .emp-rule-line>span:last-child{font-size:12.5px;color:var(--text);min-width:0}
.employee .emp-rule{font-size:12.5px;color:inherit;cursor:help}
.employee .emp-rule-note,.employee .emp-rule-none{font-size:11.5px;color:var(--muted)}
.employee .emp-rule-note{font-size:12px;line-height:1.4;color:#475569;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.employee .emp-rule-note b{font-weight:750;color:var(--text);margin-right:2px}
.emp-facts{display:flex;flex-direction:column;gap:3px;margin-top:4px;padding-top:6px;border-top:1px solid #e6ece6}
.emp-col{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:0}
.emp-col+.emp-col{border-left:1px solid #e6ece6;padding-left:12px;align-items:stretch}
.employee .emp-col-label{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.employee .emp-pos{display:inline-flex;align-items:center;gap:5px;max-width:100%;font-size:12px;font-weight:650;line-height:1.25;padding:3px 9px 3px 4px;border-radius:999px;border:1px solid transparent}
.employee .emp-pos.pedo{background:#dbeafe;color:#1e3a8a;border-color:#bfdbfe}
.employee .emp-pos.ortho{background:#f3e8ff;color:#6b21a8;border-color:#e9d5ff}
.employee .emp-pos.other{background:#f1f5f9;color:#334155;border-color:#e2e8f0}
.employee .emp-pos-num{flex:0 0 auto;display:inline-grid;place-items:center;width:16px;height:16px;border-radius:999px;background:rgba(255,255,255,.8);font-size:10px;font-weight:800;color:inherit}
.employee .emp-empty,.employee .emp-extra{font-size:11px;cursor:help}
.emp-kv{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12.5px;min-width:0}
.employee .emp-kv span{font-size:12.5px}
.emp-kv b{font-weight:700;color:var(--text);text-align:right;min-width:0;overflow-wrap:anywhere}
.emp-kv b small{display:block;font-weight:500;color:var(--muted)}
.emp-days-tags{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px;margin:-2px 0 2px}
.employee .emp-days-tags .hs-pill{font-size:10.5px;padding:2px 7px}
.employee .emp-days-tags .hs-pill.hard{color:#273340}
.employee .emp-days-tags .hs-pill.soft{color:#1e3a8a}
.emp-email{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.employee .employee-actions{margin-top:auto;padding:9px 12px;background:#f8faf7;border-top:1px solid #e6ece6;border-radius:0 0 10px 10px}
@media(max-width:680px){.employee-grid{grid-auto-rows:auto}}

/* ---- People filter bar: search with icon, Position multi-select, status ---- */
.people-controls{margin-bottom:13px;padding:14px 18px}
.people-controls .links-filters{margin:0}
.pos-multi{position:relative}
.pos-multi-btn{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:8px 34px 8px 12px;border:1px solid var(--border);border-radius:10px;font-size:14px;font-weight:650;color:#243028;cursor:pointer;user-select:none;list-style:none;white-space:nowrap;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='%236b756c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center/12px}
.pos-multi-btn::-webkit-details-marker{display:none}
.pos-multi-btn::before{content:"Position";font-weight:500;color:var(--muted)}
.pos-multi-btn:hover{border-color:var(--brand-green)}
.pos-multi-btn:focus-visible{outline:2px solid rgba(63,143,40,.35);border-color:var(--brand-green)}
.pos-multi.active .pos-multi-btn{background-color:var(--accent-soft);border-color:var(--brand-green);color:#2f5a22}
.pos-multi-pop{position:absolute;z-index:30;top:calc(100% + 6px);left:0;min-width:240px;max-height:min(60vh,420px);overflow:auto;padding:6px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 32px rgba(20,40,20,.16)}
.pos-multi-opt{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:8px;font-size:14px;cursor:pointer;white-space:nowrap}
.pos-multi-opt:hover{background:#f3f7f1}
.pos-multi-opt input{width:16px;height:16px;margin:0;accent-color:var(--brand-green-deep)}
.pos-multi-all{font-weight:700;border-bottom:1px solid var(--border);border-radius:8px 8px 0 0;margin-bottom:4px;padding-bottom:9px}
.pos-multi-none{border-top:1px solid var(--border);border-radius:0 0 8px 8px;margin-top:4px;padding-top:9px;font-style:italic}
@media(max-width:560px){.people-controls{padding:12px}.pos-multi,.pos-multi-btn{flex:1 1 100%;width:100%}.pos-multi-pop{right:0}}

/* ---- Home search and calendar filters: same look as the People filter bar ---- */
.home-filterbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0;padding:10px 14px}
/* Week/Month, the arrows, the date and Today sit at the right end of the sticky filter bar. */
.home-cal-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto;flex:0 0 auto}
#dashboard #monthLabel{min-width:6.5rem}
.home-cal-step{display:flex;align-items:center;gap:6px}
.home-cal-nav .btn{min-height:40px}
.home-filterbar .home-search{flex:1 1 160px;min-width:150px;max-width:360px;margin:0}
.home-filterbar .home-filters{margin:0}
.home-search input{border-radius:10px;min-height:40px;padding:8px 10px 8px 36px;font-size:14px;box-shadow:none;text-overflow:ellipsis}
.home-search-icon{left:12px;width:17px;height:17px}
.home-filter-trigger{min-width:0;max-width:300px;min-height:40px;padding:8px 34px 8px 12px;font-size:14px;font-weight:650;box-shadow:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' fill='none' stroke='%236b756c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center/12px}
.home-filter-trigger[aria-expanded="true"]{box-shadow:none;outline:2px solid rgba(63,143,40,.35);border-color:var(--brand-green)}
.home-filter-name{font-weight:500;color:var(--muted)}
.home-filter-summary{font-weight:650}
.home-filter-chev{display:none}
.home-filter-trigger.is-filtered{background-color:var(--accent-soft);border-color:var(--brand-green);color:#2f5a22}
.home-filter-pop{min-width:240px;box-shadow:0 14px 32px rgba(20,40,20,.16)}
.home-filter-opt{padding:7px 10px;font-size:14px;font-weight:500}
.home-filter-opt input{width:16px;height:16px}
.home-filter-viewall{font-weight:700}
.home-filterbar .home-search-results{left:auto;right:0;width:max(100%,min(460px,calc(100vw - 40px)))}

/* ---- Edit Employee: tabs (Profile / Time off / Work rules), compact labeled sections ---- */
#employeeModal .modal-card{width:min(820px,100%);max-height:calc(100vh - 36px);padding:14px 18px}
#employeeModal .employee-modal-head{top:-14px;margin:-14px -18px 12px;padding:12px 18px 0}
#employeeModal .employee-modal-head h2{font-size:20px!important}
#employeeModal .employee-modal-head .btn{padding:7px 14px;font-size:14px}
.emp-tabs{flex:1 0 100%;display:flex;gap:2px;margin-top:2px}
.emp-tab{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border:0;border-bottom:2px solid transparent;background:none;font:inherit;font-size:14px;font-weight:650;color:var(--muted);cursor:pointer;margin-bottom:-1px}
.emp-tab:hover{color:var(--text)}
.emp-tab.on{color:var(--brand-green-deep);border-bottom-color:var(--brand-green-deep)}
.emp-tab[hidden]{display:none}
.emp-tab:focus-visible{outline:2px solid rgba(63,143,40,.35);outline-offset:-2px;border-radius:6px}
.emp-tab-n{min-width:18px;padding:0 6px;border-radius:999px;background:#eef2ee;color:var(--text);font-size:11px;font-weight:700;line-height:18px;text-align:center}
.emp-tab-n:empty{display:none}
.emp-tab.on .emp-tab-n{background:var(--accent-soft);color:#2f5a22}
.emp-tab-pane{display:grid;gap:8px}
.emp-tab-pane[hidden]{display:none}
.emp-sec{display:grid;gap:7px;align-content:start;min-width:0;padding:9px 12px;border:1px solid #e6ece6;border-radius:12px;background:#fff}
.emp-sec>h3{margin:0;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
#employeeModal .field{gap:3px}
#employeeModal .field>span{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
#employeeModal input:not([type=checkbox]):not([type=radio]),#employeeModal select:not(.days-strength):not(.hs-select),#employeeModal textarea{min-height:34px;padding:5px 9px;font-size:14px;border-radius:8px}
#employeeModal .emp-name-grid{gap:8px 10px}
#employeeModal .emp-pos-stack{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px 10px}
#employeeModal #employeeExtraPositions{display:contents}
#employeeModal .emp-pos-stack .field{grid-template-columns:1fr;gap:3px}
#employeeModal .emp-pos-stack .field span{font-size:11px}
.emp-avail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 10px}
.emp-link-off{display:flex;align-items:center;gap:8px;margin:8px 0 0;font-size:13px;cursor:pointer}
.emp-link-off[hidden]{display:none}
.emp-link-off input,.app-dialog-check input{width:16px;height:16px;margin:0;accent-color:var(--brand-green-deep)}
.app-dialog-check{display:flex;align-items:center;gap:6px;margin:4px 0 14px;font-size:14px;cursor:pointer}
#employeeModal #employeeHardSoftLegend{display:none!important}
#employeeModal .emp-days-row{margin:0;padding:6px 10px;gap:6px 12px}
#employeeModal .emp-days-row input{width:60px}
#employeeModal #employeeHoursMount{margin:0;padding:0;border:0}
#employeeModal .hours-pair{gap:10px;flex-wrap:nowrap}
#employeeModal .hours-pair .field{flex:1;min-width:0}
#employeeModal .schedule-link-box{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:6px 10px}
#employeeModal .schedule-link-head{flex:1 1 auto;display:flex;align-items:center;gap:10px}
#employeeModal .schedule-link-box .btn{padding:4px 10px;font-size:13px}
#employeeModal .emp-tab-pane>.field-block{margin:0;padding:0;border:0}
#employeeModal .banner{margin:0}
#employeeModal form>.toolbar{margin-top:10px!important}
#employeeModal form>.toolbar .btn{padding:5px 12px;font-size:13px}
#employeeModal form>.toolbar:not(:has(.btn:not([hidden]))){display:none}
@media(max-width:680px){#employeeModal .modal-card{padding:12px 14px}#employeeModal .employee-modal-head{top:-12px;margin:-12px -14px 10px;padding:10px 14px 0}#employeeModal .emp-pos-stack{grid-template-columns:1fr}.emp-tab{padding:9px 10px}#employeeModal .hours-pair{flex-wrap:wrap}}
.mstat-table td.mstat-parts{font-size:11.5px;color:#3a463e}
.mstat-filters .view-toggle .btn{padding:6px 12px;min-width:0;font-size:13px}
.mstat-table.mstat-narrow{width:auto;min-width:min(100%,640px)}.mstat-narrow td.mstat-parts{min-width:180px}
.stats-page-card>div>.mstat:first-child{margin-top:0;padding-top:0;border-top:0}
/* Staff stats: grouped rows, positions cell, Days by position share bar */
.mstat-table tr.mstat-sec td{background:#f1f6ee;color:#2f5a22;font-weight:750;font-size:12px;border-top:2px solid #cfd8d1;padding:4px 8px}
.mstat-table tr.mstat-sec td span{font-weight:500;color:var(--muted);margin-left:10px}
.mstat-table td.mstat-parts.mstat-only{color:var(--muted)}
.mstat-table td.mstat-share{display:flex;align-items:center;gap:6px;min-width:150px}
.mstat-table td.mstat-share>span:first-child{width:32px;text-align:right;font-variant-numeric:tabular-nums}
.mstat-share-track{flex:1;height:8px;border-radius:4px;background:#eef2ec;overflow:hidden}
.mstat-share-bar{display:block;height:100%;border-radius:4px;background:#9ccc85}
@media print{.mstat-share-track{display:none}}
/* Stats page: tables shrink to their content instead of stretching across wide screens */
.stats-page-card .mstat-table{width:auto;max-width:100%}
.stats-page-card .mstat-table td.mstat-parts{max-width:340px;white-space:normal}
/* Stats › For Nerds */
.geeks .geek-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:8px}
.geek-card{background:#fcfcfb;border:1px solid var(--border);border-radius:12px;padding:12px 14px;min-width:0}
.geek-card.g-full,.geek-card.g-wide{grid-column:1/-1}
.geek-card h3{margin:0;font-size:14.5px}
.geek-sub{margin:2px 0 8px;font-size:12px;color:#52514e}
.geek-note{margin:6px 0 0;font-size:11.5px;color:#6b6a65}
.geek-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.geek-tile{border:1px solid #e1e0d9;border-radius:10px;padding:8px 10px;background:#fff}
.geek-tile b{display:block;font:800 24px var(--font-display);color:#0b0b0b;font-variant-numeric:tabular-nums}
.geek-tile span{font-size:12px;color:#52514e}
.geek-tile i{font-style:normal;font-size:12px;color:#6b6a65}.geek-tile i.up{color:#006300}.geek-tile i.dn{color:#b42323}
.geek-scroll{overflow-x:auto;max-width:100%}
.geek-tall{max-height:420px;overflow-y:auto}
.geek-svg text{font:11px var(--font-ui);fill:#52514e}
.geek-svg .grid{stroke:#e1e0d9;stroke-width:1}
.geek-svg .band{fill:#e1e0d9}
.geek-svg .lbl-over{fill:#b42323;font-weight:700}.geek-svg .lbl-under{fill:#8a5a00;font-weight:700}
.geek-legend{display:flex;gap:12px;font-size:12px;color:#52514e;margin-bottom:4px}
.geek-legend span::before{content:'';display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px;background:var(--k);vertical-align:-1px}
.geek-key{display:flex;align-items:center;gap:3px;font-size:11.5px;color:#6b6a65;margin-top:6px}
.geek-key i{display:inline-block;width:16px;height:12px;border-radius:2px}.geek-key span{margin:0 4px}
.geek-table{border-collapse:collapse;font-size:12px}
.geek-table th,.geek-table td{border:1px solid #e3e9e4;padding:3px 7px;white-space:nowrap;text-align:left}
.geek-table thead th{background:#f6f8f5;color:#3a463e}
.geek-table .num{text-align:center;font-variant-numeric:tabular-nums}
.geek-matrix td{text-align:center;min-width:52px;font-variant-numeric:tabular-nums}.geek-matrix td.nil{background:#f6f6f3}
.geek-matrix tbody th{background:#f6f8f5;font-weight:600}
.geek-h{margin:18px 0 8px;font-size:15px;padding-bottom:4px;border-bottom:1px solid var(--border)}
.geek-adv{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.geek-adv .geek-card{overflow-x:auto}
.geek-adv .g-full{grid-column:1/-1}
.geek-adv .geek-matrix + .geek-scroll,.geek-adv .geek-scroll + .geek-scroll{margin-top:12px}
@media (max-width:900px){.geeks .geek-grid{grid-template-columns:1fr}}
.geek-table{width:auto;min-width:0}
.geek-table td:last-child{white-space:normal}
.stats-kind-wrap{display:inline-flex;align-items:center;gap:6px}
.geek-card .geek-title{margin:0;gap:6px}
.geeks>.geek-h:first-child{margin-top:0}
/* Stats: the Doctor / Staff / For Nerds switch sits after the month stepper; centred on top of it, it covered This month. */
.wknav .stats-kind-wrap.wknav-view{position:static;transform:none;margin-left:8px}
.geek-h-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.geek-h-bar h3{margin:0;font-size:15px}.geek-period-note{margin:0 0 4px}
/* Day and week locks: one lock that pins every slot in that day or week */
.pin-btn.bulk-pin{width:22px;height:22px;margin-left:6px;vertical-align:middle;border-radius:7px}
.pin-btn.bulk-pin svg{width:12px;height:12px}
.pin-btn.bulk-pin:disabled{opacity:.4;cursor:default}
.staff-day-tabs .btn .pin-btn.bulk-pin{margin-left:0}
.staff-day-tabs .pin-btn.week-pin{width:auto;height:48px;padding:0 14px;display:inline-flex;align-items:center;gap:6px;margin-left:0;border-radius:12px}
.staff-day-tabs .pin-btn.week-pin svg{width:14px;height:14px}
.staff-day-tabs .pin-btn.week-pin::after{content:'Week';font-size:14px;font-weight:700}
/* Users page */
.users-invite-form{display:grid;grid-template-columns:minmax(200px,2fr) minmax(140px,1.4fr) minmax(130px,1fr) auto;gap:10px;align-items:end;margin-top:8px}
.users-invite-form .btn{min-height:38px;padding-top:7px;padding-bottom:7px}
.users-invite-form input,.users-invite-form select{min-height:38px;padding:7px 9px;border:1px solid var(--border);border-radius:8px;background:#fff;font:inherit}
.users-hint{margin:10px 0 0;font-size:13px}
.users-table .users-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.users-table{min-width:0}
.users-table select{min-width:120px}
.users-table td{vertical-align:middle}
.users-table .users-invited{color:#92400e}
.users-you{margin-left:4px;vertical-align:1px}
#usersNote.bad-text{color:#991b1b}
@media (max-width:760px){
  .users-invite-form{grid-template-columns:1fr}
  .users-table .users-actions{justify-content:flex-start}
  .users-table select{width:100%;min-width:0}
}
/* A required staff slot cancelled by hand for one day: grayed out but still listed. */
.staff-slot-row.staff-slot-cancelled{background:#f3f4f6;border-color:#e5e7eb;border-left-color:#cbd5e1;border-style:dashed;border-left-style:solid}
.staff-slot-cancelled .staff-slot-label{color:#6b7280}
.staff-slot-cancelled .cancelled-name{text-decoration:line-through}
.staff-slot-cancelled .staff-slot-label small{text-decoration:none;color:#6b7280}
.staff-slot-cancelled .cancelled-icon{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;color:#9ca3af;font-size:16px}
.staff-slot-cancelled .cancelled-main{justify-content:space-between}
.staff-slot-cancelled .cancelled-text{color:#6b7280;font-style:italic;font-size:13px}
.staff-slot-cancelled .staff-slot-note.cancelled-note{color:#6b7280}
.cancel-slot-btn{color:#6b7280;font-size:13px;font-weight:700}
.cancel-slot-btn:hover{color:#b91c1c;border-color:#fca5a5;background:#fef2f2}
/* Staff dropdown: name bold, the note after it (preferred location, rule) normal weight. The label sits over the
   select's own text with the select's background, so the native arrow and the open list stay as they are. */
.staff-pick{position:relative;display:flex;flex:1;min-width:0}
.staff-pick>select{flex:1;min-width:0}
.staff-pick-label{position:absolute;top:1px;bottom:1px;left:1px;right:28px;display:flex;align-items:center;padding-left:6px;border-radius:6px 0 0 6px;pointer-events:none;white-space:nowrap;overflow:hidden;font-size:13px;font-weight:400;color:#0f172a;background:#fff}
.staff-pick-label b{font-weight:700;flex:none}
.staff-pick-label span{white-space:pre;overflow:hidden;text-overflow:ellipsis}
.staff-slot-row.has-pos-color .staff-pick-label{background:color-mix(in srgb, var(--pos-color) 6%, #fff)}
.staff-slot-row .staff-pick>select.invalid+.staff-pick-label{background:#fff8f8}
.staff-location-card.history-lock .staff-pick-label{background:#f3f4f6;color:#6b7280}
@media(max-width:680px){.staff-slot-list .staff-pick{flex:1 1 100%}.staff-slot-list .staff-pick>select{min-height:40px}}
/* Published vs unpublished marks (js/app/19-publish-markers.js) */
.pub-count{display:inline-block;margin-left:6px;padding:1px 7px;border:1px dashed #fb923c;border-radius:999px;background:#fff7ed;color:#c2410c;font-size:10.5px;font-weight:800;line-height:1.5;letter-spacing:0;vertical-align:2px;white-space:nowrap}
/* Unpublished slots (rows, clinic cards, cells, month lines): orange diagonal stripes, everywhere in the app. */
:root{--pub-stripes:repeating-linear-gradient(135deg,rgba(251,146,60,.28) 0 6px,transparent 6px 12px)}
.pub-out-tag{display:inline-block;margin-left:6px;padding:0 5px;border:1px dashed #94a3b8;border-radius:6px;color:#64748b;font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;line-height:1.6;vertical-align:2px;white-space:nowrap}
/* A day or card nobody sees yet stays plain; its slots carry the stripes and the "Not published" tag says why. */
.pub-out .locbtn:not(.closed-day),.home-week-clinic.pub-out,.pub-out .mchip[class*="loc-"]:not(.closed-loc),.mchip.pub-changed,.staff-location-card.pub-unpublished-card .staff-slot-row{background-image:var(--pub-stripes)!important}
.home-week-clinic.pub-changed{position:relative;background-image:var(--pub-stripes)!important}
.home-week-line.pub-was{color:#c2410c;font-size:11.5px;font-weight:700}
.home-week-line.pub-was s{color:#9a3412;opacity:.75}
.locbtn.pub-changed{background-image:var(--pub-stripes)!important}
.pub-dim{opacity:.28;filter:saturate(.4)}
.pub-dim:hover,.pub-dim:focus-visible{opacity:1;filter:none}
.pub-changed-cell{background-image:var(--pub-stripes)!important}
#doctorWeekView .doc-assign.loc-slot.pub-changed-cell{border-radius:8px;padding:3px}
.pub-head-marks{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}
.pub-head-marks .pub-count,.pub-head-marks .pub-out-tag{margin-left:0}
.staff-slot-row.pub-changed-row{background-image:var(--pub-stripes)!important}
.pub-removed{margin-top:8px;padding:6px 10px;border:1px dashed #fb923c;border-radius:8px;background:#fff7ed;color:#9a3412;font-size:12px;font-weight:700}
@media print{.pub-count,.pub-out-tag,.pub-removed{display:none!important}.pub-dim{opacity:1;filter:none}}
/* Phone: title and your name on top, the buttons under them, then the status pill. */
@media(max-width:680px){.page-chrome .chrome-today{display:none}.page-chrome>div:first-child{order:1}.page-chrome>.account-bar{order:2;margin-left:auto}.page-chrome>.page-chrome-actions{order:3}.page-chrome>.publish-bar{order:4;flex:1 1 100%;margin:0}}
#editBanner:empty{display:none}
.staff-metrics[hidden]{display:none!important}
.publish-schedule-btn .publish-count{display:inline-block;min-width:20px;margin-left:8px;padding:0 6px;border-radius:999px;background:#fff;color:#c2410c;font-size:12px;font-weight:800;line-height:20px;text-align:center}
.publish-history-table{width:100%;border-collapse:collapse;font-size:12px}
.publish-history-table th,.publish-history-table td{padding:5px 8px 5px 0;border-bottom:1px solid var(--border)}
/* Shift notes on the Staff page: "+ Note" beside the hours, the note on its own line under the row. */
.shift-note-btn{flex:0 0 auto;font:inherit;font-size:13px;line-height:1;font-weight:700;color:var(--muted);background:#fff;border:1px dashed var(--border);border-radius:8px;width:28px;height:28px;padding:0;cursor:pointer}
.shift-note-btn:hover{color:#1b2430;border-style:solid}
.shift-note-btn.has-note{color:#8a5a00;border:1px solid #e6d3a3;background:#fff4df}
.staff-slot-note.shift-note-line{color:#5b4a1f;background:#fff4df;border-radius:6px;padding:2px 6px;cursor:pointer;overflow-wrap:anywhere}
.staff-slot-note.shift-note-line.editing{display:flex;gap:4px;align-items:center;flex-wrap:wrap;background:#fff8ea;cursor:default;padding:4px 6px}
.shift-note-line.editing input{flex:1 1 12rem;min-width:0;font:inherit;font-size:12px;padding:4px 6px;border:1px solid #e6d3a3;border-radius:6px}
.staff-location-card.history-lock .shift-note-line{cursor:default}
/* Staff day card: every slot row shares one column grid (lock/✕ · position · person · hours · ✎), so rows line up whether they are filled, empty or extra. */
@media(min-width:681px){
  .staff-slot-list{grid-template-columns:max-content minmax(6.75rem,max-content) minmax(0,1fr) max-content max-content;column-gap:6px}
  .staff-slot-list>.staff-slot-row{grid-column:1 / -1;grid-template-columns:subgrid;row-gap:3px;min-height:40px}
  .staff-slot-row>.slot-tools{grid-column:1}
  .staff-slot-row>.staff-slot-label{grid-column:2}
  .staff-slot-row>.staff-slot-main{grid-column:3 / -1;display:grid;grid-template-columns:subgrid;column-gap:6px}
  .staff-slot-row>.staff-slot-main>*{grid-column:1}
  .staff-slot-row>.staff-slot-main>.person-shift{grid-column:2}
  .staff-slot-row>.staff-slot-main>.shift-note-btn{grid-column:3}
  .staff-slot-row>.staff-slot-main.cancelled-main{display:flex}
  /* One note line on every row, so all rows are the same height; long notes cut off with … and show in full on hover. */
  .staff-slot-row>.staff-slot-notes{grid-column:2 / -1;display:flex;gap:6px 12px;align-items:center;min-width:0;height:22px;overflow:hidden}
  .staff-slot-notes>*{flex:0 1 auto;min-width:0;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .staff-slot-notes>.shift-note-line{flex:0 1 auto;padding:1px 6px}
  .staff-slot-row>.staff-slot-notes:has(.editing){height:auto;overflow:visible}
  .staff-slot-notes>.shift-note-line.editing{flex:1 1 100%;white-space:normal}
}
/* "— Unassigned —" stays regular weight now that empty rows share the .staff-slot-main wrapper. */
.staff-slot-main select:has(>option:checked[value=""]){font-weight:400}
/* A hand pick that breaks a rule: overridden on the spot, flagged amber on its own row only. */
.staff-slot-list .staff-slot-row select.overridden{border-color:#d97706}
.staff-slot-note.override-note{color:#92400e;font-weight:600}
.staff-location-card.history-lock .staff-slot-note.override-note{color:#6b7280}
@media(max-width:680px){.staff-slot-notes:empty{display:none}.staff-slot-notes{display:grid;gap:2px}}
/* Staff week "Show: Bars": each shift is a bar on the day's hour scale; click a bar to edit its start/end. */
.slot-tl{position:relative;height:20px;min-width:0;border-radius:5px;background:repeating-linear-gradient(90deg,transparent 0 calc(var(--tl-step) - 1px),#e2e8f0 calc(var(--tl-step) - 1px) var(--tl-step)),#f8fafc}
.slot-tl-clinic{position:absolute;top:-4px;bottom:-4px;border-left:2px solid #334155;border-right:2px solid #334155;pointer-events:none}
.slot-tl-bar{position:absolute;top:1px;bottom:1px;box-sizing:border-box;border:0;margin:0;padding:0 0 0 6px;border-radius:5px;background:var(--pos-color,#64748b);color:#fff;font-family:inherit;font-size:11px;font-weight:600;line-height:18px;text-align:left;white-space:nowrap;overflow:hidden;cursor:pointer}
span.slot-tl-bar{cursor:default}
.slot-tl-bar.empty{background:transparent;border:1.5px dashed var(--pos-color,#94a3b8);color:color-mix(in srgb, var(--pos-color,#475569) 75%, #0f172a);font-weight:500;line-height:15px}
.slot-tl-bar.custom{box-shadow:0 0 0 2px #fff,0 0 0 3.5px #b45309}
.slot-tl-bar.odd{box-shadow:0 0 0 2px #fff,0 0 0 3.5px #dc2626}
.staff-location-card.history-lock .slot-tl-bar:not(.empty){background:#cbd5e1;color:#334155}
.slot-tl-ticks{position:relative;height:14px;font-size:10px;color:#64748b}
.slot-tl-ticks span{position:absolute;transform:translateX(-50%);white-space:nowrap}
.show-bars .staff-slot-main>.person-shift{display:none}
.slot-tl-edit{display:flex;align-items:center;gap:4px;min-width:0;flex-wrap:wrap}
.slot-tl-edit input[type=time]{width:96px;min-width:0;padding:2px 4px;font-size:12px;border:1px solid var(--border);border-radius:8px;background:#fff}
@media(min-width:681px){
  .staff-slot-list.show-bars{grid-template-columns:max-content minmax(6.75rem,max-content) minmax(10rem,15rem) minmax(0,1fr) max-content}
  .staff-slot-list>.staff-slot-axis{grid-column:1 / -1;display:grid;grid-template-columns:subgrid;margin-bottom:-2px}
  .staff-slot-axis>.slot-tl-ticks{grid-column:4}
  .staff-slot-row>.staff-slot-main>.slot-tl,.staff-slot-row>.staff-slot-main>.slot-tl-edit{grid-column:2}
}
@media(max-width:680px){.staff-slot-axis{display:none}.staff-slot-list .slot-tl{flex:1 1 0}.staff-slot-list .slot-tl-edit{flex:1 1 100%}}
.slot-tl-bar.short{overflow:visible;padding:0}
.slot-tl-label{position:absolute;top:0;white-space:nowrap;color:#0f172a;font-weight:600;pointer-events:none}
.slot-tl-bar.label-right .slot-tl-label{left:calc(100% + 5px)}
.slot-tl-bar.label-left .slot-tl-label{right:calc(100% + 5px)}
.staff-location-card.history-lock .slot-tl-label{color:#475569}
/* The bold-name overlay is what shows; hide the select's own text so it cannot peek out beside the arrow. */
.staff-pick>select{color:transparent!important;-webkit-text-fill-color:transparent!important}
.staff-pick>select option,.staff-pick>select optgroup{color:#0f172a!important;-webkit-text-fill-color:#0f172a!important}
/* Staff pickers draw their own arrow, so it stays visible when the select's text is hidden behind the name overlay. */
.staff-slot-row select{-webkit-appearance:none;appearance:none;padding-right:26px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='14' viewBox='0 0 10 14'%3E%3Cpath d='M1.5 5 5 1.5 8.5 5M1.5 9 5 12.5 8.5 9' fill='none' stroke='%23334155' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;background-size:10px 14px}
/* Links and Time off settings: group headings, and settings that do nothing while the switch above them is off. */
#employeeapp .links-opt-group{font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted,#5c6b66);margin:14px 0 8px}
#employeeapp .links-opt-group:first-of-type{margin-top:4px}
#employeeapp .is-off{opacity:.45}
#empSet-timeoff .to-requests-row{margin:4px 0 12px}
#empSet-timeoff .to-limit-groups{margin:0 0 6px}
/* Time off settings fit one screen on a computer: the sections sit in two columns
   (Notice | Daily limit, Blackout dates | Types, emails | expiry). */
#timeOffRulesGroup.is-off>*{opacity:.45}
@media(min-width:900px){
  #empSet-timeoff .to-settings-cols{display:grid;grid-template-columns:1fr 1fr;column-gap:28px;align-items:start;
    grid-template-areas:"notice limit" "blackout types" "email expire"}
  #timeOffRulesGroup,#timeOffOtherGroup{display:contents}
  #timeOffNoticeBox{grid-area:notice}#timeOffLimitBox{grid-area:limit}#timeOffBlackoutBox{grid-area:blackout}
  #timeOffTypesBox{grid-area:types}#timeOffEmailBox{grid-area:email}#timeOffExpireBox{grid-area:expire}
  #empSet-timeoff .to-settings-cols>*>.to-notice{margin-top:10px;padding-top:10px;border-top:1px solid var(--border);display:grid;gap:6px}
  #empSet-timeoff .to-notice h3,#empSet-timeoff .to-notice .title-with-help{margin:0}
  #empSet-timeoff .to-blackout-add{grid-template-columns:1.3fr 1fr auto}
  #empSet-timeoff .to-blackout-reason{grid-column:auto}
  #empSet-timeoff .to-blackout-add input{padding-left:8px;padding-right:4px}
  #empSet-timeoff .to-requests-row{margin:0}
  #empSet-timeoff .to-limit-groups{margin:0}
  #empSet-timeoff .to-actions{margin-top:10px}
}

/* Home calendar: toolbar, Filters panel, summary line, week grid, month lines, phone day strip */
.home-filterbar .home-cal-nav{margin-left:0;order:0}
.home-filterbar .home-filters{margin-left:auto}
.home-filterbar .home-search{flex:0 1 260px;min-width:170px}
.home-search-toggle{display:none}
/* Week/Month sits in the middle of the bar, like the Doctors and Staff week bars, when there is room for it. */
@media(min-width:1320px){.home-filterbar{position:relative}.home-filterbar .home-cal-view{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1}}
.home-filter-btn{gap:8px;padding-right:12px;background-image:none}
.home-filter-ic{width:15px;height:15px;color:#6b756c;flex:0 0 auto}
.home-filter-badge{background:#e2e8f0;color:#334155;border-radius:999px;font-size:11px;font-weight:800;padding:1px 8px;line-height:1.5}
.home-filter-btn.is-filtered .home-filter-badge{background:var(--brand-green-deep);color:#fff}
.home-filter-btn.is-filtered .home-filter-ic{color:var(--brand-green-deep)}
.home-fpanel{left:auto;right:0;width:min(400px,calc(100vw - 24px));padding:12px 14px 14px}
.home-fpanel-head{display:flex;justify-content:space-between;align-items:center;font-size:15px}
.home-fgroup{margin-top:12px}
.home-fgroup-head{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.home-fchips{display:flex;flex-wrap:wrap;gap:6px}
.home-fchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:999px;background:#fff;padding:5px 11px;font:inherit;font-size:13px;font-weight:650;color:#475569;cursor:pointer}
.home-fchip:hover{border-color:var(--brand-green)}
.home-fchip.on{background:var(--accent-soft);border-color:var(--brand-green);color:#2f5a22}
.home-fchip:not(.on) .home-filter-dot{opacity:.3}
.home-flink{border:0;background:none;padding:2px 4px;color:var(--brand-green-deep);font:inherit;font-size:13px;font-weight:750;letter-spacing:0;text-transform:none;cursor:pointer}
.home-flink:disabled{color:#b6c0b7;cursor:default}
.home-fpanel-done{display:none}
.home-fpanel-backdrop{display:none}
.home-needs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0 0;padding:10px 12px;border-radius:12px;background:#fff7ed;border:1px solid #fdba74}
.home-needs[hidden]{display:none!important}
.home-needs-label{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#9a3412;margin-right:2px}
.home-need{border:1px solid #f0c38a;border-radius:999px;background:#fff;padding:5px 12px;font:inherit;font-size:13px;font-weight:700;color:#7c2d12;cursor:pointer}
.home-need:hover{border-color:#ea580c;background:#ffedd5}
.home-need-swaps,.home-need-pending{border-color:#f59e0b}
.home-need-clock{border-color:#34d399;color:#065f46}
.home-need-unpub{border-color:#fdba74}
#timeOffSwapsJump .to-pill{margin-left:6px;vertical-align:middle}
.links-pane{min-width:0}
.home-summary{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 10px}
.home-summary-label{font-size:13px;font-weight:750;color:var(--muted);margin-right:2px}
.home-sum{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:999px;background:#fff;padding:4px 11px;font:inherit;font-size:13px;font-weight:700;color:#334155;line-height:1.4}
button.home-sum{cursor:pointer}
button.home-sum:hover{border-color:var(--brand-green)}
.home-sum.on{background:var(--accent-soft);border-color:var(--brand-green);color:#2f5a22}
.home-sum.ok{border-color:#bfe3b0;background:#f3faf0;color:#2f5a22}
.home-sum-clear{border-color:#c4b5fd;color:#5b21b6;background:#f5f3ff}
.home-sum-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.home-sum-dot.hard{background:#dc2626}.home-sum-dot.soft{background:#f59e0b}.home-sum-dot.away{background:#94a3b8}
.home-sum-dot.unpub{width:10px;height:10px;border:1px solid #fdba74;background:#fff;background-image:var(--pub-stripes)}
.home-legend{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;margin-top:10px;font-size:12px;color:var(--muted)}
.home-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}
.home-legend .lg-hard i{background:#dc2626}.home-legend .lg-soft i{background:#f59e0b}
.home-legend .lg-unpub i{width:16px;height:11px;border-radius:3px;border:1px solid #fdba74;background-image:var(--pub-stripes)!important}
.home-legend .lg-pa i{width:16px;height:11px;border-radius:3px;border:2px dotted #15803d}
.home-legend .lg-off i{width:14px;height:0;border-radius:0;border-top:2px solid #cbd5e1}
#monthCalendar.home-week-grid{grid-template-columns:104px repeat(var(--home-cols,5),minmax(0,1fr));gap:6px;align-items:stretch}
.home-wk-head{display:flex;flex-direction:column;gap:4px;min-width:0;padding:6px 8px;border-radius:10px}
.home-wk-head .cal-num,.home-phone-head .cal-num{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:13px;font-weight:700;color:var(--muted)}
.home-wk-head .cal-num b,.home-phone-head .cal-num b{font-size:16px;font-weight:800;color:#0f172a}
.home-wk-today{margin-left:auto;font-size:11px;font-weight:800;color:var(--brand-green-deep)}
.home-wk-head.today{background:#ecf6e7}
.home-wk-head.today .cal-num,.home-wk-head.today .cal-num b{color:var(--brand-green-deep)}
.home-wk-head.history .cal-num{opacity:.55}
.home-wk-head.pa-day,.home-phone-head.pa-day,.home-daystrip-day.pa-day{outline:2px dotted #15803d;outline-offset:-2px}
.home-wk-head .holiday-chip{align-self:flex-start;max-width:100%}
.home-wk-rowlab{display:flex;flex-direction:column;justify-content:center;gap:1px;min-width:0;padding:8px 10px;border-radius:10px;font-size:11.5px;font-weight:650;line-height:1.2}
.home-wk-rowlab b{font-size:15px;font-weight:800}
.home-wk-rowlab.loc-RH{background:var(--loc-rh-bg);color:var(--loc-rh-ink)}
.home-wk-rowlab.loc-ST{background:var(--loc-st-bg);color:var(--loc-st-ink)}
.home-wk-rowlab.loc-MA{background:var(--loc-ma-bg);color:var(--loc-ma-ink)}
.home-wk-rowlab.loc-HC{background:var(--loc-hc-bg);color:var(--loc-hc-ink)}
.home-wk-rowlab.away{background:#f1f5f9;color:#334155}
.home-wk-cell{display:flex;flex-direction:column;min-width:0;min-height:64px}
.home-wk-cell>.home-week-clinic{flex:1}
.home-wk-cell.history>*{opacity:.45}
.home-wk-cell.outside-horizon{opacity:.4}
.home-wk-cell.filtered{border:1px dashed #e2e8f0;border-radius:10px}
.home-wk-empty{flex:1;display:flex;align-items:center;justify-content:center;min-height:64px;border:1px dashed #d8dee4;border-radius:10px;color:#94a3b8;font-size:12px;font-weight:650;text-align:center;padding:6px}
.home-wk-wide{grid-column:1/-1}
.home-wk-cell.home-wk-away{min-height:0}
.home-wk-away .vac-chip.away-list{margin:0;width:100%;max-width:none}
.home-week-clinic-top .home-week-docs{min-width:0;font-size:13px}
.home-week-staff{color:inherit;opacity:.9}
.home-week-note .day-alert{width:7px;height:7px;border-radius:999px;flex:0 0 auto;margin-top:4px}
.home-week-note .day-alert.hard{background:#dc2626}.home-week-note .day-alert.soft{background:#f59e0b}
#monthCalendar.home-month-slim{grid-template-columns:repeat(5,minmax(0,1fr)) 44px}
.cal-wkend{display:flex;align-items:center;justify-content:center;border:1px dashed #d8dee4;border-radius:10px;writing-mode:vertical-rl;color:#94a3b8;font-size:11px;font-weight:650;letter-spacing:.04em}
#monthCalendar .cal-top{display:flex;align-items:center;justify-content:space-between;gap:4px;flex-wrap:wrap}
#monthCalendar .cal-counts{display:inline-flex;gap:8px;font-size:11px;font-weight:800}
#monthCalendar .cal-counts span{display:inline-flex;align-items:center;gap:3px}
#monthCalendar .cal-counts span::before{content:"";width:7px;height:7px;border-radius:50%}
#monthCalendar .cal-counts .c-hard{color:#b91c1c}#monthCalendar .cal-counts .c-hard::before{background:#dc2626}
#monthCalendar .cal-counts .c-soft{color:#b45309}#monthCalendar .cal-counts .c-soft::before{background:#f59e0b}
#monthCalendar .cal-lines{display:flex;flex-direction:column;flex-wrap:nowrap;gap:3px}
#monthCalendar .cal-line{display:grid;grid-template-columns:22px auto minmax(0,1fr) auto auto auto;align-items:center;gap:5px;width:100%;padding:2px 6px;border-radius:6px;font-size:11px;line-height:1.4;font-weight:650;text-align:left}
#monthCalendar .cal-line .day-alert{margin-top:0}
#monthCalendar .cl-code{font-weight:800}
#monthCalendar .cl-type{font-size:10px;font-weight:800;opacity:.7;white-space:nowrap}
#monthCalendar .cal-line.off{grid-template-columns:22px minmax(0,1fr)}
#monthCalendar .cl-doc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#monthCalendar .cl-staff{font-size:10px;font-weight:700;opacity:.75;white-space:nowrap}
#monthCalendar .cal-line.off{border:1px solid transparent;background:transparent;color:#cbd5e1;cursor:default}
#monthCalendar .cal-line.off.filtered{color:#e2e8f0}
.home-daystrip{display:grid;grid-template-columns:repeat(var(--home-cols,5),minmax(0,1fr));gap:4px}
.home-daystrip-day{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 0 5px;border:1px solid transparent;border-radius:12px;background:#fff;font:inherit;font-size:12px;font-weight:700;color:var(--muted);cursor:pointer}
.home-daystrip-day b{font-size:18px;color:#0f172a}
.home-daystrip-day.today b{color:var(--brand-green-deep)}
.home-daystrip-day.history{opacity:.6}
.home-daystrip-day[aria-pressed="true"]{background:var(--brand-green-deep);color:#fff;opacity:1}
.home-daystrip-day[aria-pressed="true"] b{color:#fff}
.home-daystrip .ds-dots{display:flex;gap:3px;height:7px}
.home-daystrip .ds-dots i{width:7px;height:7px;border-radius:50%}
.home-daystrip .ds-dots i.hard{background:#dc2626}.home-daystrip .ds-dots i.soft{background:#f59e0b}
.home-phone-day{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.home-phone-head{display:flex;flex-direction:column;gap:4px;padding:2px 2px 0;border-radius:8px}
.home-phone-head .cal-num b{font-size:17px}
.home-phone-clinic.open>.home-week-clinic{border-bottom-left-radius:0;border-bottom-right-radius:0}
.home-phone-detail{border:1px solid var(--border);border-top:0;border-radius:0 0 10px 10px;background:#fff;padding:8px 12px 12px;font-size:13px}
.home-phone-detail[hidden]{display:none}
.home-phone-detail ul{margin:0 0 4px;padding-left:18px}
.home-phone-detail li{margin:2px 0}
.home-phone-detail .btn{width:100%;margin-top:8px}
#monthCalendar.home-phone-week{display:block}
@media(max-width:680px){
  .home-filterbar{padding:10px;gap:8px}
  .home-filterbar .home-cal-nav{display:contents}
  .home-cal-step{flex:1 1 100%;order:0}
  .home-cal-step #monthLabel{flex:1 1 auto;min-width:0;text-align:center;font-size:15px}
  .home-cal-view{order:1}
  .home-filterbar .home-filters{order:2;margin-left:auto;flex:0 0 auto}
  .home-filter-btn{min-height:40px}
  .home-search-toggle{display:inline-flex;align-items:center;justify-content:center;order:3;min-height:40px;min-width:44px}
  .home-filterbar .home-search{display:none;order:4;flex:1 1 100%;max-width:none}
  .home-filterbar.search-open .home-search{display:block}
  .home-fpanel{position:fixed;top:auto;left:0;right:0;bottom:0;width:auto;max-height:82vh;overflow:auto;border-radius:20px 20px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));z-index:96}
  .home-fpanel-backdrop{display:block;position:fixed;inset:0;background:rgba(15,23,42,.38);z-index:95}
  .home-fpanel-backdrop[hidden]{display:none!important}
  .home-fpanel-done{display:block;width:100%;margin-top:16px}
  .home-fchip{padding:8px 13px;font-size:14px}
  #monthCalendar[data-home-view="month"]{grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
  #monthCalendar[data-home-view="month"].home-month-slim{grid-template-columns:repeat(5,minmax(0,1fr)) 20px}
  #monthCalendar[data-home-view="month"] .cal-head{display:block;padding:2px;font-size:10px}
  #monthCalendar[data-home-view="month"] .cal-cell{min-height:0;padding:4px 3px;gap:3px;border-radius:8px}
  #monthCalendar[data-home-view="month"] .cal-line{grid-template-columns:minmax(0,1fr) auto;padding:1px 3px;font-size:9.5px;gap:2px}
  #monthCalendar[data-home-view="month"] .cl-doc,#monthCalendar[data-home-view="month"] .cl-type,#monthCalendar[data-home-view="month"] .cl-staff,#monthCalendar[data-home-view="month"] .cal-line .day-alert.hard+.day-alert.soft{display:none}
  #monthCalendar[data-home-view="month"] .cal-line.off .cl-doc{display:none}
  #monthCalendar[data-home-view="month"] .cal-line .day-alert{width:6px;height:6px}
  #monthCalendar[data-home-view="month"] .cal-counts,#monthCalendar[data-home-view="month"] .vac-chip,#monthCalendar[data-home-view="month"] .pub-out-tag,#monthCalendar[data-home-view="month"] .pa-tag{display:none}
  #monthCalendar[data-home-view="month"] .holiday-chip{font-size:0;padding:1px 4px}
  #monthCalendar[data-home-view="month"] .holiday-chip::before{content:"Holiday";font-size:9px}
  .cal-wkend{font-size:9px}
}
/* Away / vacation pills sit at the bottom of every month day, so they line up across a week. */
#monthCalendar .cal-cell>.vac-chip{margin-top:auto}
.staff-location-head .staff-loc-alerts button.sc-badge,.staff-loc-alerts .staff-loc-fill{font-size:12px;font-weight:800;padding:3px 10px;line-height:1.3}
/* Time off › Totals tab */
.tot-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.tot-bar .toc-nav h2{min-width:56px;text-align:center}
.tot-bar input.tot-search{flex:0 1 240px;width:240px;min-height:36px;border-radius:10px}
.tot-table td:first-child{font-weight:650}
@media(max-width:560px){.tot-bar input.tot-search{flex:1 1 100%;width:100%}}
#monthCalendar.home-month-rolling .cal-cell.this-week:not(.today){background:#f6fbf2;border-color:#cfe6c2}
/* Stats: Positions worked / Day type stay at most two lines; the full text is on hover */
.stats-page-card .mstat-table td.mstat-parts{min-width:230px;max-width:300px}
.mstat-parts-txt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3}
.mstat-table td .mstat-chip{white-space:nowrap}
@media print{.mstat-parts-txt{display:inline;-webkit-line-clamp:unset}}
.mstat-table td.mstat-held{white-space:normal;min-width:170px;max-width:230px}

/* Settings → Employee app: one page for everything staff see and can do on their link. */
#employeeapp .emp-set-lead{margin:2px 0 12px;max-width:52rem}
#employeeapp .card{margin-bottom:13px;padding:18px;scroll-margin-top:72px}
#employeeapp .card>h2{margin:0 0 10px}
#employeeapp .emp-set-sub{font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted,#5c6b66);margin:16px 0 6px}
.emp-set-summary{display:flex;flex-wrap:wrap;gap:8px}
.emp-set-chip{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:13px;background:#f7f8f9;border:1px solid var(--border);border-radius:999px;padding:6px 12px;cursor:pointer;color:inherit}
.emp-set-chip strong{color:#6b7280}
.emp-set-chip.is-on{background:#eef7e9;border-color:#b7d9a6}
.emp-set-chip.is-on strong{color:#2f6f1e}
.emp-set-chip:hover{border-color:#9cc68e}
#employeeapp .card.flash{animation:empSetFlash 1.4s ease-out}
@keyframes empSetFlash{0%,40%{box-shadow:0 0 0 3px #6cb448}100%{box-shadow:0 0 0 0 transparent}}
@media(min-width:900px){#empSet-timeoff .to-settings-cols>*>.to-notice{margin-top:10px;padding-top:10px}}

/* Phone and print pass. Layout only: same colors, same type. Secondary actions fold up under 980px.
   Undo and Save stay in .page-chrome-actions and are never moved into this menu. */
.more-actions{display:none}
.more-actions>summary{list-style:none;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;gap:6px}
.more-actions>summary::-webkit-details-marker{display:none}
.more-actions>summary::after{content:"▾";font-size:11px;margin-left:2px}
.more-actions[open]>summary::after{content:"▴"}
.more-actions-pop{display:none}
@media(max-width:980px){
  .more-actions:not([hidden]){display:inline-block;position:relative}
  .more-actions[open] .more-actions-pop{display:flex;flex-direction:column;gap:6px;position:absolute;z-index:45;left:0;top:calc(100% + 6px);min-width:min(280px,calc(100vw - 28px));padding:8px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 32px rgba(20,40,20,.16)}
  .more-actions-pop>.btn{min-height:44px;width:100%;justify-content:flex-start;text-align:left}
  .page-chrome-actions .undo-edit-btn,.page-chrome-actions .save-status,.page-chrome-actions .publish-schedule-btn{min-height:44px}
  .wk-ic{width:44px;height:44px}
  .wk-today{min-height:44px;padding:8px 14px;font-size:14px}
  .wk-label{min-height:44px;min-width:0}
  .wknav-view{position:static;transform:none}
  .wknav>.wknav-view,.wknav>.doc-layout-wrap{flex:1 1 100%}
  .wknav>.view-toggle.wknav-view{display:flex;width:100%}
  .stats-kind-wrap{display:flex;align-items:center;gap:8px;width:100%}
  .stats-kind-wrap .view-toggle{display:flex;flex:1}
  .wknav>.view-toggle.wknav-view>.btn,.doc-layout-toggle .btn,.stats-kind-wrap .view-toggle .btn{flex:1;min-height:44px}
  .wkp-d{height:40px;font-size:14px}
  .wkp-head .wk-ic{width:44px;height:44px}
}
@media(max-width:680px){
  .wknav{gap:10px}
  .wknav-range{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:8px;width:100%;align-items:center}
  .wknav-range>.wk-label{min-width:0;width:100%;min-height:48px}
  .wknav-range>.wk-today,.wknav-range>.help-tip-wrap{grid-column:1 / -1;justify-self:start}
  .wk-sub{display:block}
  .wk-pop{left:0;width:min(320px,calc(100vw - 24px));max-height:min(70vh,440px);overflow:auto}
  .doc-layout-wrap{width:100%}
  .doc-layout-toggle{display:flex;flex:1}
  .home-cal-step .btn{min-width:44px;min-height:44px}
  .home-cal-step #prevMonth,.home-cal-step #nextMonth{flex:0 0 44px}
  .home-cal-view .btn{min-height:44px}
  .home-daystrip-day{min-height:56px;padding:8px 0}
  .home-week-type{white-space:normal;text-align:right}
  .home-week-clinic{min-height:44px}
  .home-phone-detail .btn{min-height:44px}
  #unsavedBar .btn{min-height:44px}
  .staff-day-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(64px,1fr));gap:6px}
  .staff-day-tabs .btn{white-space:normal;text-align:center;justify-content:center;padding:8px 4px;font-size:12px;line-height:1.2;min-height:52px}
  .staff-location-head.split{flex-direction:column}
  .staff-loc-alerts{flex-direction:row;flex-wrap:wrap;align-items:flex-start;max-width:100%}
  .staff-loc-alerts>*{white-space:normal}
  .staff-location-card .pin-btn,.staff-location-card .cancel-slot-btn,.staff-location-card .shift-note-btn{width:40px;height:40px}
  .staff-slot-list .slot-tl{flex:1 1 100%;width:100%;height:32px;margin-bottom:16px;overflow:visible}
  .staff-slot-list .slot-tl-edit{flex:1 1 100%;width:100%}
  .staff-slot-list .slot-tl-edit input[type=time]{min-height:44px;font-size:16px}
  .staff-slot-list .slot-tl-edit .btn{min-height:44px}
  .slot-tl-bar.short .slot-tl-label{top:calc(100% + 2px);left:0;right:auto;color:#1b2430}
  #employeeapp .card{padding:14px 12px}
  #employeeapp .emp-set-chip{min-height:44px;font-size:14px}
  #employeeapp .clock-pin{grid-template-columns:44px minmax(0,1fr)}
  #employeeapp .clock-pin .btn{grid-column:1 / -1;width:100%;min-height:44px}
  #employeeapp .clock-pin a,#employeeapp .clock-pin span:last-child{grid-column:1 / -1}
  #employeeapp .clock-pin input{min-height:44px;font-size:16px}
  #employeeapp .to-notice-row{flex-direction:column;align-items:stretch}
  #employeeapp .to-notice .to-notice-input input{height:44px;font-size:16px}
  #employeeapp .to-check{min-height:44px}
  #employeeapp .to-blackout-add{grid-template-columns:1fr}
  #employeeapp .to-blackout-add .btn{min-height:44px;width:100%}
  #employeeapp .links-opt-ahead select,#employeeapp #clockOptRadius,#employeeapp #timeOffExpireOn,#employeeapp #timeOffEmailTo{width:100%;max-width:none;min-height:44px}
}
.about-list{display:grid;gap:8px;margin:4px 0 0}
.about-list div{display:grid;grid-template-columns:minmax(6.5rem,8rem) minmax(0,1fr);gap:8px 14px;align-items:baseline}
.about-list dt{margin:0;font-size:13px;font-weight:700;color:var(--muted)}
.about-list dd{margin:0;font-size:15px;font-weight:650;overflow-wrap:anywhere}
.about-list a{color:var(--accent);font-weight:800}
#aboutLocal{margin:0 0 12px}
@media(max-width:680px){
  .about-list div{grid-template-columns:1fr;gap:2px}
}

/* Time off on the week: pending requests in a strip, a partial day as a chip, a full day as a solid bar.
   Slate, like the Away pills, so it never reads as the orange of unpublished changes. */
.week-touch{display:flex;flex-direction:column;gap:8px;margin:0 0 12px;padding:10px 12px;background:var(--panel,#fff);border:1px solid var(--border);border-radius:14px}
.week-touch[hidden]{display:none!important}
.week-touch-head{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#5c6b66}
.week-touch-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border:1px solid #cbd5e1;border-radius:12px;background:#f8fafc}
.week-touch-actions{display:inline-flex;gap:6px;margin-left:auto}
.week-touch-row .off-bar{display:inline-block;width:auto;margin:0;padding:3px 10px}
.off-chip{display:inline-flex;align-items:center;font-size:12px;font-weight:800;line-height:1.2;padding:2px 8px;border-radius:999px;border:1px solid #64748b;background:#fff;color:#334155}
.off-bar{display:block;background:#64748b;color:#fff;font-size:12px;font-weight:800;line-height:1.3;border-radius:8px;padding:4px 8px;margin:4px 0}
.home-week-clinic .off-bar{display:block;width:100%;box-sizing:border-box;margin:2px 0 0}
.home-week-clinic .off-chip{align-self:flex-start}
.vac-strip .off-bar{display:inline-block;width:auto;margin:0}
.staff-slot-notes:has(.off-chip){height:auto;overflow:visible}
.staff-slot-notes .off-chip{flex:0 0 auto;overflow:visible}
.slot-tl-bar.off-bar,.staff-location-card.history-lock .slot-tl-bar.off-bar{background:#64748b!important;color:#fff!important;background-image:none!important;box-shadow:none!important;border:0!important}

/* Notes under a staff slot: darker, a little bigger, on a soft white strip so card tints and unpublished stripes don't run behind the words. */
.staff-slot-row .staff-slot-note,.staff-slot-row .why-note{font-size:12.5px;line-height:1.35;font-weight:500;color:#1f2937;background:rgba(255,255,255,.9);border-radius:6px;padding:1px 7px;width:fit-content;max-width:100%;box-sizing:border-box}
.staff-slot-row .staff-slot-note.hard-note{color:#9b1c1c}
.staff-slot-row .staff-slot-note.override-note{color:#92400e}
.staff-slot-row .staff-slot-note.shift-note-line{color:#5b4a1f;background:#fff4df}
.staff-location-card.history-lock .staff-slot-row .staff-slot-note,.staff-location-card.history-lock .staff-slot-row .why-note{color:#4b5563}
/* Rules shortcuts: Doctors/Staff → their rules pages, and back */
.sched-secondary:has(> .rules-back-btn[hidden]:only-child){display:none}
.issue-actions .rule-link{margin-left:auto;background:transparent;border-color:transparent;color:#2f6b1f;font-weight:600}
.issue-actions .rule-link:hover{background:rgba(255,255,255,.7);border-color:var(--border)}
.rule-note-link{border:0;background:none;padding:0;font:inherit;font-weight:600;color:#2f6b1f;cursor:pointer;white-space:nowrap}
.rule-note-link:hover{text-decoration:underline}
.doc-days-strip .days-chip-name{border:0;background:none;padding:0;font:inherit;font-weight:700;color:inherit;cursor:pointer}
.doc-days-strip .days-chip-name:hover{color:#2f6b1f;text-decoration:underline}
.rule-flash{animation:empSetFlash 1.6s ease-out}

/* ---- Approvals: clearer cards (desktop and phone), phone "To approve" list, publish bar ---- */
.to-when{margin-top:6px;font-size:15px;font-weight:700;color:var(--text)}
.to-when-len{font-weight:500;color:var(--muted)}
.to-impact{margin-top:8px;background:#f5f8f4;border-radius:10px;padding:8px 10px;font-size:13px;line-height:1.45;color:#334155;display:grid;gap:3px}
.to-impact b{font-weight:700;color:var(--text)}
.to-more{position:relative;display:inline-block}
.to-more>summary{list-style:none;min-width:44px;text-align:center;font-weight:800}
.to-more>summary::-webkit-details-marker{display:none}
.to-more-pop{position:absolute;right:0;top:calc(100% + 4px);z-index:5;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 26px rgba(20,40,20,.14);padding:6px;display:grid;gap:4px;min-width:170px}
.to-more-pop .btn{text-align:left;width:100%}
.to-more[hidden]{display:none}
.swap-kind{background:#efe8f6;color:#5b21b6}
.swap-move{display:grid;grid-template-columns:auto 1fr;gap:0 10px;margin-top:6px;font-size:13.5px}
.swap-move-day{grid-row:span 2;white-space:nowrap}
.swap-move-what{color:#334155}
.swap-move-who{font-weight:700}
.swap-note{margin-top:6px;font-size:13px;font-style:italic;color:#334155}
.swap-actions{flex-wrap:wrap}
.review-flash{animation:reviewFlash 2.4s ease-out}
@keyframes reviewFlash{0%,40%{box-shadow:0 0 0 3px var(--brand-orange)}100%{box-shadow:0 0 0 0 transparent}}
.approve-inbox{display:none}
.approve-publish-bar{display:none}
@media(max-width:680px){
  .approve-inbox:not([hidden]){display:block;margin-bottom:14px}
  .approve-inbox-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:2px 0 4px}
  .approve-inbox-head h2{margin:0;display:flex;align-items:center;gap:8px}
  .approve-group{font:800 12px var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:12px 2px 6px}
  .approve-empty{background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px}
  #approveInboxList .to-card{box-shadow:var(--shadow)}
  #approveInboxList .to-card .to-pill.Pending{display:none}
  #approveInboxList .swap-item{border:1px solid var(--border);border-left:4px solid #7c3aed;border-radius:14px;background:#fff;padding:12px 13px;margin-bottom:10px;box-shadow:var(--shadow)}
  #approveInboxList .to-actions,#approveInboxList .swap-actions{display:grid;grid-template-columns:1fr 1fr auto;gap:8px}
  #approveInboxList .swap-actions{grid-template-columns:1fr 1fr}
  #approveInboxList .swap-actions .swap-approve-publish{grid-column:1 / -1;order:3}
  #approveInboxList .to-actions .btn,#approveInboxList .swap-actions .btn{padding:12px 10px;font-size:16px;font-weight:700}
  #approveInboxList .to-actions .to-fill{grid-column:1 / -1}
  #approveInboxList .to-note{grid-column:1 / -1}
  #timeOffRequestsPane.has-inbox #timeOffPendingSection{display:none}
  #timeOffRequestsPane.has-inbox:not(.cal-open) #timeOffCalendarCard{display:none}
  #timeOffRequestsPane.has-inbox #swapList .swap-item.is-actionable{display:none}
  #timeOffRequestsPane.has-inbox #swapCard:not(:has(.swap-missing,details.swap-more)){display:none}
  .approve-publish-bar:not([hidden]){display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;align-items:center;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fff7ed;border-top:1px solid #fdba74;box-shadow:0 -6px 18px rgba(0,0,0,.08)}
  .approve-publish-bar span{flex:1;font-size:14px;font-weight:700;color:#7c2d12}
  .approve-publish-bar .publish-now{background:#c2410c;border-color:#c2410c;color:#fff;font-weight:800;padding:11px 18px}
  #timeoff:has(.approve-publish-bar:not([hidden])){padding-bottom:72px}
}

/* Manager phone notifications: "Notify me" on the Time off page */
.mgr-push-btn::before{content:"";display:inline-block;width:14px;height:14px;margin-right:6px;vertical-align:-2px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 2a5 5 0 0 0-5 5v3.2L3.6 13a1 1 0 0 0 .9 1.5h11a1 1 0 0 0 .9-1.5L15 10.2V7a5 5 0 0 0-5-5zm-2 14a2 2 0 0 0 4 0z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 2a5 5 0 0 0-5 5v3.2L3.6 13a1 1 0 0 0 .9 1.5h11a1 1 0 0 0 .9-1.5L15 10.2V7a5 5 0 0 0-5-5zm-2 14a2 2 0 0 0 4 0z'/%3E%3C/svg%3E") center/contain no-repeat}
.mgr-push-btn[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--brand-green);color:var(--brand-green-deep);font-weight:700}
.approve-inbox-tools{display:flex;gap:6px}
@media(max-width:680px){.mgr-push-top{display:none!important}}
