:root{--bg: #eef4f7;--surface: #ffffff;--surface-strong: #e9f7fa;--ink: #17323c;--ink-strong: #10333f;--muted: #5e7681;--line: #d9e6ec;--primary: #1295ab;--primary-dark: #0c7183;--primary-bright: #2fb9ce;--brand-gradient: linear-gradient(168deg, #35c0d4 0%, #17a0b8 48%, #0e7f97 100%);--green: #1f9d68;--amber: #d98a1f;--red: #d64545;--blue: #38a3de;--violet: #6d7bf2;--orange: #f58a47;--shadow: 0 10px 30px rgba(18, 74, 90, .08);--radius: 14px;--radius-lg: 20px;color-scheme:light;font-family:Prompt,IBM Plex Sans Thai,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans Thai,Thonburi,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:linear-gradient(180deg,#e5f1f5 0%,var(--bg) 260px);color:var(--ink);font-size:16px;line-height:1.5}button,input,select,textarea{font:inherit}button,select,summary{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid rgba(23,160,184,.38);outline-offset:2px}.app-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100dvh}@media(min-width:1181px){.app-shell.sidebar-collapsed{grid-template-columns:60px minmax(0,1fr)}.app-shell.sidebar-collapsed .sidebar{padding:18px 12px;align-items:center}.app-shell.sidebar-collapsed .brand,.app-shell.sidebar-collapsed .nav-list{display:none}}.sidebar-toggle{align-self:flex-start;display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:11px;cursor:pointer;color:#f6feff;background:#ffffff29}.sidebar-toggle:hover{background:#ffffff47}.main-content,.main-content>*,.workspace-grid>*,.lower-grid>*,.status-strip>*{min-width:0}.sidebar{position:sticky;top:0;height:100dvh;padding:22px 18px;background:var(--brand-gradient);color:#f6feff;display:flex;flex-direction:column;gap:22px;border-radius:0 24px 24px 0;box-shadow:6px 0 26px #0e7f9729;overflow-y:auto}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;background:#fff;color:var(--primary-dark);font-weight:900;font-size:22px;box-shadow:0 0 0 3px #ffffff59,0 8px 18px #0a4a5840}.brand-sub{margin:2px 0 0;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#ffffffd1}.brand h1,.topbar h2,.section-header h3,.export-panel h3{margin:0;letter-spacing:0}.brand h1{font-size:21px;font-weight:800;letter-spacing:.12em;color:#fff}.eyebrow{margin:0 0 4px;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.sidebar .eyebrow{color:#fffc}.nav-list{display:grid;gap:6px}.nav-item{min-height:44px;padding:10px 16px;border-radius:999px;color:#ffffffe0;font-weight:700;font-size:14.5px;text-decoration:none;display:flex;align-items:center;transition:background .16s ease,color .16s ease,box-shadow .16s ease}.nav-item:hover{background:#ffffff29;color:#fff}.nav-item.active{background:#fff;color:var(--primary-dark);box-shadow:0 6px 16px #08404d38}.side-note{margin-top:auto;padding:15px 16px;border:1px solid rgba(255,255,255,.28);border-radius:18px;background:#ffffff24}.note-title{margin:0 0 8px;font-weight:800;color:#fff}.side-note p:last-child{margin:0;color:#ffffffe6;font-size:13.5px;line-height:1.55}.main-content{padding:28px;display:grid;gap:20px}.topbar,.section-header,.export-panel{display:flex;align-items:center;justify-content:space-between;gap:16px}.topbar h2{font-size:clamp(24px,3vw,34px)}.topbar-actions,.export-actions{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.field{display:grid;gap:6px}.field span{color:var(--muted);font-size:13px;font-weight:700}.field.compact{min-width:180px}input,select,textarea{width:100%;min-width:0;min-height:44px;border:1.5px solid var(--line);border-radius:var(--radius);background:#fbfdfe;color:var(--ink);padding:9px 13px;transition:border-color .14s ease}input:hover,select:hover,textarea:hover{border-color:#b3d3dd}textarea{resize:vertical}.primary-button,.secondary-button,.danger-button,.ghost-button{min-height:44px;border:0;border-radius:999px;padding:10px 18px;font-weight:800;transition:transform .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease}.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:8px}.icon-button svg{flex:0 0 auto}.primary-button{background:linear-gradient(135deg,var(--primary-bright) 0%,var(--primary) 60%,var(--primary-dark) 100%);color:#fff;box-shadow:0 8px 18px #128ca647}.primary-button:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:0 10px 22px #0c718352}.secondary-button{border:1.5px solid #c4dde5;background:#fff;color:var(--primary-dark)}.secondary-button:hover{border-color:var(--primary);background:#f2fbfc}.danger-button{border:1.5px solid #f3c2c2;background:#fff3f3;color:#b23030}.danger-button:hover{background:#ffe3e3}.ghost-button{border:1.5px dashed #8ecbd6;background:#ecf9fb;color:var(--primary-dark)}.status-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.status-strip.five{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.metric-panel,.calendar-panel,.rules-panel,.people-panel,.summary-panel,.export-panel,.access-panel{background:var(--surface);border:1px solid rgba(217,230,236,.6);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.metric-panel{--accent: var(--primary);--accent-soft: #d9f3f7;position:relative;padding:18px;display:grid;gap:8px;border-radius:var(--radius-lg);border-color:transparent;background:linear-gradient(180deg,var(--accent-soft) 0%,rgba(255,255,255,0) 62%),#fff;box-shadow:0 10px 24px #124a5a12;transition:transform .18s ease,box-shadow .18s ease}.metric-panel:hover{transform:translateY(-3px);box-shadow:0 18px 34px #124a5a21}.metric-panel.is-link{text-decoration:none;color:inherit;cursor:pointer}.metric-link{margin-top:2px;font-size:12px;font-weight:800;color:var(--accent)}.metric-head{display:flex;align-items:center;gap:10px}.metric-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:14px;background:var(--accent);color:#fff;flex:0 0 auto;box-shadow:0 6px 14px #124a5a2e}.metric-label{color:#46555f;font-size:13px;font-weight:800}.metric-panel small{color:var(--muted)}.metric-panel strong{font-size:30px;line-height:1.1;font-weight:800;color:var(--accent)}.metric-panel.accent-teal{--accent: #0fa3b8;--accent-soft: #d5f2f6}.metric-panel.accent-green{--accent: #22a06b;--accent-soft: #d9f4e6}.metric-panel.accent-blue{--accent: #6d7bf2;--accent-soft: #e6e9fd}.metric-panel.accent-amber{--accent: #f58a47;--accent-soft: #fdeadd}.workspace-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-items:start}@media(min-width:1181px){.workspace-grid{grid-template-columns:minmax(0,1fr) minmax(380px,440px)}}.calendar-panel,.rules-panel,.people-panel,.summary-panel,.export-panel,.access-panel{padding:20px}.section-header{margin-bottom:14px}.section-header.stacked{align-items:flex-start;flex-direction:column;gap:0}.legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:13px}.dot{width:10px;height:10px;display:inline-block;border-radius:999px;margin-right:5px}.dot.duty{background:var(--primary)}.dot.off{background:var(--blue)}.dot.risk{background:var(--amber)}.weekday-row,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-empty{margin:12px 0 0;text-align:center}.weekday-row{gap:8px;margin-bottom:8px;color:var(--muted);font-size:13px;font-weight:800}.weekday-row span{text-align:center}.calendar-grid{gap:8px}.day-cell{min-height:146px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:10px;display:grid;align-content:start;gap:7px;transition:box-shadow .16s ease}.day-cell:hover{box-shadow:0 8px 20px #124a5a14}.day-cell.muted{background:#f1f6f8;color:#93a5ae}.day-cell.weekend{border-color:#a5dde8;background:#edfafc}.day-cell.blocked{border-color:#f5cd8f;background:#fff9ee}.day-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.day-number{font-weight:800}.day-label{color:var(--muted);font-size:12px}.tag-stack{display:grid;gap:5px}.tag{width:fit-content;max-width:100%;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:750;white-space:normal;overflow-wrap:anywhere}.tag.mkt{background:#d8f3f7;color:#0a6c7d}.tag.photo{background:#e6e9fd;color:#4553c8}.tag.parttime{border:1px dashed currentColor;opacity:.95}.tag.prob{background:#fbe7ef;color:#a83a63}.tag.probc{background:#fdf0c8;color:#8a6a12}.rest-name{font-weight:700}.rest-name.mkt{color:#0a6c7d}.rest-name.photo{color:#4553c8}.rest-name.prob{color:#a83a63}.rest-name.probc{color:#a07c16}.tag.off{background:#e6f0ff;color:#174ea6}.tag.wfh{background:#f0e7ff;color:var(--violet)}.tag.star{background:#ffe4e4;color:#a11b1b}.tag.doctor{background:#fff1ce;color:#8a5a00}.tag.outing{background:#e8f7d9;color:#315f12}.tag.custom{background:#eef2f7;color:#43515d}.calendar-day-lists{margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe;display:grid;gap:6px;color:var(--muted);font-size:13px;line-height:1.45}.calendar-day-lists p{margin:0}.calendar-day-lists strong{color:var(--ink)}.calendar-employee-lists{margin-top:12px;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}.calendar-employee-lists h4{margin:0 0 10px;color:var(--ink);font-size:16px}.calendar-employee-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}.calendar-employee-row{display:grid;gap:6px;padding:12px;border:1px solid var(--line);border-radius:8px;background:#fbfdfe;font-size:13px;line-height:1.45}.calendar-employee-row div{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.calendar-employee-row strong{color:var(--ink);font-size:15px}.calendar-employee-row span,.calendar-employee-row p{color:var(--muted)}.calendar-employee-row p{margin:0}.condition-save{display:grid;gap:6px;margin-bottom:12px}.save-status{display:inline-flex;align-items:center;gap:4px;margin:0;font-size:13px;font-weight:700;color:#0d6e50}.save-status:before{content:"✓";font-weight:800}.save-status.err{color:#a05715}.save-status.err:before{content:"!"}.staffing-card{display:grid;gap:12px;border:1px solid var(--line);border-radius:16px;background:#f2fafb;padding:16px;margin-bottom:16px}.staffing-card .section-header,.staffing-card .condition-save{margin-bottom:0}.staffing-probation-groups{display:grid;gap:10px}.staffing-probation-group{display:grid;gap:6px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 12px}.staffing-feasibility{display:grid;gap:6px;border:1px dashed var(--line);border-radius:12px;background:#fff;padding:10px 12px}.feas-line{display:flex;align-items:center;gap:8px;margin:0;font-size:13px;flex-wrap:wrap}.rule-stack{display:grid;gap:10px}@media(min-width:1181px){.conditions-panel .rule-stack{display:block;column-count:2;column-gap:16px}.conditions-panel .rule-stack>.rule-block{break-inside:avoid;margin-bottom:10px}}.rule-block{border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden}.rule-block summary{min-height:44px;padding:12px 16px;font-weight:800;list-style-position:inside;transition:background .14s ease}.rule-block summary:hover{background:#f2fafb}.rule-block[open] summary{color:var(--primary-dark);background:#f2fafb}.rule-body{padding:12px 16px 16px;display:grid;gap:12px}.condition-list{display:grid;gap:12px}.condition-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:end;gap:10px;padding-bottom:12px;border-bottom:1px solid var(--line)}.condition-row:last-child{padding-bottom:0;border-bottom:0}.condition-row.stacked-row{grid-template-columns:1fr;align-items:stretch}.row-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.row-heading strong{font-size:15px}.multi-select{min-height:132px;padding:8px}.rule-hint{margin:0;font-size:12.5px;line-height:1.5;color:var(--muted)}.toggle-row{display:flex;align-items:flex-start;gap:10px;cursor:pointer}.toggle-row input[type=checkbox]{width:18px;height:18px;min-width:18px;min-height:18px;margin-top:2px;flex:none;accent-color:var(--primary);cursor:pointer}.toggle-text{display:grid;gap:3px}.toggle-text strong{font-size:14px}.field-label{color:var(--muted);font-size:13px;font-weight:700}.parttime-block{display:grid;gap:10px;margin-top:4px;padding-top:12px;border-top:1px dashed var(--line)}.solo-content-rule{padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe}.parttime-dates{display:grid;gap:8px}.parttime-date-row{display:flex;gap:8px;align-items:center}.parttime-date-row input{flex:1}.parttime-date-remove{flex:none;width:auto;padding:0 12px}.double-photo-note{display:grid;gap:2px;margin-top:14px;padding:12px 14px;border:1px solid #f0d9a8;border-left:4px solid var(--amber);border-radius:var(--radius);background:#fffaf0;color:#7a5810;font-size:13.5px}.double-photo-note small{color:var(--muted)}.multi-dd{position:relative}.multi-dd-toggle{width:100%;min-height:44px;display:flex;align-items:center;gap:8px;padding:9px 13px;border:1.5px solid var(--line);border-radius:var(--radius);background:#fbfdfe;color:var(--ink);text-align:left;cursor:pointer}.multi-dd.open .multi-dd-toggle{border-color:var(--primary);box-shadow:0 0 0 3px #17a0b82e}.multi-dd-summary{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.multi-dd-summary.is-empty{color:var(--muted);font-weight:600}.multi-dd-count{flex:none;min-width:22px;height:22px;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--primary);color:#fff;font-size:12px;font-weight:800}.multi-dd-caret{flex:none;color:var(--muted);transition:transform .16s ease}.multi-dd.open .multi-dd-caret{transform:rotate(180deg)}.multi-dd-panel{margin-top:6px;padding:8px;display:grid;gap:6px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 12px 32px #10202724}.multi-dd-tools{display:flex;gap:8px}.multi-dd-tools button{flex:1;width:auto;min-height:32px;padding:4px 8px;border:1px solid var(--line);border-radius:8px;background:#f6f8fa;color:var(--ink);font-size:12px;font-weight:800;cursor:pointer}.multi-dd-tools button:hover{border-color:var(--primary);color:var(--primary)}.multi-dd-list{display:grid;gap:4px;max-height:224px;overflow-y:auto}.multi-dd-option{width:100%;min-height:40px;display:flex;align-items:center;gap:9px;padding:6px 9px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--ink);text-align:left;cursor:pointer}.multi-dd-option:hover{background:#f6f8fa}.multi-dd-option.checked{background:var(--surface-strong);border-color:var(--primary)}.multi-dd-box{flex:none;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--line);border-radius:6px;background:#fff;color:#fff}.multi-dd-option.checked .multi-dd-box{background:var(--primary);border-color:var(--primary)}.multi-dd-name{flex:none;font-weight:700}.multi-dd-spec{margin-left:auto;padding-left:8px;font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.two-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.lower-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:20px;align-items:start}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:720px}table.memory-table{min-width:1120px}table.people-table{min-width:980px}.people-table th,.people-table td{padding:10px 8px}.people-hint{color:var(--muted);font-size:13px;font-weight:700;text-align:right;max-width:320px}.people-hint svg{vertical-align:-2px}.people-add-row{margin-bottom:12px;display:flex;justify-content:flex-end}.employee-add-form{margin-bottom:14px;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe;display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:12px}.employee-add-actions{display:flex;align-items:flex-end}.employee-add-actions .primary-button{width:100%}.people-table tr.row-editing{background:#f1faf7}.people-table .num-cell{text-align:center;white-space:nowrap}.cell-num{width:68px;min-height:36px;padding:5px 8px;text-align:center}.cell-text,.cell-select{width:100%;min-width:120px;min-height:36px;padding:5px 8px}.cell-stack{display:flex;flex-direction:column;align-items:flex-start;gap:5px}.cell-stack small{font-size:12px}.people-table .row-actions{display:flex;flex-wrap:wrap;gap:6px}.btn-sm{min-height:34px;padding:5px 11px;font-size:13px}th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}th{color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}tbody tr{transition:background .12s ease}tbody tr:hover{background:#f4fafb}.pill{display:inline-flex;min-height:28px;align-items:center;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:800}.pill.ok{background:#d8f3ea;color:#0d6e50}.pill.probation{background:#fdeadd;color:#a05715}.date-list{display:block;max-width:210px;color:#40515d;font-size:13px;line-height:1.45;overflow-wrap:anywhere}.muted-text{color:var(--muted)}.memory-editor{margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe;display:grid;gap:14px}.memory-editor h4{margin:0;font-size:18px}.memory-editor p:last-child{margin:4px 0 0;color:var(--muted)}.memory-form{display:grid;grid-template-columns:minmax(160px,1fr) repeat(2,minmax(130px,.7fr));gap:12px}.memory-form .wide{grid-column:span 3}.summary-list{display:grid;gap:10px}.summary-row{display:grid;gap:3px;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe}.summary-row span{color:var(--muted);font-weight:700}.summary-row strong{font-size:15px}.warning-box{margin-top:14px;padding:12px 14px;border-radius:var(--radius);background:#fff7e6;color:#7a5408;border:1px solid #f2d79b;border-left:5px solid #e9a23b;font-weight:700}.success-box{margin-top:14px;padding:12px 14px;border-radius:var(--radius);background:#eafaf1;color:#14663c;border:1px solid #a9e3c3;border-left:5px solid #2fa96b;font-weight:700}.success-box a{color:#0e7a44;text-decoration:underline}.override-flag{color:#c2410c;font-weight:800}.memory-edit-actions{white-space:nowrap}.memory-edit-actions .btn-sm{margin-right:6px}.export-panel{align-items:center}.export-panel p:last-child{margin:4px 0 0;color:var(--muted)}.access-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.access-card{min-height:154px;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe}.access-card h4{margin:10px 0 6px;font-size:17px}.access-card p{margin:0;color:var(--muted)}.step-number{width:34px;height:34px;display:grid;place-items:center;border-radius:999px;background:var(--brand-gradient);color:#fff;font-weight:900;box-shadow:0 5px 12px #128ca63d}@media(max-width:1180px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;padding:18px;border-radius:0 0 24px 24px;box-shadow:0 10px 26px #0e7f972e}.nav-list{display:flex;overflow-x:auto;gap:8px;padding-bottom:4px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.nav-list::-webkit-scrollbar{display:none}.nav-item{flex:0 0 auto;justify-content:center;white-space:nowrap;padding:9px 16px;font-size:14px;background:#ffffff24}.side-note{margin-top:0}.workspace-grid,.lower-grid,.access-grid{grid-template-columns:1fr}}@media(max-width:780px){.main-content{padding:16px}.topbar,.section-header,.export-panel{align-items:stretch;flex-direction:column}.topbar-actions,.export-actions{align-items:stretch}.topbar-actions>*,.export-actions>*{width:100%}.status-strip,.status-strip.five{grid-template-columns:repeat(2,minmax(0,1fr))}.memory-form{grid-template-columns:1fr}.memory-form .wide{grid-column:auto}.side-note{display:none}.calendar-grid,.weekday-row{grid-template-columns:1fr}.weekday-row{display:none}.day-cell{min-height:128px}}@media(max-width:520px){.status-strip,.status-strip.five,.two-cols,.condition-row{grid-template-columns:1fr}}.year-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.year-tab{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:8px 16px;border:1.5px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-weight:800;font-size:15px;transition:border-color .15s ease,background .15s ease,color .15s ease,box-shadow .15s ease}.year-tab:hover{border-color:var(--primary);color:var(--primary-dark)}.year-tab.active{border-color:transparent;background:var(--brand-gradient);color:#fff;box-shadow:0 8px 18px #128ca642}.year-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:var(--surface-strong);color:var(--primary-dark);font-size:12px;font-weight:800}.year-tab.active .year-tab-count{background:#ffffff47;color:#fff}.holiday-totals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:16px}.holiday-total-card{padding:16px 18px;border:1px solid #c9e8ee;border-left:5px solid var(--primary);border-radius:16px;background:#f0fafc;display:grid;gap:4px}.holiday-total-card.outing{background:#f4fcef;border-color:#cfe8b8;border-left-color:#6aa83e}.holiday-total-card.warn{background:#fff8ec;border-color:#f2d79b;border-left-color:#e9a23b}.holiday-total-card.warn strong{color:#a06a10}.holiday-total-card strong{font-size:28px;line-height:1.15;font-weight:800;color:var(--primary-dark)}.holiday-total-card.outing strong{color:#315f12}.holiday-total-card small{color:var(--muted)}.holiday-form{margin-bottom:16px;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe;display:grid;gap:14px}.holiday-form-grid{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(150px,.9fr) repeat(2,minmax(140px,.8fr));gap:12px}.holiday-form-note{grid-column:1 / -1}.holiday-form-actions{display:flex;gap:10px;flex-wrap:wrap}table.holiday-table{min-width:860px}.holiday-range{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.holiday-range svg{color:var(--muted);flex:0 0 auto}.holiday-row-actions{display:flex;gap:8px;justify-content:flex-end}.holiday-row-actions .icon-button{min-height:38px;padding:6px 12px}@media(max-width:780px){.holiday-totals,.holiday-form-grid{grid-template-columns:1fr}.holiday-row-actions{justify-content:flex-start}}.schedule-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.warning-box.error{background:#fdecec;color:#8a1c1c;border-color:#f1b0b0}.schedule-warnings{display:grid;gap:6px;margin-bottom:16px}.warning-line{display:flex;align-items:flex-start;gap:8px;padding:9px 12px;border-radius:var(--radius);font-size:14px;font-weight:600}.warning-line svg{flex:0 0 auto;margin-top:2px}.warning-line.warn{background:#fff8e8;color:#6f4d05;border:1px solid #f4d18c}.warning-line.error{background:#fdecec;color:#8a1c1c;border:1px solid #f1b0b0}.schedule-duty-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:18px}.duty-day-card{border:1px solid #c9e8ee;border-radius:16px;background:#f0fafc;padding:12px 14px;display:grid;gap:8px}.duty-day-card.gap{background:#fff9ee;border-color:#f5cd8f}.duty-day-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.duty-crew{display:flex;flex-wrap:wrap;gap:5px}.duty-gap-note{color:var(--red);font-weight:700}.tag.work{background:#eef2f7;color:#43515d}.tag.closed{background:#e9edf1;color:#6b7682}table.schedule-summary-table{min-width:560px}.eyebrow svg{vertical-align:-2px;margin-right:4px}.offweek-header{flex-wrap:wrap;gap:10px}.offweek-savebtn{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:9px 18px;border:0;border-radius:999px;font-size:14px;font-weight:800;background:linear-gradient(135deg,var(--primary-bright) 0%,var(--primary) 60%,var(--primary-dark) 100%);color:#fff;box-shadow:0 6px 14px #128ca647;transition:background .16s ease,transform .12s ease,box-shadow .16s ease}.offweek-savebtn:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px)}.offweek-savebtn:disabled{cursor:default}.offweek-savebtn.saving{background:#5d6b78;box-shadow:none}.offweek-savebtn.saved{background:var(--green);box-shadow:0 6px 14px #14805e40}.offweek-legend{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:16px;color:var(--muted);font-size:13.5px}.offweek-dot{width:4px;height:4px;border-radius:999px;background:#c2ccd3;margin:0 4px}.offweek-tag{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:800;font-style:normal}.offweek-tag.hard{background:#fde4e4;color:#b42318}.offweek-tag.soft{background:#fdeccf;color:#9a6400}.offweek-grid{display:grid;gap:9px}.offweek-row{display:grid;grid-template-columns:minmax(150px,1.1fr) minmax(0,1.5fr) minmax(0,1.5fr) minmax(112px,auto);align-items:center;gap:14px;padding:11px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;transition:border-color .16s ease,box-shadow .16s ease}.offweek-row:not(.offweek-rowhead):hover{border-color:#a9d8d1;box-shadow:0 8px 20px #1020270f}.offweek-row.has-request{background:linear-gradient(90deg,#effaf6,#fff 40%);border-color:#cdeae3}.offweek-rowhead{background:transparent;border:0;padding:2px 14px;color:var(--muted);font-size:12px;font-weight:800}.offweek-rowhead>span{display:flex;align-items:center;gap:7px}.offweek-status-head{justify-content:flex-end}.offweek-emp{display:flex;align-items:center;gap:11px;min-width:0}.emp-avatar{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;color:#fff;font-weight:800;font-size:15px;flex:0 0 auto}.offweek-emp strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.offweek-select{border-radius:10px}.offweek-select.primary{border-left:3px solid #f1a9a9}.offweek-select.secondary{border-left:3px solid #f3cd87}.offweek-status{display:flex;justify-content:flex-end}.offweek-state{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:800;white-space:nowrap}.offweek-state.saving{color:var(--muted)}.offweek-state.saved{color:var(--green)}.offweek-state.set{color:#0d9488}.offweek-state.none{color:#c2ccd3}.offweek-state .spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:860px){.offweek-row{grid-template-columns:1fr 1fr;gap:10px}.offweek-emp,.offweek-status{grid-column:1 / -1}.offweek-status{justify-content:flex-start}.offweek-rowhead{display:none}}.schedule-history{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}.history-title{margin:0;font-size:17px}.schedule-history .eyebrow svg{vertical-align:-2px;margin-right:4px}.history-list{display:grid;gap:10px;margin-top:12px}.history-item{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:13px 16px;border:1px solid var(--line);border-radius:16px;background:#fbfdfe;transition:border-color .16s ease,box-shadow .16s ease}.history-item:hover{border-color:#a5dde8;box-shadow:0 8px 20px #124a5a12}.history-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.history-meta strong{font-size:15px}.history-actions{display:flex;gap:8px}.history-actions .icon-button{min-height:38px;padding:6px 12px}.saved-version-groups{display:grid;gap:18px}.saved-version-month{display:grid;gap:4px}.saved-version-month h4{margin:0;font-size:17px}.history-item.primary-run{border-color:#52b9c9;background:#ecfafc;box-shadow:inset 4px 0 0 var(--primary)}.primary-version-control{min-height:38px;display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700;white-space:nowrap}.snapshot-chip-list{display:flex;flex-wrap:wrap;gap:6px}.history-value,.memory-dates{display:grid;gap:2px}.history-value small,.memory-dates{color:var(--muted);font-size:11px;font-weight:500}.history-edit-control{display:grid;justify-items:center;gap:5px}.history-edit-control .ghost-button{white-space:nowrap}.weekday-memory-table td{vertical-align:top}.inactive-memory-row{opacity:.65}.save-version-box{display:grid;gap:10px;margin:12px 0 4px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe}.save-version-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.save-version-box input{font-family:inherit}.save-version-actions{display:flex;gap:8px;flex-wrap:wrap}.run-snapshot{flex-basis:100%;display:grid;gap:10px;margin-top:4px;padding-top:12px;border-top:1px dashed var(--line)}.run-snapshot-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.run-snapshot-list{display:grid;gap:8px;margin:0}.run-snapshot-row{display:grid;grid-template-columns:180px 1fr;gap:12px;align-items:start}.run-snapshot-row dt{font-weight:600;font-size:13px;color:var(--muted)}.run-snapshot-row dd{margin:0;display:grid;gap:3px;font-size:13px}@media(max-width:780px){.schedule-stats{grid-template-columns:1fr}.run-snapshot-row{grid-template-columns:1fr;gap:2px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.memory-save-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}.cell-num.cell-dirty{border-color:#d98324;background:#fff8ef;box-shadow:0 0 0 3px #d9832424}.unsaved-flag{color:#b3660f;font-weight:700}.save-state{font-size:.86rem}.save-state.pending{color:#b3660f}.save-state.done{color:#0a7d4f}.save-state.failed{color:#b3261e}.duty-log-heading{margin:20px 0 10px;font-size:15px}.duty-log-list{display:flex;flex-direction:column;gap:8px}.duty-log-item{border:1px solid var(--line);border-radius:12px;overflow:hidden}.duty-log-head{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:11px 14px;border:0;background:transparent;text-align:left;cursor:pointer;font:inherit}.duty-log-head:hover{background:#128ca60f}.schedule-head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.manual-edit{margin:16px 0 18px;padding:16px;border:1.5px solid #b8dde5;border-radius:var(--radius-lg);background:#f7fdfe}.manual-edit-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.manual-edit-head h4{margin:2px 0 0;font-size:17px;color:var(--ink-strong)}.manual-edit h5{margin:0 0 8px;font-size:14px;color:var(--ink-strong)}.manual-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.manual-spacer{flex:1 1 auto}.manual-toggle{display:inline-flex;border:1.5px solid #c4dde5;border-radius:999px;background:#fff;overflow:hidden}.manual-tab{min-height:36px;padding:5px 14px;border:0;background:transparent;color:var(--primary-dark);font-size:13px;font-weight:800}.manual-tab.active{background:var(--primary);color:#fff}.manual-check,.manual-ack{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--ink)}.manual-ack{margin-top:10px;padding:9px 12px;border-radius:var(--radius);background:#fdecec;border:1px solid #f1b0b0;color:#8a1c1c}.manual-pending{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;padding:10px 13px;border-radius:var(--radius);background:#eaf7fa;border:1px solid #9fd3de;color:var(--primary-dark);font-weight:700;font-size:14px}.manual-grid-wrap{max-height:62vh;overflow:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff}table.manual-grid{min-width:max-content;border-collapse:separate;border-spacing:0}.manual-grid th,.manual-grid td{padding:4px 5px;border-bottom:1px solid var(--line);text-align:center;vertical-align:middle}.manual-grid thead th{position:sticky;top:0;z-index:2;background:#f3fbfc;text-transform:none;letter-spacing:0;font-size:12px;line-height:1.15;white-space:nowrap}.manual-grid thead th.is-duty-day{background:#e4f6f9}.manual-grid .manual-name-col{position:sticky;left:0;z-index:1;min-width:128px;background:#fff;text-align:left;white-space:nowrap;font-size:13px;text-transform:none;letter-spacing:0}.manual-grid thead .manual-name-col{z-index:3;background:#f3fbfc}.manual-daynum{display:block;font-size:14px;font-weight:800;color:var(--ink-strong)}.manual-dayname{display:block;font-weight:700;color:var(--muted)}.manual-daycount{display:block;font-size:11px;font-weight:700;color:#90a5ae}.manual-daycount.short{color:var(--red)}.manual-cell{padding:3px}.manual-select,.manual-pickbtn{width:100%;min-width:86px;min-height:32px;padding:3px 6px;font-size:12px;font-weight:700;border-radius:9px}.manual-pickbtn{border:1.5px dashed #8ecbd6;background:#f2fbfc;color:var(--primary-dark)}.manual-pickbtn:hover{background:#dff4f8}.manual-select[data-state=duty],.manual-pickbtn[data-state=duty]{background:#d9f2f7;color:#06596a}.manual-select[data-state=working],.manual-pickbtn[data-state=working]{background:#fff}.manual-select[data-state=day_off],.manual-pickbtn[data-state=day_off]{background:#e6f0ff;color:#174ea6}.manual-select[data-state=forced_day_off],.manual-pickbtn[data-state=forced_day_off]{background:#dbe6fb;color:#123b7d}.manual-select[data-state=wfh],.manual-pickbtn[data-state=wfh]{background:#f0e7ff;color:#4b45a8}.manual-select[data-state=leave],.manual-pickbtn[data-state=leave]{background:#fdeadd;color:#a05715}.manual-select[data-state=clinic_holiday],.manual-select[data-state=not_started],.manual-pickbtn[data-state=clinic_holiday],.manual-pickbtn[data-state=not_started]{background:#eef1f3;color:#6d818b}.manual-cell.cell-dirty .manual-select,.manual-cell.cell-dirty .manual-pickbtn{border:2px solid #d98324;box-shadow:0 0 0 3px #d9832424}.manual-cell.has-error .manual-select,.manual-cell.has-error .manual-pickbtn{outline:2px solid var(--red);outline-offset:-2px}.manual-cell.is-selected{background:#e4f6f9}.manual-selected{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;border-radius:var(--radius);background:#fff;border:1px solid var(--line)}.manual-selected-label{font-size:14px;font-weight:700;color:var(--ink)}.manual-candidates{margin-top:12px;padding:12px;border-radius:var(--radius);background:#fff;border:1px solid var(--line)}.manual-sub{margin:0 0 10px;font-size:13px;color:var(--muted);font-weight:700}.manual-candidate-list{list-style:none;margin:0;padding:0;display:grid;gap:8px;max-height:340px;overflow-y:auto}.manual-candidate{display:block;width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe;text-align:left;font:inherit;color:var(--ink)}.manual-candidate:hover{border-color:var(--primary);background:#f2fbfc}.manual-candidate-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:14px}.manual-candidate-reasons{display:block;margin-top:4px;font-size:12px;line-height:1.5;color:var(--muted)}.manual-candidate-reasons span:after{content:" · "}.manual-candidate-reasons span:last-child:after{content:""}.manual-lv{display:inline-flex;align-items:center;min-height:24px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:800}.manual-lv.good{background:#d8f3ea;color:#0d6e50}.manual-lv.warn{background:#fdf0c8;color:#8a6a12}.manual-lv.bad{background:#fdecec;color:#8a1c1c}.manual-oplist{margin-top:14px}.manual-oplist ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.manual-oplist li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 11px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;font-size:13px;font-weight:700}.manual-warnings{margin-top:14px}.manual-red-count{color:#8a1c1c;font-weight:800}.manual-warn-btn{width:100%;text-align:left;font:inherit;font-weight:600}.manual-warn-btn.jumpable{cursor:pointer}.manual-warn-btn.jumpable:hover{filter:brightness(.97)}.warning-line.stale{opacity:.55}.manual-summary{margin-top:14px;padding:12px 14px;border-radius:var(--radius);background:#fff7e6;border:1px solid #f2d79b;color:#7a5408}.manual-summary p{margin:6px 0 0;font-size:13px;line-height:1.55;font-weight:600}.manual-crossmonth-lock{font-weight:800}.manual-saved-warnings{margin-bottom:10px}.manual-old-toggle{margin-top:10px;color:var(--muted)}.manual-old-warnings{margin-top:8px;opacity:.72}.access-desc{margin:6px 0 0;max-width:720px;color:var(--muted);font-size:13px;font-weight:600;line-height:1.6}.access-desc strong{color:var(--ink)}.access-me-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:14px 0 0;padding:10px 14px;border:1px solid var(--line);border-left:5px solid var(--primary);border-radius:var(--radius);background:var(--surface-strong);font-size:14px;font-weight:700}.access-add-form{margin:16px 0 14px;padding:14px;border:1px solid var(--line);border-radius:var(--radius);background:#fbfdfe;display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(180px,1fr) minmax(190px,1fr) auto;gap:12px;align-items:end}table.access-users-table{min-width:880px}.access-row-flags{display:flex;flex-wrap:wrap;gap:5px}.pill.off{background:#e6edf1;color:#52697a}.access-toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;white-space:nowrap}.access-toggle input{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.access-toggle input:disabled{cursor:not-allowed}.access-toggle:has(input:disabled){color:var(--muted);cursor:not-allowed}.access-footnote{margin:12px 0 0;font-size:13px;font-weight:600;line-height:1.6}.access-users-table code,.warning-box code{padding:1px 6px;border-radius:6px;background:#1295ab1f;font-size:13px;font-weight:800}@media(max-width:980px){.access-add-form{grid-template-columns:minmax(0,1fr)}}.access-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.staffing-card-head{display:flex;align-items:flex-start;gap:10px}.staffing-card-head .section-header{flex:1;min-width:0}.staffing-toggle{flex:0 0 auto;display:grid;place-items:center;width:32px;height:32px;padding:0;border:1px solid var(--line);border-radius:10px;cursor:pointer;color:var(--brand-deep, #0a6c7d);background:#fff}.staffing-toggle:hover{background:#e6f6f9}.staffing-body{display:grid;gap:12px}.staffing-body[hidden]{display:none}.staffing-card.is-collapsed{gap:0}@media(min-width:1181px){.workspace-grid.staffing-collapsed{grid-template-columns:minmax(0,1fr) 46px}.workspace-grid.staffing-collapsed .rules-panel{padding:0}.workspace-grid.staffing-collapsed .staffing-card.is-collapsed{position:sticky;top:12px;padding:8px 5px;justify-items:center;margin-bottom:0}.workspace-grid.staffing-collapsed .staffing-card.is-collapsed .staffing-card-head{flex-direction:column;align-items:center;gap:0}.workspace-grid.staffing-collapsed .staffing-card.is-collapsed .section-header{display:none}}.month-plan-banner{display:grid;gap:8px;margin:0 0 14px;padding:12px 14px;border:1px solid var(--line);border-left:4px solid var(--brand, #14a7c6);border-radius:12px;background:#f2fafb}.month-plan-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.month-plan-eyebrow{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted, #6b7f86)}.month-plan-month{font-size:17px;color:var(--brand-deep, #0a6c7d)}.month-plan-days{margin-left:auto;font-size:14px;color:var(--ink, #24343a)}.month-plan-days small{color:var(--muted, #6b7f86)}.month-plan-list{margin:0;padding-left:18px;display:grid;gap:4px;font-size:14px;line-height:1.55}.month-plan-status{margin:0;font-size:14px;font-weight:500}.month-plan-status.ok{color:#0f7b5a}.month-plan-status.warn{color:#b4530a}@media(max-width:720px){.month-plan-days{margin-left:0;width:100%}}.best-of-summary{margin:0 0 .75rem;padding:.5rem .75rem;border-radius:.5rem;background:#14a7c614;border:1px solid rgba(20,167,198,.25);font-size:.86rem;color:#0f6f83;line-height:1.45}.best-of-summary.warn{background:#f59e0b1a;border-color:#f59e0b59;color:#92600a}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.entry-screen{min-height:100vh;display:grid;place-items:center;padding:1.5rem;background:#f3f8fa}.entry-card{width:min(28rem,100%);padding:2rem 1.75rem;border-radius:1rem;background:#fff;border:1px solid rgba(20,167,198,.25);box-shadow:0 12px 32px #0f6f8314;text-align:center}.entry-card h1{margin:.25rem 0 .75rem;font-size:1.25rem;color:#0f3d4a}.entry-brand{margin:0;font-size:.8rem;font-weight:700;letter-spacing:.04em;color:#14a7c6}.entry-detail{margin:0 0 1.25rem;font-size:.92rem;line-height:1.6;color:#4b6470}.session-bar{position:sticky;top:0;z-index:60;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem 1rem;padding:.6rem 1rem;font-size:.9rem;line-height:1.45}.session-bar.is-warning{background:#fff4d6;color:#7a5200;border-bottom:1px solid #f0cf7a}.session-bar.is-expired{background:#fde8e8;color:#8f1d1d;border-bottom:1px solid #f1a7a7}.session-me{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;margin:.5rem 0 1rem;padding:.75rem 1rem;border-radius:.6rem;background:#14a7c60f;border:1px solid rgba(20,167,198,.2);font-size:.92rem}.session-meta{color:#4b6470}.session-subtitle{margin:1rem 0 .5rem;font-size:.95rem}.session-note{margin:.5rem 0;padding:.5rem .75rem;border-radius:.5rem;background:#14a7c614;border:1px solid rgba(20,167,198,.25);font-size:.86rem;line-height:1.5;color:#0f6f83}.session-note.is-error{background:#fde8e8;border-color:#f1a7a7;color:#8f1d1d}
