:root {
  /* 人事結構分頁的行動版配置 */
  --personnel-breakpoint: 650px;
  --ink: #183d36;
  --ink-2: #285b4e;
  --paper: #f7f3ea;
  --paper-deep: #eee7d8;
  --line: #ddd6c8;
  --muted: #6f766d;
  --rose: #a85e5b;
  --rose-soft: #f6e5e0;
  --amber: #b57a27;
  --amber-soft: #f9edd8;
  --sage: #67856b;
  --white: #fffdf8;
  --shadow: 0 16px 40px rgba(45, 57, 42, .08);
}

.local-backup-panel { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 18px; }
.local-backup-panel h3 { margin: 2px 0 6px; }
.local-backup-panel p:not(.eyebrow) { margin: 0; color: var(--muted); font-size: .82rem; line-height: 1.55; }
.local-backup-panel button { flex: 0 0 auto; }
@media (max-width: 650px) { .local-backup-panel { flex-direction: column; align-items: stretch; }.local-backup-panel button { width: 100%; } }

body.cloud-mode .app-shell { display: none; }
.cloud-gate { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: var(--paper); }
.cloud-gate-card { width: min(100%, 460px); padding: 30px; border: 1px solid var(--line); border-radius: 18px; background: var(--white); box-shadow: var(--shadow); }
.cloud-gate-card h1 { margin: 0 0 12px; color: var(--ink); font-size: 1.5rem; }
.cloud-gate-card p { color: var(--muted); line-height: 1.6; }
.cloud-gate-card button { margin: 8px 8px 0 0; cursor: pointer; }
.cloud-gate-card button:disabled { opacity: .5; cursor: not-allowed; }
.cloud-backup-input { display: block; max-width: 100%; margin-top: 20px; }
.cloud-import-summary { min-height: 1.5em; }
.cloud-sync-status { position: fixed; z-index: 1000; right: 16px; bottom: 16px; display: flex; align-items: center; gap: 10px; max-width: min(92vw, 560px); padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--white); color: var(--ink); box-shadow: var(--shadow); font-size: .78rem; }
.cloud-sync-status.is-error { border-color: var(--rose); color: var(--rose); }
.cloud-sync-status button { border: 0; background: transparent; color: inherit; font: inherit; font-weight: 750; cursor: pointer; }

@media (max-width: 980px) { .primary-nav { grid-template-columns: repeat(5, 1fr) !important; } }
@media (max-width: 650px) { .primary-nav { grid-template-columns: repeat(5, minmax(84px, 1fr)) !important; }.personnel-list { grid-template-columns: 1fr !important; }.personnel-fields { grid-template-columns: 1fr !important; }.personnel-group-heading { align-items: flex-start; flex-direction: column; gap: 12px; }.personnel-group-heading .secondary-button { width: 100%; } }

* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; background: var(--paper); color: var(--ink); font-family: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Noto Sans TC", sans-serif; font-size: 16px; line-height: 1.5; }
.doctor-planner-layout { display: grid; grid-template-columns: minmax(270px, .66fr) minmax(0, 1.65fr); gap: 19px; align-items: start; }.doctor-planner-sidebar { display: grid; gap: 19px; position: sticky; top: 18px; }.doctor-planner-main { padding: 0; overflow: hidden; }.planner-month-nav { display: grid; grid-template-columns: 34px 1fr 34px; align-items: center; gap: 7px; text-align: center; }.planner-month-nav strong { font-size: 1.05rem; }.icon-button { display: grid; place-items: center; width: 34px; height: 34px; padding: 0; border: 1px solid var(--line); border-radius: 8px; background: var(--white); color: var(--ink); font-size: 1.3rem; line-height: 1; }.icon-button:hover { border-color: var(--ink-2); color: var(--ink-2); }.planner-section { border-top: 1px solid var(--line); padding-top: 17px; }.planner-section h4, .planner-calendar-heading h4, .planner-stats-heading h4 { margin: 2px 0 0; font-size: 1rem; }.planner-section > p:not(.eyebrow) { margin: 5px 0 12px; color: var(--muted); font-size: .74rem; line-height: 1.55; }.planner-doctor-list { display: grid; gap: 6px; margin: 12px 0; }.planner-doctor { display: flex; align-items: center; gap: 8px; padding: 6px 7px; border-radius: 8px; background: #f7f4ec; }.planner-doctor-dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; }.planner-doctor-name { flex: 1; font-size: .86rem; font-weight: 700; }.planner-doctor-delete { border: 0; border-radius: 5px; background: transparent; color: var(--muted); padding: 2px 5px; font-size: .8rem; }.planner-doctor-delete:hover { background: var(--rose-soft); color: var(--rose); }.planner-add-row { display: flex; gap: 7px; }.planner-add-row input { min-width: 0; flex: 1; border: 1px solid var(--line); border-radius: 8px; padding: 8px; color: var(--ink); }.planner-add-row input:focus { outline: 2px solid #cce0cf; border-color: var(--sage); }.planner-week-header, .planner-week-template { display: grid; grid-template-columns: 25px repeat(3, 1fr); gap: 4px; }.planner-week-header { margin: 11px 0 4px; color: var(--muted); font-size: .68rem; font-weight: 750; text-align: center; }.planner-weekday { display: grid; place-items: center; color: var(--muted); font-size: .73rem; font-weight: 750; }.planner-template-slot { min-height: 36px; border: 0; border-radius: 7px; padding: 3px; font-size: .75rem; font-weight: 750; color: var(--ink-2); background: #edf4eb; }.planner-template-slot[data-shift="afternoon"] { background: #eef3fa; color: #396385; }.planner-template-slot[data-shift="evening"] { background: var(--amber-soft); color: #8a5d1f; }.planner-template-slot.empty { color: #9da39b; background: #faf8f2; outline: 1px dashed var(--line); }.planner-actions { display: grid; gap: 8px; }.planner-actions button { width: 100%; }.planner-calendar-heading, .planner-stats-heading { display: flex; justify-content: space-between; gap: 12px; align-items: end; padding: 20px 22px 14px; }.planner-calendar-heading > span { color: var(--muted); font-size: .74rem; text-align: right; }.planner-weekdays, .planner-calendar { display: grid; grid-template-columns: repeat(7, minmax(105px, 1fr)); gap: 4px; min-width: 770px; }.planner-weekdays { padding: 0 20px 4px; color: var(--muted); font-size: .72rem; font-weight: 750; text-align: center; }.planner-weekdays .saturday { color: #4d729d; }.planner-weekdays .sunday { color: var(--rose); }.planner-calendar { padding: 0 20px 20px; overflow-x: auto; }.planner-calendar-wrap { overflow-x: auto; }.planner-day { min-height: 156px; display: grid; grid-template-rows: 22px repeat(3, minmax(0, 1fr)); gap: 3px; padding: 5px; border: 1px solid #ebe5d9; border-radius: 10px; background: var(--white); }.planner-day.weekend { background: #f6f8f5; }.planner-day.holiday { background: #fff6f2; border-color: #e9c9c2; }.planner-day.blank { min-height: 0; border-color: transparent; background: transparent; }.planner-day-top { display: flex; align-items: center; }.planner-day-number { border: 0; border-radius: 5px; padding: 2px 5px; background: transparent; color: var(--ink); font-size: .78rem; font-weight: 800; }.planner-day-number:hover { background: #ece7dc; }.planner-day.holiday .planner-day-number, .planner-day.weekend .planner-day-number { color: var(--rose); }.planner-shift { position: relative; min-height: 0; border: 0; border-radius: 6px; padding: 3px 22px 3px 5px; background: #edf4eb; color: var(--ink-2); text-align: left; }.planner-shift[data-shift="afternoon"] { background: #eef3fa; color: #396385; }.planner-shift[data-shift="evening"] { background: var(--amber-soft); color: #8a5d1f; }.planner-shift.empty { background: transparent; outline: 1px dashed #ded7ca; color: #abb0a8; }.planner-shift.swapped { outline: 2px solid #9277c5; }.planner-shift-label { display: block; font-size: .61rem; font-weight: 800; }.planner-shift-names { display: flex; flex-wrap: wrap; gap: 2px; margin-top: 1px; }.planner-doc-chip { display: inline-flex; align-items: center; border: 1px solid currentColor; border-radius: 8px; padding: 0 3px; font-size: .68rem; font-weight: 800; line-height: 1.35; }.planner-swap { position: absolute; top: 2px; right: 3px; border: 0; border-radius: 4px; padding: 1px 3px; background: transparent; color: #9a9c96; font-size: .6rem; font-weight: 800; }.planner-swap.on { color: #72549f; background: #eee9f8; }.planner-stats { border-top: 1px solid var(--line); }.planner-stats-heading { padding-bottom: 8px; }.planner-stat-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; padding: 0 22px 17px; }.planner-stat-card { padding: 11px; border: 1px solid var(--line); border-radius: 10px; background: #fbfaf5; }.planner-stat-card strong { display: flex; align-items: center; gap: 6px; font-size: .85rem; }.planner-stat-values { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; margin-top: 10px; }.planner-stat-values b { color: var(--ink); font-size: 1rem; }.planner-stat-table { width: calc(100% - 44px); margin: 0 22px 22px; }.planner-editor[hidden] { display: none; }.planner-editor { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 18px; background: rgba(21, 47, 42, .32); }.planner-editor-card { width: min(540px, 100%); max-height: 86vh; overflow: auto; border: 1px solid var(--line); border-radius: 16px; padding: 20px; background: var(--white); box-shadow: 0 20px 60px rgba(0,0,0,.22); }.planner-editor-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; }.planner-editor-heading h4 { margin: 0; font-size: 1.05rem; }.planner-editor-rooms { display: grid; gap: 13px; }.planner-editor-room { display: grid; grid-template-columns: 58px 1fr; gap: 9px; align-items: start; }.planner-editor-room > span { display: grid; place-items: center; min-height: 34px; border-radius: 8px; background: #f0ece2; color: var(--muted); font-size: .75rem; font-weight: 800; white-space: nowrap; }.planner-editor-options { display: flex; flex-wrap: wrap; gap: 6px; }.planner-editor-option { border: 1px solid var(--line); border-radius: 99px; padding: 6px 10px; background: #fbfaf5; color: var(--muted); font-size: .8rem; font-weight: 700; }.planner-editor-option.active { background: #edf4eb; color: var(--ink-2); border-color: var(--sage); }.planner-editor-empty { margin: 0; color: var(--muted); font-size: .84rem; }
button, select, input { font: inherit; }
.planner-editor-option { transition: background-color .15s ease, color .15s ease, box-shadow .15s ease; }
.planner-editor-option.active { background: #214a3f; border-color: #214a3f; color: #fff; box-shadow: 0 0 0 2px #fff, 0 0 0 4px #214a3f; }
.planner-editor-option.doctor { border-color: var(--doctor-color); color: var(--doctor-color); }
.planner-editor-option.doctor.active { background: color-mix(in srgb, var(--doctor-color) 72%, #17362f); border-color: color-mix(in srgb, var(--doctor-color) 72%, #17362f); color: #fff; box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--doctor-color); }
.planner-editor-option:focus-visible { outline: 2px solid var(--ink); outline-offset: 5px; }
button { cursor: pointer; }
.doctor-planner-main { overflow-x: auto; }
@media (max-width: 980px) { .doctor-planner-layout { grid-template-columns: 1fr; }.doctor-planner-sidebar { position: static; }.planner-section.planner-template { max-width: 620px; } }
@media (max-width: 650px) { .doctor-planner-layout { gap: 14px; }.doctor-planner-sidebar { padding: 17px; }.planner-calendar-heading, .planner-stats-heading { align-items: flex-start; flex-direction: column; padding-left: 16px; padding-right: 16px; }.planner-calendar-heading > span { text-align: left; }.planner-weekdays, .planner-calendar { padding-left: 16px; padding-right: 16px; }.planner-stat-cards { padding-left: 16px; padding-right: 16px; }.planner-stat-table { width: calc(100% - 32px); margin-left: 16px; margin-right: 16px; } }

.app-shell { min-height: 100vh; }
.sidebar { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: clamp(28px, 6vw, 88px); background: var(--ink); color: var(--paper); padding: 18px clamp(22px, 4vw, 58px); }
.brand { display: flex; gap: 11px; align-items: center; padding: 0; white-space: nowrap; }
.brand-mark { position: relative; display: block; flex: 0 0 51px; width: 51px; height: 34px; overflow: hidden; }
.brand-mark img { position: absolute; top: -18px; left: -8px; display: block; width: 66px; height: auto; max-width: none; }
.brand-kicker, .eyebrow { margin: 0; color: var(--muted); font-size: .73rem; font-weight: 700; letter-spacing: .12em; }
.brand-kicker { color: #c7d7c9; font-size: .59rem; }
.brand h1 { margin: 1px 0 0; font-size: 1.25rem; font-weight: 650; letter-spacing: .08em; }
.primary-nav { display: grid; grid-template-columns: repeat(5, minmax(90px, 1fr)); gap: 7px; align-self: stretch; }
.nav-item { border: 0; border-radius: 10px; background: transparent; color: #d9e5da; text-align: center; padding: 11px 9px; font-weight: 650; font-size: .82rem; transition: background .18s, color .18s; }
.nav-item:hover, .nav-item.active { background: rgba(247, 243, 234, .14); color: white; }
.nav-icon { display: block; width: auto; font-size: 1.04rem; text-align: center; margin: 0 0 3px; }
.sidebar-bottom { display: none; }
.privacy-note { display: flex; gap: 9px; align-items: flex-start; border-top: 1px solid rgba(255,255,255,.18); padding: 19px 8px 0; color: #c9d8cb; font-size: .75rem; line-height: 1.55; }
.privacy-note p { margin: 0; }

.main-content { padding: 28px clamp(22px, 4vw, 58px) 52px; max-width: 1540px; width: 100%; margin: 0 auto; }
.view-header, .panel-heading, .schedule-toolbar, .table-heading { display: flex; justify-content: space-between; gap: 22px; align-items: flex-start; }

.view { animation: appear .25s ease-out; }
.view[hidden] { display: none; }
@keyframes appear { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
.view-header h3 { margin: 0 0 5px; font-size: clamp(1.3rem, 2vw, 1.7rem); letter-spacing: -.02em; }
.view-header p, .schedule-toolbar p, .table-heading p { margin: 0; color: var(--muted); font-size: .92rem; }

.summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 27px; }
.summary-card, .panel { background: var(--white); border: 1px solid rgba(198, 187, 170, .65); box-shadow: var(--shadow); }
.summary-card { min-height: 189px; padding: 21px; border-radius: 16px; }
.summary-label { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: .83rem; font-weight: 700; }
.summary-icon { width: 24px; height: 24px; display: grid; place-items: center; background: #e5ede4; color: var(--ink-2); border-radius: 50%; }
.nurse-card .summary-icon { background: var(--rose-soft); color: var(--rose); }
.payroll-card .summary-icon { background: var(--amber-soft); color: var(--amber); }
.summary-card p { display: flex; align-items: baseline; gap: 7px; margin: 17px 0 11px; }
.summary-card strong { font: 700 2rem/1 Georgia, serif; color: var(--ink); }
.summary-card p span { color: var(--muted); font-size: .82rem; }
.summary-card .deadline-copy { display: block; margin: 23px 0 22px; color: var(--ink); font-size: 1.08rem; font-weight: 800; letter-spacing: .02em; }
.payroll-card .deadline-copy { margin-bottom: 14px; }
.phase-deadline { display: block; margin: 15px 0 7px; color: var(--ink); font-size: .96rem; font-weight: 800; letter-spacing: .02em; }
.workflow-checklist, .payroll-checklist { display: grid; gap: 8px; }
.workflow-checklist label, .payroll-checklist label { display: flex; align-items: center; gap: 9px; color: var(--ink); font-size: .9rem; cursor: pointer; }
.workflow-checklist input, .payroll-checklist input { width: 17px; height: 17px; margin: 0; accent-color: var(--ink-2); cursor: pointer; }
.workflow-checklist input:checked + span, .payroll-checklist input:checked + span { color: var(--muted); text-decoration: line-through; }
.payroll-checklist label:has(input:disabled) { color: #a4aaa1; cursor: not-allowed; }
.payroll-checklist input:disabled { accent-color: #a4aaa1; opacity: .55; cursor: not-allowed; }
.payroll-checklist input:disabled + span { color: #a4aaa1; }
.mini-progress { height: 4px; background: #deeadf; border-radius: 99px; overflow: hidden; margin-bottom: 12px; }
.mini-progress span { display: block; height: 100%; background: var(--sage); border-radius: inherit; transition: width .2s; }
.mini-progress.rose { background: var(--rose-soft); }.mini-progress.rose span { background: var(--rose); }.mini-progress.amber { background: var(--amber-soft); }.mini-progress.amber span { background: var(--amber); }
.text-button { appearance: none; border: 0; padding: 0; background: transparent; color: var(--ink-2); font-size: .83rem; font-weight: 750; }.text-button:hover { color: var(--rose); }.text-button span { margin-left: 2px; }

.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(300px, .86fr); gap: 19px; }
.weekly-panel { min-width: 0; }
.panel { border-radius: 16px; padding: 23px; }
.panel-heading { align-items: center; margin-bottom: 20px; }.panel-heading h3 { margin: 2px 0 0; font-size: 1.1rem; }.count-badge { display: grid; place-items: center; min-width: 25px; height: 25px; padding: 0 7px; border-radius: 50%; background: var(--rose-soft); color: var(--rose); font-size: .76rem; font-weight: 800; }
.week-schedule { display: grid; grid-template-columns: repeat(7, minmax(104px, 1fr)); overflow-x: auto; border-top: 1px solid var(--line); }
.week-day { min-height: 160px; padding: 13px 8px; border-right: 1px solid var(--line); }.week-day:last-child { border-right: 0; }.week-day.is-today { background: #f1f5eb; }.week-day .date { display: block; color: var(--muted); font-size: .71rem; }.week-day strong { display: block; margin: 2px 0 12px; font-size: .88rem; }.week-shift { display: flex; align-items: baseline; gap: 4px; margin: 5px 0; padding: 5px 4px; border-left: 3px solid var(--sage); background: #f5f8f1; color: var(--ink-2); font-size: .7rem; line-height: 1.3; }.week-shift.afternoon { border-color: #6a8eb5; background: #f1f5fa; }.week-shift.evening { border-color: var(--rose); background: #fcf4f0; }.week-shift-label { flex: none; font-weight: 750; }.week-shift-doctors { display: flex; flex-wrap: wrap; gap: 2px 4px; min-width: 0; }.week-shift-doctor { white-space: nowrap; font-weight: 800; }.week-empty { display: block; color: var(--muted); font-size: .72rem; }
.week-day { display: flex; flex-direction: column; min-height: 260px; }
.week-nurse-schedule { margin-top: auto; padding-top: 9px; border-top: 1px solid var(--line); }
.week-nurse-heading { display: block; margin-bottom: 5px; color: var(--muted); font-size: .68rem; font-weight: 800; }
.week-nurse-shift { display: flex; align-items: baseline; gap: 4px; margin: 4px 0; color: var(--ink-2); font-size: .69rem; line-height: 1.3; }
.week-nurse-shift-label { flex: none; font-weight: 800; }
.week-nurse-assignments { display: flex; flex-wrap: wrap; gap: 2px 4px; min-width: 0; }
.week-nurse-assignments span { white-space: nowrap; font-weight: 750; }
.action-list { list-style: none; margin: 0; padding: 0; }.action-list li { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 11px; padding: 13px 0; border-top: 1px solid var(--line); }.action-list li:first-child { border-top: 0; padding-top: 0; }.action-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--rose); }.action-dot.amber { background: var(--amber); }.action-list strong { display: block; font-size: .86rem; }.action-list small { color: var(--muted); font-size: .74rem; }.action-list button { border: 0; background: none; color: var(--ink-2); font-weight: 750; font-size: .76rem; }
.action-list li > div { min-width: 0; }.action-list small { display: block; overflow-wrap: anywhere; }
.action-list > li.action-group { display: block; }.action-group-heading { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 11px; }.action-group-heading h4 { margin: 0; color: var(--ink); font-size: .95rem; line-height: 1.4; }.action-sublist { margin: 10px 0 0 19px; padding-left: 15px; border-left: 1px solid var(--line); }.action-subitem { padding: 8px 0; }.action-subitem + .action-subitem { border-top: 1px solid var(--line); }.action-subitem h5 { margin: 0 0 3px; color: var(--ink); font-size: .8rem; line-height: 1.4; }.action-subitem small { line-height: 1.5; }

.view-header { align-items: end; margin-bottom: 23px; }.view-header h3 { margin-top: 2px; }.primary-button, .secondary-button { border-radius: 8px; padding: 10px 14px; font-size: .87rem; font-weight: 750; }.primary-button { border: 1px solid var(--ink); background: var(--ink); color: white; }.primary-button:hover { background: var(--ink-2); }.secondary-button { border: 1px solid var(--line); background: var(--white); color: var(--ink); }.secondary-button:hover { border-color: var(--ink-2); }
.personnel-header { align-items: flex-start; }.personnel-tabs { display: inline-flex; gap: 5px; margin: 4px 0 2px; padding: 5px; border: 1px solid var(--line); border-radius: 12px; background: #f1ede3; }.personnel-tab { min-width: 104px; border: 0; border-radius: 8px; padding: 9px 14px; background: transparent; color: var(--muted); font-weight: 750; font-size: .86rem; }.personnel-tab.active { background: var(--white); color: var(--ink); box-shadow: 0 2px 8px rgba(45, 57, 42, .08); }.personnel-group { margin-top: 25px; }.personnel-group:first-of-type { margin-top: 0; }.personnel-group-heading { display: flex; justify-content: space-between; align-items: end; gap: 16px; margin-bottom: 14px; }.personnel-group-heading h4 { margin: 2px 0 0; font-size: 1.08rem; }.personnel-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(390px, 1fr)); gap: 16px; }.personnel-card { padding: 20px; border: 1px solid rgba(198, 187, 170, .65); border-radius: 16px; background: var(--white); box-shadow: var(--shadow); }.personnel-card-heading { display: flex; align-items: center; gap: 8px; margin-bottom: 17px; }.personnel-role-icon { display: grid; place-items: center; width: 27px; height: 27px; border-radius: 50%; background: #e5ede4; color: var(--ink-2); }.personnel-card:nth-child(odd) .personnel-role-icon { background: var(--rose-soft); color: var(--rose); }.personnel-card h5 { margin: 0; font-size: 1rem; }.personnel-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 10px; }.personnel-field { display: grid; gap: 5px; color: #467b9f; font-size: .78rem; font-weight: 750; }.personnel-field span { display: flex; align-items: baseline; gap: 5px; }.personnel-field small { color: var(--muted); font-size: .68rem; font-weight: 600; }.personnel-field input { width: 100%; min-width: 0; border: 1px solid #acdffa; border-radius: 12px; background: #fbfdff; color: #1d3c59; padding: 9px 10px; font-size: .9rem; }.personnel-field input:focus { outline: 2px solid #ccecff; border-color: #5fb2dd; }.empty-personnel { margin: 0; padding: 19px; border: 1px dashed var(--line); border-radius: 12px; color: var(--muted); background: var(--white); }
.personnel-field .personnel-percent-input { display: block; position: relative; }.personnel-percent-input input { padding-right: 32px; appearance: textfield; }.personnel-percent-input input::-webkit-inner-spin-button, .personnel-percent-input input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }.personnel-percent-input .percent-symbol { position: absolute; right: 13px; top: 50%; transform: translateY(-50%); color: var(--muted); font-size: .9rem; font-weight: 700; pointer-events: none; }

.personnel-list { grid-template-columns: 1fr; }
.planner-stat-values span { display: grid; gap: 1px; color: var(--muted); font-size: .62rem; }
.planner-template-doctor { display: inline-block; }
.gpt-button { border: 1px solid #6d4bb1; border-radius: 8px; padding: 10px 14px; background: #7c5bb6; color: white; font-size: .87rem; font-weight: 750; }
.gpt-button:hover { background: #69499f; }
.gpt-prompt-card { width: min(680px, 100%); }
.gpt-prompt-hint { margin: 0; color: var(--muted); font-size: .8rem; }
.gpt-prompt-text { width: 100%; min-height: 360px; margin: 4px 0 0; resize: vertical; border: 1px solid var(--line); border-radius: 10px; padding: 12px; background: #faf9f5; color: #31413b; font: .76rem/1.65 ui-monospace, SFMono-Regular, Menlo, monospace; }
.gpt-prompt-text:focus { outline: 2px solid #d9cdf0; border-color: #9b82ca; }
.gpt-prompt-card .gpt-button { width: 100%; }
.gpt-logo-panel { display: grid; grid-template-columns: 88px minmax(0, 1fr) auto; align-items: center; gap: 12px; margin-top: 10px; padding: 10px; border: 1px solid var(--line); border-radius: 10px; background: #faf9f5; }
.gpt-logo-preview { display: block; width: 88px; height: 70px; object-fit: contain; }
.gpt-logo-panel strong { color: var(--ink); font-size: .85rem; }
.gpt-logo-panel p { margin: 3px 0 0; color: var(--muted); font-size: .74rem; line-height: 1.5; }
.gpt-logo-download { white-space: nowrap; text-align: center; text-decoration: none; }
.planner-shift-names { gap: 3px; }
.planner-doc-chip { padding: 0; border: 0; border-radius: 0; font-size: .73rem; }
.personnel-group-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.personnel-card-actions { display: flex; flex: 0 0 auto; gap: 6px; }
.personnel-card[draggable="true"] { cursor: grab; }
.personnel-card[draggable="true"]:active { cursor: grabbing; }
.personnel-card.is-dragging { opacity: .45; }
.personnel-card.is-drag-over { outline: 2px dashed var(--sage); outline-offset: 3px; }
.personnel-card input { cursor: text; }
.personnel-card-delete { display: grid; place-items: center; width: 30px; height: 30px; border: 1px solid #e8c7c1; border-radius: 8px; padding: 0; background: #fff7f4; color: var(--rose); font-size: 1.15rem; line-height: 1; }
.personnel-card-delete:hover { border-color: var(--rose); background: var(--rose-soft); }
.personnel-delete-card { width: min(430px, 100%); }
.personnel-delete-card .planner-editor-heading h4 { color: var(--rose); }
.personnel-delete-warning { margin: 0 0 18px; color: var(--ink); font-size: .9rem; line-height: 1.6; }
.personnel-delete-label { display: block; margin-bottom: 7px; color: var(--ink-2); font-size: .8rem; font-weight: 750; }
.personnel-delete-password { width: 100%; border: 1px solid var(--line); border-radius: 9px; padding: 10px 12px; background: #fff; color: var(--ink); font-size: 1rem; letter-spacing: .18em; }
.personnel-delete-password:focus { outline: 2px solid #f1d3d0; border-color: var(--rose); }
.personnel-delete-error { margin: 8px 0 0; color: var(--rose); font-size: .78rem; font-weight: 700; }
.personnel-delete-error[hidden] { display: none; }
.personnel-delete-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 20px; }
.personnel-delete-actions button { min-width: 98px; }
.personnel-delete-confirm { border: 1px solid var(--rose); border-radius: 8px; padding: 9px 13px; background: var(--rose); color: #fff; font-weight: 750; }
.personnel-delete-confirm:hover { filter: brightness(.92); }
.personnel-card.doctor-theme-01 .personnel-role-icon { background: #e5ede4; color: #67856b; }
.personnel-card.doctor-theme-01 h5 { color: #527154; }
.personnel-card.doctor-theme-05 .personnel-role-icon { background: #e5eef7; color: #5f7fa8; }
.personnel-card.doctor-theme-05 h5 { color: #466a96; }
.personnel-card.doctor-theme-06 .personnel-role-icon { background: var(--rose-soft); color: #a85e5b; }
.personnel-card.doctor-theme-06 h5 { color: #93504d; }
.compact-button, .personnel-card-toggle { border: 1px solid var(--line); border-radius: 8px; background: #f7f4ec; color: var(--ink-2); font-size: .78rem; font-weight: 750; }
.compact-button { padding: 8px 10px; }
.compact-button:hover, .personnel-card-toggle:hover { border-color: var(--sage); background: #edf4eb; }
.personnel-card-heading h5 { min-width: 0; flex: 1; }
.personnel-card-toggle { display: grid; place-items: center; flex: 0 0 auto; width: 30px; height: 30px; padding: 0; font-size: 1.15rem; line-height: 1; }
.personnel-card.is-collapsed { padding: 12px 14px; }
.personnel-card.is-collapsed .personnel-card-heading { margin-bottom: 0; }
.personnel-card.is-collapsed .personnel-fields { display: none; }
@media (max-width: 650px) { .personnel-group-actions { width: 100%; justify-content: stretch; }.personnel-group-actions button { flex: 1; }.personnel-group-actions .secondary-button { flex-basis: 100%; }.gpt-logo-panel { grid-template-columns: 70px minmax(0, 1fr); }.gpt-logo-preview { width: 70px; height: 60px; }.gpt-logo-download { grid-column: 1 / -1; } }
.schedule-workspace { padding: 0; overflow: hidden; }.schedule-toolbar { align-items: center; padding: 21px 23px; border-bottom: 1px solid var(--line); }.schedule-toolbar h4, .table-heading h4 { margin: 0 0 3px; font-size: 1.05rem; }.legend { color: var(--muted); font-size: .77rem; white-space: nowrap; }.legend-dot { display: inline-block; width: 8px; height: 8px; margin: 0 4px 0 11px; border-radius: 50%; }.legend-dot:first-child { margin-left: 0; }.confirmed { background: var(--sage); }.pending { background: var(--amber); }.shortage { background: var(--rose); }
.schedule-grid { display: grid; grid-template-columns: 102px repeat(5, minmax(122px, 1fr)); overflow-x: auto; }.schedule-grid > div { min-height: 90px; padding: 12px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }.schedule-grid > div:nth-last-child(-n + 6) { border-bottom: 0; }.grid-corner, .grid-day { min-height: 56px !important; background: #f5f1e9; }.grid-day { color: var(--ink); font-size: .83rem; font-weight: 800; }.grid-day small { display: block; color: var(--muted); font-size: .72rem; font-weight: 600; }.grid-label { display: flex; align-items: center; background: #fcfaf5; color: var(--muted); font-size: .78rem; font-weight: 750; }.shift-slot { border: 0; width: 100%; min-height: 62px; border-radius: 8px; padding: 8px; background: #f1f6ef; color: var(--ink-2); text-align: left; font-size: .78rem; font-weight: 750; }.shift-slot small { display: block; margin-top: 2px; color: #60776b; font-size: .68rem; font-weight: 600; }.shift-slot:hover { outline: 2px solid #b9ccb9; }.shift-slot.pending-slot { background: var(--amber-soft); color: #875719; }.shift-slot.pending-slot small { color: #96703a; }.shift-slot.shortage-slot { background: var(--rose-soft); color: #8c4845; }.shift-slot.shortage-slot small { color: #aa6864; }

.payroll-layout { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(245px, .75fr); gap: 19px; }.payroll-table-panel { padding: 0; overflow: hidden; }.table-heading { align-items: center; padding: 21px 23px; border-bottom: 1px solid var(--line); }.snapshot-state { border-radius: 99px; padding: 5px 9px; background: var(--amber-soft); color: #855b21; font-size: .72rem; font-weight: 750; white-space: nowrap; }.snapshot-state.locked { background: #e5ede4; color: var(--ink-2); }.table-wrap { overflow-x: auto; }table { width: 100%; border-collapse: collapse; }th, td { padding: 15px 18px; text-align: left; border-bottom: 1px solid var(--line); white-space: nowrap; }th { background: #faf7f0; color: var(--muted); font-size: .73rem; letter-spacing: .04em; }td { font-size: .85rem; }td strong { font-size: .9rem; }.ot-input { width: 70px; border: 1px solid var(--line); border-radius: 6px; padding: 6px 7px; color: var(--ink); text-align: right; }.ot-input:focus { outline: 2px solid #bdcfbd; border-color: var(--sage); }.total-panel { align-self: start; background: var(--ink); color: var(--paper); border: 0; }.total-panel .eyebrow { color: #bed0c0; }.total-panel h4 { margin: 9px 0 23px; color: white; font: 700 2rem/1 Georgia, serif; }.total-panel dl { margin: 0; }.total-panel dl div { display: flex; justify-content: space-between; gap: 10px; padding: 11px 0; border-top: 1px solid rgba(255,255,255,.18); font-size: .82rem; }.total-panel dt { color: #d2dfd2; }.total-panel dd { margin: 0; color: white; font-weight: 750; }.snapshot-hint { margin: 22px 0 0; color: #c8d8c9; font-size: .75rem; line-height: 1.6; }
.payroll-controls { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; padding: 14px 18px; }
.payroll-month-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.payroll-month-nav { width: 250px; max-width: 100%; }
.payroll-save-button, .payroll-export-button { white-space: nowrap; }
.payroll-save-button:disabled, .payroll-export-button:disabled { opacity: .45; cursor: not-allowed; }
.payroll-saved-details { margin: -7px 0 18px; padding: 12px 18px; }
.payroll-saved-details summary { color: var(--ink-2); cursor: pointer; font-size: .8rem; font-weight: 750; }
.payroll-saved-details p { margin: 9px 0 0; color: var(--muted); font-size: .76rem; line-height: 1.5; }
.payroll-saved-details ul { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 10px 0 0; padding: 0; list-style: none; }
.payroll-saved-details li { color: var(--ink); font-size: .77rem; }
.payroll-saved-details li.pending { color: var(--muted); }
.payroll-role-tabs { display: flex; gap: 6px; padding: 4px; border-radius: 10px; background: #eee9dd; }
.payroll-role-tabs button { border: 0; border-radius: 7px; padding: 8px 13px; background: transparent; color: var(--muted); font-size: .84rem; font-weight: 750; }
.payroll-role-tabs button.active { background: var(--white); color: var(--ink); box-shadow: 0 2px 7px rgba(30, 54, 43, .08); }
.payroll-person-button { border: 0; padding: 5px 0; background: transparent; color: var(--ink-2); font-weight: 800; text-align: left; }
.payroll-person-button:hover { text-decoration: underline; }
#payrollTable tr[data-payroll-person] { cursor: pointer; }
#payrollTable tr[data-payroll-person]:hover, #payrollTable tr[data-payroll-person]:focus-within { background: #eaf1e8; }
.payroll-selected { background: #f0f5ed; }
.payroll-missing { color: #9b4e48; font-size: .76rem; font-weight: 700; }
.payroll-editor { padding: 20px 23px 24px; }
.payroll-editor h5 { margin: 0 0 14px; font-size: 1rem; }
.payroll-input-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(165px, 1fr)); gap: 11px; }
.payroll-input-grid label { display: grid; gap: 5px; font-size: .79rem; font-weight: 700; }
.payroll-input-grid small { margin-left: 5px; color: var(--muted); font-size: .69rem; }
.payroll-input-grid input { width: 100%; min-width: 0; border: 1px solid var(--line); border-radius: 8px; padding: 9px 10px; background: var(--white); color: var(--ink); }
.payroll-input-grid input:focus { outline: 2px solid #cce0cf; border-color: var(--sage); }
.payroll-input-grid input:disabled { background: #f1f0e9; color: var(--muted); }
.timecard-open { margin: 0 0 15px; }
.timecard-saved-status { margin: 0 0 12px; color: var(--ink-2); font-size: .78rem; line-height: 1.55; }
.timecard-history { margin: 0 0 14px; font-size: .79rem; }
.timecard-history summary { cursor: pointer; font-weight: 750; }
.timecard-history ul { margin: 7px 0 0; padding-left: 20px; }
.timecard-card { width: min(860px, 100%); }
.timecard-notice, .timecard-coverage { color: var(--muted); font-size: .83rem; line-height: 1.6; }
.timecard-notice { margin: -3px 0 18px; }
.timecard-photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.timecard-photos label { display: grid; align-content: start; gap: 8px; padding: 12px; border: 1px solid var(--line); border-radius: 10px; font-size: .83rem; font-weight: 700; }
.timecard-photos input { max-width: 100%; font-size: .76rem; }
.timecard-photos img { display: block; width: 100%; max-height: 280px; object-fit: contain; border-radius: 7px; background: #f5f2eb; }
.timecard-photos img[hidden] { display: none; }
.timecard-table-wrap { max-height: 310px; overflow: auto; border: 1px solid var(--line); border-radius: 9px; }
.timecard-table { width: 100%; border-collapse: collapse; font-size: .81rem; }
.timecard-table th, .timecard-table td { padding: 7px 10px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.timecard-table thead { position: sticky; top: 0; background: #f6f3eb; }
.timecard-table input { width: 116px; padding: 5px; border: 1px solid var(--line); border-radius: 6px; }
.timecard-extra-section { margin-top: 16px; padding-top: 15px; border-top: 1px solid var(--line); }
.timecard-extra-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.timecard-extra-heading h5 { margin: 0; font-size: .95rem; }
.timecard-extra-section > p { margin: 7px 0 12px; color: var(--muted); font-size: .8rem; line-height: 1.55; }
.timecard-extras { display: grid; gap: 10px; margin-bottom: 10px; }
.timecard-extra-card { padding: 12px; border: 1px solid var(--line); border-radius: 9px; background: #fbfaf6; }
.timecard-extra-card header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 9px; font-size: .84rem; }
.timecard-extra-card header button { border: 0; background: transparent; color: var(--rose); font-size: .77rem; }
.timecard-extra-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; }
.timecard-extra-fields label { display: grid; gap: 4px; min-width: 0; font-size: .74rem; font-weight: 700; }
.timecard-extra-fields input, .timecard-extra-fields select { min-width: 0; width: 100%; padding: 7px; border: 1px solid var(--line); border-radius: 7px; background: var(--white); color: var(--ink); }
.timecard-extra-fields .timecard-extra-reason { grid-column: 1 / -1; }
.timecard-extra-empty { margin: 0; color: var(--muted); font-size: .8rem; }
.timecard-review { margin: 15px 0; padding: 12px; border-radius: 9px; background: #f4f6f0; font-size: .82rem; }
.timecard-review p { margin: 10px 0 4px; }
.timecard-review ul { margin: 0; padding-left: 20px; }
.timecard-error-title, .timecard-errors { color: #a33b3b; }
.timecard-warning-title { color: #9c651e; }
.timecard-ack { display: flex; align-items: start; gap: 8px; font-size: .84rem; line-height: 1.5; }
.timecard-ack input { margin-top: 4px; }
.timecard-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 15px; }
.timecard-actions button:disabled { opacity: .5; cursor: not-allowed; }
@media (max-width: 650px) { .timecard-photos { grid-template-columns: 1fr; } .timecard-extra-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); } .timecard-extra-heading { align-items: flex-start; flex-direction: column; } .timecard-actions { flex-wrap: wrap; } }
.payroll-not-applicable { display: flex; align-items: center; min-height: 38px; width: 100%; border: 1px solid var(--line); border-radius: 8px; padding: 9px 10px; background: #f1f0e9; color: var(--muted); font-weight: 500; }
.payroll-unscheduled { color: var(--muted); font-weight: 600; white-space: nowrap; }
.payroll-field-note, .payroll-warning, .payroll-empty { margin: 12px 0 0; color: var(--muted); font-size: .76rem; line-height: 1.55; }
.payroll-warning { color: #9b4e48; }
.payroll-rest-hint { margin: 12px 0 0; border-left: 3px solid var(--sage); padding: 8px 10px; background: #f0f5ed; color: var(--ink-2); font-size: .77rem; line-height: 1.55; }
.payroll-reset-rest { margin-left: 8px; border: 0; padding: 2px 0; background: transparent; color: var(--ink-2); font-size: inherit; font-weight: 800; text-decoration: underline; }
.payroll-breakdown { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; margin: 16px 0 0; border-top: 1px solid var(--line); }
.payroll-breakdown div { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid #eee9dd; font-size: .77rem; }
.payroll-breakdown dt { color: var(--muted); }.payroll-breakdown dd { margin: 0; font-weight: 750; }
.payroll-breakdown div:last-child { color: var(--ink); font-weight: 800; }
@media (max-width: 650px) { .payroll-controls { align-items: stretch; flex-direction: column; }.payroll-month-actions { align-items: stretch; }.payroll-month-nav { width: 100%; }.payroll-save-button, .payroll-export-button { flex: 1; }.payroll-role-tabs button { flex: 1; }.payroll-breakdown { grid-template-columns: 1fr; } }
.toast { position: fixed; left: 50%; bottom: 24px; z-index: 5; max-width: calc(100% - 32px); border-radius: 9px; background: var(--ink); color: white; padding: 11px 15px; box-shadow: 0 8px 24px rgba(0,0,0,.18); font-size: .86rem; font-weight: 650; opacity: 0; transform: translate(-50%, 16px); pointer-events: none; transition: .22s; }.toast.show { opacity: 1; transform: translate(-50%, 0); }

@media (max-width: 980px) { .app-shell { grid-template-columns: 1fr; }.sidebar { padding: 15px 18px; }.brand { padding: 0 5px 13px; }.primary-nav { grid-template-columns: repeat(4, 1fr); gap: 6px; }.nav-item { padding: 9px 7px; text-align: center; font-size: .73rem; }.nav-icon { display: block; width: auto; margin: 0 0 2px; }.sidebar-bottom { display: none; }.main-content { padding-top: 24px; }.summary-grid { grid-template-columns: repeat(3, 1fr); }.dashboard-grid, .payroll-layout { grid-template-columns: 1fr; }.total-panel { display: grid; grid-template-columns: 1fr 1fr; gap: 5px 20px; }.total-panel .eyebrow, .total-panel h4, .snapshot-hint { grid-column: 1 / -1; }.total-panel dl { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); }.total-panel dl div { display: block; border-top: 0; }.total-panel dd { margin-top: 3px; } }
@media (max-width: 650px) { .main-content { padding: 20px 15px 38px; }.view-header, .schedule-toolbar, .table-heading { align-items: flex-start; flex-direction: column; gap: 12px; }.summary-grid { grid-template-columns: 1fr; }.panel { padding: 17px; }.weekly-panel { padding: 17px 0; }.weekly-panel .panel-heading { padding: 0 17px; }.week-schedule { grid-template-columns: repeat(7, minmax(104px, 1fr)); }.week-day { min-height: 140px; }.schedule-toolbar { padding: 17px; }.schedule-grid { grid-template-columns: 79px repeat(5, minmax(112px, 1fr)); }.schedule-grid > div { padding: 8px; }.grid-label { font-size: .7rem; }.view-header { margin-bottom: 18px; }.total-panel { display: block; }.total-panel dl { display: block; }.total-panel dl div { display: flex; border-top: 1px solid rgba(255,255,255,.18); }.primary-nav { overflow-x: auto; grid-template-columns: repeat(4, minmax(84px, 1fr)); } }

/* Nurse-Schedule style monthly planner, kept local to this MVP. */
.nurse-planner-layout { display: grid; grid-template-columns: minmax(270px, .66fr) minmax(0, 1.65fr); gap: 19px; align-items: start; }
.nurse-planner-sidebar { display: grid; gap: 19px; position: sticky; top: 18px; }
.nurse-planner-main { padding: 0; overflow: hidden; }
.nurse-planner-roster { display: grid; gap: 6px; margin: 12px 0; }
.nurse-planner-roster-item { display: flex; align-items: center; gap: 8px; padding: 7px 8px; border-radius: 8px; background: #f7f4ec; }
.nurse-planner-roster-item i, .nurse-planner-stat-card i { display: inline-block; width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.nurse-planner-roster-item strong { min-width: 18px; color: var(--ink-2); font-size: .82rem; }
.nurse-planner-roster-item span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .84rem; font-weight: 700; }
.nurse-leave-people { display: flex; flex-wrap: wrap; gap: 5px; margin: 12px 0; }
.nurse-leave-person { min-width: 31px; min-height: 31px; border: 1px solid var(--line); border-radius: 8px; background: #f7f4ec; color: var(--ink-2); font-size: .77rem; font-weight: 800; cursor: pointer; }
.nurse-leave-person.active { border-color: var(--ink-2); background: var(--ink-2); color: #fff; }
.nurse-leave-date-controls { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .8fr); gap: 7px; margin-bottom: 10px; }
.nurse-leave-stepper { display: grid; gap: 3px; min-width: 0; color: var(--muted); font-size: .69rem; font-weight: 750; }
.nurse-leave-stepper-control { display: flex; align-items: stretch; min-width: 0; min-height: 35px; overflow: hidden; border: 1px solid var(--line); border-radius: 7px; background: var(--white); }
.nurse-leave-stepper-control output { display: flex; flex: 1; align-items: center; min-width: 0; padding: 0 7px; color: var(--ink); font-size: .79rem; font-weight: 750; }
.nurse-leave-stepper-buttons { display: grid; grid-template-rows: 1fr 1fr; width: 25px; flex: 0 0 25px; border-left: 1px solid var(--line); }
.nurse-leave-stepper-buttons button { display: grid; place-items: center; min-width: 0; padding: 0; border: 0; background: #f7f4ec; color: var(--ink-2); font-size: .58rem; line-height: 1; cursor: pointer; }
.nurse-leave-stepper-buttons button + button { border-top: 1px solid var(--line); }
.nurse-leave-stepper-buttons button:hover { background: #e7efe5; }
.nurse-leave-stepper-buttons button:focus-visible { outline: 2px solid var(--ink-2); outline-offset: -2px; }
.nurse-leave-weekdays, .nurse-leave-calendar { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; text-align: center; }
.nurse-leave-weekdays { margin-bottom: 4px; color: var(--muted); font-size: .67rem; font-weight: 750; }
.nurse-leave-day { display: grid; place-items: center; width: 100%; aspect-ratio: 1; min-height: 26px; border: 1px solid transparent; border-radius: 7px; background: #f7f4ec; color: var(--ink-2); font-size: .72rem; font-weight: 750; cursor: pointer; }
.nurse-leave-day:hover:not(:disabled) { border-color: var(--sage); background: #edf4eb; }
.nurse-leave-day.selected, .nurse-leave-day.selected:hover { border-color: #a2681d; background: #b57a27; color: #fff; }
.nurse-leave-day.selected.leave-half, .nurse-leave-day.selected.leave-half:hover { border-color: #287352; background: #287352; }
.nurse-leave-day.selected.leave-first-year, .nurse-leave-day.selected.leave-first-year:hover,
.nurse-leave-day.selected.leave-annual, .nurse-leave-day.selected.leave-annual:hover { border-color: #a4434f; background: #a4434f; }
.nurse-leave-day.selected.leave-gifted, .nurse-leave-day.selected.leave-gifted:hover { border-color: #3d6b87; background: #3d6b87; }
.nurse-leave-day:disabled { cursor: not-allowed; opacity: .6; }
.nurse-leave-empty { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: .76rem; text-align: left; }
.nurse-leave-history { display: grid; gap: 7px; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line); font-size: .75rem; }
.nurse-leave-history-row { display: flex; align-items: baseline; gap: 9px; line-height: 1.5; }
.nurse-leave-history-row strong { flex: 0 0 33px; color: var(--ink-2); }
.nurse-leave-history-dates { display: flex; flex-wrap: wrap; gap: 1px 8px; min-width: 0; color: var(--ink); }
.nurse-leave-history-dates.empty { color: var(--muted); }
.nurse-leave-history-dates .leave-half { color: #287352; font-weight: 800; }
.nurse-leave-history-dates .leave-first-year, .nurse-leave-history-dates .leave-annual { color: #a4434f; font-weight: 800; }
.nurse-leave-history-dates .leave-unallocated { color: #a2681d; font-weight: 800; }
.nurse-leave-history-dates .leave-gifted { color: #3d6b87; font-weight: 800; }
.nurse-leave-balance { margin: 3px 0 0; color: var(--ink-2); font-size: .72rem; line-height: 1.5; }
.nurse-leave-legend { display: flex; flex-wrap: wrap; gap: 3px 10px; margin: 0; font-size: .68rem; font-weight: 750; }
.nurse-leave-legend .leave-half { color: #287352; }
.nurse-leave-legend .leave-annual { color: #a4434f; }
.nurse-leave-archive-button { width: 100%; margin-top: 12px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 8px; background: var(--white); color: var(--ink-2); font: inherit; font-size: .76rem; font-weight: 750; text-align: left; cursor: pointer; }
.nurse-leave-archive-button:hover { background: #edf4eb; }
.nurse-leave-archive { display: grid; gap: 8px; margin-top: 8px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: #f7f4ec; font-size: .73rem; line-height: 1.5; }
.nurse-leave-archive[hidden] { display: none; }
.nurse-leave-archive-row { display: grid; gap: 2px; }
.nurse-leave-archive-row strong { color: var(--ink-2); }
.nurse-leave-archive-row small { color: var(--muted); }
.nurse-planner-calendar-wrap { overflow-x: auto; }
.nurse-planner-weekdays, .nurse-planner-calendar { min-width: 910px; }
.nurse-planner-calendar { display: grid; grid-template-columns: repeat(7, minmax(124px, 1fr)); gap: 5px; padding: 0 20px 20px; }
.nurse-planner-calendar-wrap.unconfirmed .nurse-planner-weekdays { display: none; }
.nurse-planner-calendar-wrap.unconfirmed .nurse-planner-calendar { display: flex; align-items: center; justify-content: center; min-width: 0; min-height: 320px; padding: 24px; }
.nurse-planner-unconfirmed { color: var(--muted); font-size: 1.15rem; font-weight: 750; letter-spacing: .08em; }
.nurse-boundary-panel button:disabled, .nurse-planner-sidebar button:disabled { opacity: .45; cursor: not-allowed; }
.nurse-planner-day { min-height: 224px; display: grid; grid-template-rows: 25px repeat(3, minmax(0, 1fr)); gap: 4px; padding: 6px; border: 1px solid #ebe5d9; border-radius: 10px; background: var(--white); }
.nurse-planner-day.weekend { background: #fff0f3; border-color: #e9c9d0; }.nurse-planner-day.blank { min-height: 0; border-color: transparent; background: transparent; }
.nurse-planner-day-top { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
.nurse-preoff { display: flex; align-items: center; gap: 2px; min-width: 0; }
.nurse-preoff span { display: inline-grid; place-items: center; width: 18px; height: 18px; border: 1px solid; border-radius: 50%; background: #fff8f6; font-size: .62rem; font-weight: 800; }
.nurse-preoff button { border: 1px dashed var(--line); border-radius: 99px; padding: 1px 5px; background: transparent; color: var(--muted); font-size: .62rem; font-weight: 750; }
.nurse-preoff button:hover { border-color: var(--rose); color: var(--rose); }
.nurse-calendar-shift { display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 3px; padding: 4px; border: 1px solid #cfe3cf; border-radius: 7px; background: #f0f8f0; }
.nurse-calendar-shift.afternoon { border-color: #c9d9ee; background: #f1f6fd; }.nurse-calendar-shift.evening { border-color: #eadbbd; background: #fff9ed; }
.nurse-calendar-shift-label { padding-top: 1px; color: #56765b; font-size: .64rem; font-weight: 800; }.nurse-calendar-shift.afternoon .nurse-calendar-shift-label { color: #53769d; }.nurse-calendar-shift.evening .nurse-calendar-shift-label { color: #9a742e; }
.nurse-shift-slots { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; }
.nurse-shift-slot { display: grid; grid-template-columns: 12px minmax(0, 1fr); align-items: center; gap: 1px; min-width: 0; border: 0; border-radius: 4px; padding: 1px 2px; background: rgba(255,255,255,.72); color: var(--muted); text-align: left; }
.nurse-shift-slot:hover { outline: 1px solid currentColor; }.nurse-shift-slot span { font-size: .57rem; font-weight: 700; }.nurse-shift-slot b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .7rem; }.nurse-shift-slot.empty b { color: #a4aaa1; }.nurse-shift-slot.conflict { background: #fff0eb; outline: 1px solid #d9917d; }
.nurse-planner-stats { border-top: 1px solid var(--line); }.nurse-planner-stat-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); gap: 10px; padding: 0 22px 20px; }
.nurse-planner-stat-card { padding: 11px; border: 1px solid var(--line); border-radius: 10px; background: #fbfaf5; }.nurse-planner-stat-card strong { display: flex; align-items: center; gap: 6px; font-size: .83rem; }.nurse-planner-stat-card > div { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; margin-top: 9px; }.nurse-planner-stat-card span { display: grid; gap: 1px; color: var(--muted); font-size: .62rem; }.nurse-planner-stat-card b { color: var(--ink); font-size: .95rem; }
.nurse-editor-card { width: min(500px, 100%); }.nurse-editor-hint { margin: 0 0 13px; color: var(--muted); font-size: .8rem; line-height: 1.6; }.nurse-editor-options { display: flex; flex-wrap: wrap; gap: 7px; }.nurse-editor-option { border: 1px solid var(--line); border-radius: 99px; padding: 7px 10px; background: #fbfaf5; color: var(--muted); font-size: .82rem; font-weight: 750; }.nurse-editor-option.active { background: #edf4eb; color: var(--ink-2); border-color: var(--sage); }.nurse-editor-option:disabled { opacity: .38; cursor: not-allowed; }
.nurse-off-options { display: grid; gap: 7px; }.nurse-off-options label { display: flex; align-items: center; gap: 9px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; font-size: .86rem; font-weight: 700; }.nurse-off-options input { width: 16px; height: 16px; margin: 0; accent-color: var(--nurse-color); }
.nurse-off-options label.annual-leave-locked { background: #f3f7f0; border-color: #cbd9c6; }
.nurse-off-options label.annual-leave-locked input:disabled { opacity: 1; }
.nurse-off-options .annual-leave-tag { color: var(--ink-2); font-size: .78rem; }
.nurse-editor-error { margin: 12px 0 0; color: var(--rose); font-size: .78rem; font-weight: 700; }
@media (max-width: 980px) { .nurse-planner-layout { grid-template-columns: 1fr; }.nurse-planner-sidebar { position: static; } }
@media (max-width: 650px) { .nurse-planner-layout { gap: 14px; }.nurse-planner-sidebar { padding: 17px; }.nurse-planner-calendar { padding-left: 16px; padding-right: 16px; }.nurse-planner-stat-cards { padding-left: 16px; padding-right: 16px; } }

.nurse-planner-toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 15px; }
.nurse-planner-status { color: var(--muted); font-size: .76rem; }
.nurse-planner-toolbar button:disabled { opacity: .45; cursor: not-allowed; }
.nurse-boundary-panel { margin-bottom: 18px; padding: 16px 20px; }
.nurse-boundary-heading { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
.nurse-boundary-heading h4 { margin: 0; font-size: .91rem; }
.nurse-prev-days { display: flex; flex-wrap: wrap; gap: 12px; }
.nurse-prev-day { display: grid; gap: 4px; min-width: 72px; }
.nurse-prev-day > span { color: var(--muted); font-size: .71rem; }
.nurse-prev-day > div { display: flex; align-items: center; gap: 3px; }
.nurse-prev-day b, .nurse-last-night-list span { display: inline-grid; place-items: center; min-width: 19px; height: 19px; border-radius: 50%; background: #f9e5e2; color: var(--rose); font-size: .66rem; }
.nurse-prev-add { border: 1px dashed var(--line); border-radius: 99px; padding: 1px 5px; background: transparent; color: var(--muted); font-size: .68rem; }
.nurse-last-night { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 13px; }
.nurse-last-night strong { color: var(--muted); font-size: .78rem; }
.nurse-last-night-list { display: flex; gap: 4px; }
.nurse-planner-layout { grid-template-columns: minmax(220px, .58fr) minmax(0, 1.9fr) minmax(190px, .43fr); gap: 15px; }
.nurse-planner-day { min-height: 246px; grid-template-rows: 25px repeat(3, minmax(0, 1fr)) auto; }
.nurse-day-number { display: inline-block; }
.nurse-day-number:hover { background: transparent; }
.nurse-calendar-shift { display: block; min-width: 0; }
.nurse-shift-head { display: flex; justify-content: space-between; align-items: center; gap: 2px; margin-bottom: 3px; }
.nurse-diag-toggles { display: flex; align-items: center; gap: 3px; }
.nurse-diag-toggle { display: inline-flex; align-items: center; gap: 1px; color: var(--muted); font-size: .58rem; cursor: pointer; }
.nurse-diag-toggle input { width: 11px; height: 11px; margin: 0; accent-color: var(--sage); cursor: pointer; }
.nurse-calendar-shift.doctor-linked .nurse-diag-toggle, .nurse-calendar-shift.doctor-linked .nurse-diag-toggle input { cursor: default; }
.nurse-calendar-shift.doctor-linked .nurse-diag-toggle input { opacity: .78; }
.nurse-calendar-shift.doctor-swapped { outline: 2px solid #9277c5; }
.nurse-swap-label { border-radius: 4px; padding: 0 2px; background: #eee9f8; color: #72549f; font-size: .58rem; font-weight: 800; }
.nurse-shift-closed { align-self: center; color: var(--muted); font-size: .66rem; font-weight: 700; }
.nurse-shift-slots { grid-template-columns: repeat(auto-fit, minmax(26px, 1fr)); }
.nurse-shift-slot { display: flex; justify-content: center; gap: 2px; padding: 2px; }
.nurse-shift-slot span, .nurse-shift-slot b { font-size: .67rem; }
.nurse-auto-off { min-height: 17px; display: flex; align-items: center; gap: 3px; flex-wrap: wrap; }
.nurse-auto-off button { border: 1px solid var(--line); border-radius: 99px; padding: 0 5px; background: #f7f4ec; color: var(--muted); font-size: .62rem; }
.nurse-shortage { border-radius: 99px; padding: 0 4px; background: var(--rose-soft); color: var(--rose); font-size: .62rem; font-weight: 750; }
.nurse-planner-stats { align-self: start; display: grid; gap: 10px; }
.nurse-planner-stats > h4 { margin: 0; font-size: .94rem; }
#nursePlannerStats { display: grid; gap: 9px; }
.nurse-stat-card { border: 1px solid rgba(198, 187, 170, .65); border-radius: 13px; padding: 11px; background: var(--white); box-shadow: var(--shadow); }
.nurse-stat-card h5 { margin: 0 0 7px; font-size: .74rem; }
.nurse-stat-card p { margin: 0 0 7px; color: var(--muted); font-size: .64rem; line-height: 1.4; }
.nurse-stat-row { margin: 5px 0; }
.nurse-stat-row > div { display: flex; justify-content: space-between; gap: 4px; align-items: baseline; font-size: .69rem; }
.nurse-stat-row strong { color: var(--ink-2); font-size: .7rem; white-space: nowrap; }
.nurse-stat-row > i { display: block; height: 4px; margin-top: 2px; overflow: hidden; border-radius: 99px; background: #eeeae1; }
.nurse-stat-row > i > b { display: block; height: 100%; border-radius: inherit; }
.nurse-stat-empty { margin: 0; color: var(--muted); font-size: .72rem; }
@media (max-width: 1200px) { .nurse-planner-layout { grid-template-columns: minmax(220px, .5fr) minmax(0, 1.5fr); }.nurse-planner-stats { grid-column: 1 / -1; }.nurse-planner-stats > #nursePlannerStats { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); } }
@media (max-width: 980px) { .nurse-planner-layout { grid-template-columns: 1fr; }.nurse-planner-stats { grid-column: auto; } }
@media (max-width: 650px) { .nurse-boundary-panel { padding: 15px; }.nurse-prev-days { gap: 9px; }.nurse-planner-toolbar button { flex: 1 1 125px; padding-left: 7px; padding-right: 7px; } }
@media (max-width: 650px) { .week-day { min-height: 240px; } }
.planner-day.weekend, .planner-day.official-holiday { background: #fff0f3; border-color: #e9c9d0; }
