:root{--text:#2c3e50;--muted:#7a8699;--bg:#f4f6f9;--panel:#fff;--border:#e2e6ec;--accent:#2563eb;--accent-dark:#1d4ed8;font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}.boot{height:100vh;color:var(--muted);place-items:center;display:grid}.login-wrap{place-items:center;min-height:100vh;display:grid}.login{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:16px;width:340px;padding:32px;display:flex;box-shadow:0 10px 30px #0000000f}.login h1{margin:0 0 4px;font-size:20px}.login label{flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}input,select{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:8px;padding:9px 11px;font-size:14px}button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:10px 14px;font-size:14px;font-weight:600}button:hover{background:var(--accent-dark)}button:disabled{opacity:.6;cursor:not-allowed}button.ghost{color:var(--accent);border:1px solid var(--accent);background:0 0}.error{color:#dc2626;margin:0;font-size:13px}.app{flex-direction:column;height:100%;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 24px;display:flex}.topbar h1{margin:0;font-size:18px}.topbar-right{align-items:center;gap:14px;display:flex}.who{color:var(--muted);font-size:13px}.toolbar{flex-wrap:wrap;align-items:center;gap:24px;padding:12px 24px;display:flex}.toolbar label{align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.legend{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.legend-item{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.legend-item i{border-radius:4px;width:14px;height:14px}.loading{color:var(--muted);font-size:13px}.calendar{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex:1;min-height:0;margin:0 24px 24px;padding:0 24px 24px;overflow:hidden}.ev{flex-direction:column;padding:1px 0;font-size:11px;line-height:1.25;display:flex}.ev-period{text-transform:uppercase;letter-spacing:.02em;font-weight:700}.ev-doctor{font-weight:600}.ev-room{opacity:.85}.ev-vacation{flex-direction:row;align-items:center;font-style:italic;font-weight:600}.fc-event.vacation-event{cursor:default;opacity:.9}.fc-event{cursor:pointer;border:none!important;border-radius:6px!important}.fc-daygrid-event{padding:1px 4px}.cal-nav{align-items:center;gap:8px;padding:0 24px 8px;display:flex}.cal-title{text-align:center;flex:1;margin:0;font-size:20px}.view-switch{gap:6px;display:flex}.view-switch button{border-radius:8px}.view-switch button.active{background:var(--accent);color:#fff}.weekgrid{border-top:1px solid var(--border);border-left:1px solid var(--border);grid-template-columns:76px repeat(7,minmax(120px,1fr));grid-auto-rows:min-content;height:100%;display:grid;overflow:auto}.wg-head,.wg-row{display:contents}.wg-corner,.wg-day-head,.wg-axis,.wg-allday,.wg-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.wg-corner,.wg-day-head{z-index:2;background:var(--panel);position:sticky;top:0}.wg-day-head{text-align:center;padding:6px 4px}.wg-day-head.is-today{color:var(--accent);background:#fff7e0}.wg-weekday{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:700;display:block}.wg-daynum{font-size:16px;font-weight:700;display:block}.wg-axis{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#f8fafc;padding:8px;font-size:11px;font-weight:700}.wg-cell{flex-direction:column;gap:4px;min-height:100px;padding:4px;display:flex}.wg-cell.is-today{background:#fffdf5}.wg-slot{color:#fff;text-align:left;cursor:pointer;border:none;border-radius:6px;flex-direction:column;align-items:flex-start;gap:1px;padding:5px 7px;font-size:12px;line-height:1.2;display:flex}.wg-slot-doctor{font-weight:700}.wg-slot-room{opacity:.9;font-size:11px}.wg-allday{background:#fafbff;flex-direction:column;gap:3px;min-height:36px;padding:3px;display:flex}.wg-vac{color:#fff;cursor:pointer;text-align:left;border:none;border-radius:6px;padding:4px 7px;font-size:11px;font-style:italic;font-weight:600}.wg-empty{color:#cbd5e1;text-align:center;-webkit-user-select:none;user-select:none;opacity:0;margin:auto;font-size:16px;transition:opacity .1s}.wg-cell:hover .wg-empty{opacity:1}.wg-loading{text-align:center;color:var(--muted);grid-column:1/-1;padding:8px}.modal-backdrop{z-index:50;background:#0f172a73;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border-radius:12px;flex-direction:column;gap:14px;width:380px;padding:24px;display:flex;box-shadow:0 20px 50px #0003}.modal h2{margin:0;font-size:16px}.modal .category{background:var(--accent-bg,#e0e7ff);color:var(--accent);border-radius:20px;padding:2px 8px;font-size:12px}.modal-date{color:var(--muted);margin:0;font-size:14px}.modal label{flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.modal-actions{justify-content:flex-end;gap:10px;margin-top:6px;display:flex}.actions{flex-wrap:wrap;gap:8px;display:flex}button.secondary{background:#0ea5e9}button.secondary:hover{background:#0284c7}button.small{padding:4px 10px;font-size:12px}.modal-wide{width:640px;max-width:94vw;max-height:90vh;overflow-y:auto}.modal .hint{color:var(--muted);margin:0;font-size:13px}.template-settings{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.template-settings label{flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.template-settings label.check{flex-direction:row;align-items:center;gap:8px;font-weight:500}.template-entry{border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:12px;padding:14px;display:flex}.template-head{justify-content:space-between;align-items:center;display:flex}.weekday-picker{flex-wrap:wrap;gap:8px;display:flex}.weekday-picker label.wd{border:1px solid var(--border);cursor:pointer;width:44px;height:36px;color:var(--muted);background:#fff;border-radius:8px;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.weekday-picker label.wd.on{background:var(--accent);border-color:var(--accent);color:#fff}.weekday-picker label.wd input{display:none}.template-fields{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;display:grid}.template-fields label{flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.ok{color:#16a34a;margin:0;font-size:13px;font-weight:600}.modal-screen{flex-direction:column;width:920px;max-width:96vw;height:90vh;display:flex}.mgmt-head{justify-content:space-between;align-items:center;display:flex}.mgmt-head h2{margin:0}.tabs{border-bottom:1px solid var(--border);gap:6px;padding-bottom:8px;display:flex}button.tab{color:var(--muted);background:0 0;border:1px solid #0000;border-radius:8px;font-weight:600}button.tab:hover{background:#f1f5f9}button.tab.active{background:var(--accent);color:#fff}.mgmt-body{flex-direction:column;flex:1;gap:12px;padding-top:14px;display:flex;overflow:hidden}.mgmt-toolbar{justify-content:space-between;align-items:center;display:flex}.filter-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));align-items:end;gap:10px;display:grid}.filter-grid label{flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.bulk-bar{border:1px solid var(--border);background:#f8fafc;border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.bulk-bar strong{margin-right:auto;font-size:13px}.bulk-bar select{max-width:180px}.check-col{text-align:center;width:32px}.table-wrap{flex:1;overflow:auto}table.table{border-collapse:collapse;width:100%;font-size:13px}table.table th,table.table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 10px}table.table thead th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:12px}td.muted{color:var(--muted)}.status-dot{border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.row-actions{justify-content:flex-end;gap:6px;display:flex}
