:root{color-scheme:light;--bg: #eef1f2;--surface: #ffffff;--surface-muted: #f7f8f8;--line: rgba(38, 54, 57, .14);--line-strong: rgba(38, 54, 57, .28);--ink: #223437;--ink-soft: #607174;--accent: #0b6b70;--accent-strong: #07565b;--accent-soft: #e6f0f0;--danger: #a53c32;--warning: #8a6200;--warning-soft: #fff4dd;--warning-soft-strong: #ffebc4;--info: #315f91;--success: #28734f;--disabled-bg: #e2e7e8;--disabled-border: #c8d1d2;--disabled-text: #6b797b;--shadow: 0 8px 24px rgba(27, 44, 47, .09);--radius-card: 8px;--radius-control: 6px;--col-check: 54px;--col-name: 220px;--col-protected: 132px;--col-action: 92px;--col-date: 196px;font-family:Avenir Next,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;font-weight:400;line-height:1.5;color:var(--ink);background:var(--bg);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body{background:var(--bg)}body{min-width:320px;margin:0}button,input,select{font:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(49,95,145,.24);outline-offset:2px}#app{min-height:100vh}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.sticky-col{position:sticky;left:0;z-index:2;background:var(--surface);box-shadow:1px 0 0 var(--line)}.checkbox-col{width:var(--col-check);min-width:var(--col-check);max-width:var(--col-check)}.second-col{left:var(--col-check);width:var(--col-name);min-width:var(--col-name);max-width:var(--col-name)}.third-col{left:calc(var(--col-check) + var(--col-name));width:var(--col-protected);min-width:var(--col-protected);max-width:var(--col-protected)}.action-col{left:calc(var(--col-check) + var(--col-name) + var(--col-protected));width:var(--col-action);min-width:var(--col-action);max-width:var(--col-action)}.grid-cell-stack{display:grid;gap:8px;width:var(--col-date);min-width:var(--col-date)}.shift-date-col{width:var(--col-date);min-width:var(--col-date);max-width:var(--col-date)}.app-shell{position:relative;min-height:100vh;padding:32px;overflow:hidden}.login-shell{position:relative;min-height:100vh;display:grid;place-items:center;padding:24px;overflow:hidden}.app-header,.hero-panel,.table-card,.summary-card,.toolbar-card{position:relative;z-index:1}.app-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px;z-index:10}.eyebrow{margin:0 0 8px;color:var(--accent);text-transform:uppercase;letter-spacing:0;font-size:12px;font-weight:700}h1,h2{margin:0;font-weight:700;line-height:1.1}h1{font-size:30px}h2{font-size:22px}.hero-copy{margin:12px 0 0;max-width:720px;color:var(--ink-soft)}.sync-status{margin:10px 0 0;font-size:13px;font-weight:600}.sync-status.is-ready{color:var(--success)}.sync-status.is-syncing{color:var(--info)}.sync-status.is-offline{color:var(--danger)}.tab-bar{position:relative;z-index:20;display:flex;flex-wrap:wrap;gap:12px;padding:10px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface)}.tab-button,.action-button{border:1px solid transparent;border-radius:var(--radius-control);cursor:pointer;transition:transform .14s ease,background-color .14s ease,color .14s ease}.tab-button{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;min-width:132px;padding:12px 16px;color:var(--ink-soft);background:transparent;pointer-events:auto;-webkit-user-select:none;user-select:none;white-space:nowrap}.tab-button.active{background:var(--accent-strong);color:#fff}.tab-button:hover,.action-button:hover{transform:translateY(-1px)}.assignment-layout,.page-shell,.grid-page-shell,.page-stack{display:grid;gap:22px}.building-stack{display:grid;gap:18px}.building-card{padding:0 0 8px}.building-header{display:flex;align-items:center;justify-content:space-between;padding:18px 18px 0}.building-header h3{margin:0;font-size:22px}.building-copy{margin:6px 0 0;color:var(--ink-soft);font-size:13px}.hero-panel{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:24px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow);animation:rise-in .42s ease}.hero-panel.compact{align-items:start}.hero-controls,.toolbar-row{display:flex;flex-wrap:wrap;gap:14px}.assignment-main{display:grid;grid-template-columns:minmax(0,1fr) clamp(240px,20vw,300px);gap:20px;align-items:start}.field-group{display:grid;gap:8px;min-width:170px;color:var(--ink-soft);font-size:14px}.field-wide{min-width:340px}.field-note{color:var(--ink-soft);font-size:12px;line-height:1.4}.date-picker-card{display:grid;gap:8px;min-width:320px}.date-picker-label{color:var(--ink-soft);font-size:14px}.date-picker-row{display:flex;gap:10px}.small-select{min-width:98px}.date-weekday{color:var(--accent);font-size:13px;font-weight:600}.toolbar-input,.toolbar-select,.table-input,.table-select,.grid-select{width:100%;padding:11px 14px;border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--surface);color:var(--ink)}.searchable-select{display:grid;gap:8px}.search-input{min-width:220px}.toolbar-card,.table-card,.summary-card{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow)}.toolbar-card{padding:20px}.login-card{position:relative;z-index:1;width:min(460px,100%);display:grid;gap:16px;padding:32px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow)}.toolbar-hint{margin-top:10px;color:var(--ink-soft);font-size:13px}.action-button{align-self:end;padding:12px 18px;background:var(--accent);color:#fff}.action-button:disabled{border-color:var(--disabled-border);background:var(--disabled-bg);color:var(--disabled-text);opacity:1;cursor:not-allowed;transform:none}.secondary-button{border-color:var(--accent);background:var(--surface);color:var(--accent)}.action-button:not(:disabled):hover{background:var(--accent-strong)}.secondary-button:not(:disabled):hover{border-color:var(--accent-strong);background:var(--accent-soft);color:var(--accent-strong)}.ghost-button{padding:9px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--surface);color:var(--ink);cursor:pointer}.danger-button{color:var(--danger)}.login-button{width:100%;justify-self:stretch}.login-error{margin:0;color:var(--danger);font-size:13px}.assignment-table,.shift-grid{width:100%;border-collapse:separate;border-spacing:0}.table-card{overflow:auto}.assignment-table th,.assignment-table td,.shift-grid th,.shift-grid td{padding:14px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left}.assignment-table thead th,.shift-grid thead th{position:sticky;top:0;z-index:3;background:var(--surface-muted);font-size:13px;text-transform:uppercase;letter-spacing:0}.recommend-name{font-weight:700}.recommend-card{display:grid;gap:6px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface-muted)}.room-label{font-weight:700}.recommend-meta{margin-top:6px;color:var(--ink-soft);font-size:13px}.confirmed-meta{margin-top:8px;color:var(--accent);font-size:12px;font-weight:600}.hint-list{display:grid;gap:6px}.hint-item{color:var(--ink-soft);font-size:13px}.conflict-item{color:var(--danger);font-size:13px;font-weight:600}.summary-sidebar{display:grid;gap:12px}.summary-card{padding:18px}.summary-sidebar .summary-card{padding:14px;border-radius:var(--radius-card)}.summary-label,.panel-title{margin:0;font-size:14px;color:var(--ink-soft)}.summary-number{margin:4px 0 14px;font-size:48px;font-weight:700}.summary-sidebar .summary-number{margin-bottom:10px;font-size:36px}.summary-version-picker{margin-top:12px}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.summary-sidebar .summary-grid{gap:8px}.stats-grid{margin-top:12px}.summary-mini-label{display:block;margin-bottom:3px;color:var(--ink-soft);font-size:12px}.chip-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.room-chip{padding:8px 10px;border-radius:999px;background:var(--accent-soft);font-size:13px}.chip-button{border:0;cursor:pointer;color:var(--ink)}.sidebar-list{margin:12px 0 0;padding-left:18px;color:var(--ink)}.sidebar-paragraph{margin:12px 0 0;color:var(--ink)}.sidebar-caption{margin:8px 0 0;color:var(--ink-soft);font-size:12px}.warning-list{color:var(--danger)}.muted-chip{opacity:.66}.shift-grid-card{max-height:72vh;max-width:100%;overflow:auto}.shift-grid{width:max-content;min-width:100%}.shift-grid th,.shift-grid td{height:108px;white-space:nowrap}.shift-grid tbody td{vertical-align:middle}.nurse-cell{min-width:0}.nurse-cell-inner{display:flex;min-height:76px;flex-direction:column;justify-content:center;gap:4px;overflow:hidden}.nurse-cell strong,.nurse-cell span{display:block;white-space:nowrap}.nurse-cell span{color:var(--ink-soft);font-size:13px}.protected-cell{min-width:124px}.protected-toggle{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-size:13px}.protected-row td{background:var(--warning-soft)}.protected-row .sticky-col{background:var(--warning-soft-strong)}.priority-card-list{display:grid;gap:18px}.priority-save-box{display:grid;gap:6px;align-content:end}.save-status{color:var(--ink-soft);font-size:12px;white-space:nowrap}.priority-card{display:grid;gap:18px;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.priority-card.dragging{opacity:.72}.priority-card:hover{border-color:var(--line-strong)}.priority-card-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.priority-header-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.seniority-field{min-width:120px}.seniority-chip{background:var(--accent-soft);color:var(--accent);font-weight:700}.drag-chip{padding:8px 10px;border-radius:999px;border:1px dashed var(--line-strong);color:var(--ink-soft);font-size:13px;background:#ffffff8f}.priority-card-header h3,.priority-role-head h4{margin:0}.priority-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.priority-role-section{display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface-muted)}.priority-role-head{display:flex;align-items:start;justify-content:space-between;gap:12px}.priority-role-head p{margin:0;color:var(--ink-soft);font-size:13px}.priority-row{display:grid;grid-template-columns:92px minmax(0,1fr);gap:12px;align-items:center}.priority-rank-label{color:var(--ink-soft);font-size:13px}.protected-chip{background:var(--warning-soft);color:var(--warning)}.checkbox-cell,.action-cell,.protected-cell{vertical-align:middle}.standby-select{background:#f5f8ffe6}.shift-yellow{background:#f6dd6047}.shift-purple{background:#ac84e63d}.shift-blue{background:#72a3ff38}.shift-gray{background:#78808a38}@keyframes rise-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1100px){.assignment-main{grid-template-columns:1fr}}@media(max-width:760px){.app-shell{padding:18px}.app-header,.hero-panel{display:grid}.tab-bar{position:relative;z-index:20;justify-content:stretch}.tab-button{flex:1 1 calc(50% - 6px);min-width:min(132px,100%)}.priority-role-grid{grid-template-columns:1fr}.third-col,.action-col{position:static}.priority-header-actions{width:100%;flex-wrap:wrap}}.selector-panel{align-items:start}.selector-grid{width:min(760px,100%);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.selector-card{display:grid;gap:10px;padding:24px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);color:var(--ink);text-align:left;cursor:pointer;transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.selector-card:hover{transform:translateY(-2px);border-color:var(--line-strong);box-shadow:var(--shadow)}.selector-card strong{font-size:22px}.selector-tag{color:var(--accent);font-size:12px;font-weight:700;letter-spacing:0;text-transform:uppercase}.header-actions-stack{display:grid;justify-items:end;gap:12px}.compact-summary-card{min-width:160px;padding:16px 18px}.small-number{font-size:26px;margin:4px 0 0}.consumable-dept-card{display:grid;gap:14px}.consumable-table th,.consumable-table td{vertical-align:middle}.single-column-grid{grid-template-columns:1fr}.consumable-item-row{display:grid;grid-template-columns:minmax(220px,1.8fr) 120px 120px 90px;gap:12px;align-items:center}.upload-field input[type=file]{padding:9px 12px}.echart-panel{width:100%}.consumables-dashboard-shell{gap:18px}.analytics-hero-panel{align-items:start}.analytics-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:14px}.analytics-kpi-card{border:1px solid rgba(19,79,83,.12);background:var(--surface)}.analytics-kpi-card .summary-label{font-weight:600}.accent-teal{box-shadow:inset 0 0 0 1px #0f6c7414}.accent-rust{box-shadow:inset 0 0 0 1px #c8553d14}.accent-gold{box-shadow:inset 0 0 0 1px #d1a23c1a}.accent-blue{box-shadow:inset 0 0 0 1px #3f6db514}.analytics-insight-card{background:var(--surface)}.analytics-insight-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}.analytics-insight-item{min-height:86px;padding:16px;border:1px solid rgba(19,79,83,.12);border-radius:var(--radius-card);background:var(--surface-muted);color:var(--ink);line-height:1.7}.analytics-grid{display:grid;gap:18px}.analytics-grid-large{grid-template-columns:repeat(12,minmax(0,1fr))}.analytics-card{display:grid;gap:14px;overflow:hidden}.analytics-card-head{display:flex;align-items:start;justify-content:space-between;gap:12px}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.analytics-table-stack{display:grid;gap:14px;max-height:960px;overflow:auto;padding-right:4px}.analytics-subtable{display:grid;gap:10px;padding:14px;border:1px solid rgba(19,79,83,.1);border-radius:var(--radius-card);background:var(--surface-muted)}@media(max-width:960px){.selector-grid{grid-template-columns:1fr}.header-actions-stack{justify-items:stretch}.consumable-item-row,.analytics-kpi-grid,.analytics-insight-grid,.analytics-grid-large{grid-template-columns:1fr}.span-4,.span-5,.span-6,.span-7,.span-8{grid-column:span 1}}
