:root{-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}body{margin:0}*{box-sizing:border-box}body{color:#e2e8f0;background:#0f172a;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:#93c5fd}.topnav{background:#1e293b;border-bottom:1px solid #334155;align-items:center;gap:1.5rem;padding:.75rem 1.25rem;display:flex}.topnav__brand{font-weight:600}.topnav__links{flex:1;gap:1rem;display:flex}.topnav__links a{text-decoration:none}.topnav__user{align-items:center;gap:.75rem;display:flex}.topnav__name{color:#cbd5e1;cursor:pointer;border-radius:6px;padding:.3rem .55rem;font-weight:500;text-decoration:none;transition:background .12s,color .12s}.topnav__name:hover,.topnav__name.is-active{color:#fff;background:#334155}.page{max-width:1400px;margin:2rem auto;padding:0 1.25rem}.card{background:#1e293b;border:1px solid #334155;border-radius:8px;margin-bottom:1rem;padding:1.25rem}.form-row{flex-direction:column;gap:.35rem;margin-bottom:.85rem;display:flex}.form-row label{color:#94a3b8;font-size:.85rem}.form-row input,.form-row select,.form-row textarea{color:#e2e8f0;font:inherit;background:#0f172a;border:1px solid #334155;border-radius:4px;padding:.5rem .65rem}input,select,textarea{color:#e2e8f0;font:inherit;background:#0f172a;border:1px solid #334155;border-radius:4px;padding:.35rem .5rem}button{color:#fff;font:inherit;cursor:pointer;background:#2563eb;border:none;border-radius:4px;padding:.4rem .85rem}button.secondary{background:#334155}button.danger{background:#dc2626}button:disabled{opacity:.5;cursor:not-allowed}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid #334155;padding:.4rem .55rem}th{color:#94a3b8;font-size:.85rem;font-weight:600}.error{color:#fca5a5;background:#7f1d1d33;border:1px solid #b9252533;border-radius:4px;margin-bottom:.75rem;padding:.5rem .75rem}.success{color:#86efac;background:#14532d33;border:1px solid #16a34a33;border-radius:4px;margin-bottom:.75rem;padding:.5rem .75rem}.schedule-layout{grid-template-columns:220px 1fr;gap:1rem;display:grid}@media (width<=900px){.schedule-layout{grid-template-columns:1fr}}.schedule-layout--full{grid-template-columns:1fr}.people-sidebar{background:#1e293b;border:1px solid #334155;border-radius:8px;align-self:start;padding:1rem;position:sticky;top:1rem}.person-chip{cursor:grab;-webkit-user-select:none;user-select:none;color:#fff;border:2px solid #0000;border-radius:4px;margin-bottom:.35rem;padding:.4rem .6rem;font-size:.9rem;transition:transform 50ms}.person-chip.is-dragging{opacity:.5;cursor:grabbing}.person-chip.is-droptarget{border-color:#facc15;transform:scale(1.02)}.schedule-main{min-width:0}.schedule-grid{table-layout:fixed;border-collapse:separate;border-spacing:0;min-width:100%}.schedule-grid th,.schedule-grid td{border:1px solid #334155;padding:.35rem .4rem}.schedule-grid .slot-header{text-align:left;z-index:1;background:#1e293b;width:180px;min-width:180px;position:sticky;left:0}.schedule-grid .day-header{text-align:center;color:#e2e8f0;background:#0e2a1d;min-width:78px;position:relative}.schedule-grid .day-header__dow{color:#cbd5e1;font-size:.75rem}.schedule-grid .day-header__marker{opacity:.9;margin-top:2px;font-size:.65rem;font-weight:600}.schedule-grid .day-header.kind-workday{background:#0e2a1d}.schedule-grid .day-header.kind-pre_holiday{background:#4d2d0a;border-bottom:2px solid #f59e0b}.schedule-grid .day-header.kind-weekend{color:#c7d2fe;background:#2a1e64}.schedule-grid .day-header.kind-working_weekend{background:#0e2a1d;border-bottom:2px solid #f59e0b}.schedule-grid .day-header.kind-holiday{color:#fee2e2;background:#7f1d1d}.schedule-grid .day-header.is-today{outline-offset:-2px;color:#fff;outline:2px solid #22c55e}.slot-cell{vertical-align:top;background:#0f1f17;min-height:48px}.slot-cell.kind-workday{background:#0f1f17}.slot-cell.kind-pre_holiday{background:#2b1c08}.slot-cell.kind-weekend{background:#1c1a4d}.slot-cell.kind-working_weekend{background:#0f1f17}.slot-cell.kind-holiday{background:#3a1414}.slot-cell.is-inactive{background:repeating-linear-gradient(45deg,#0b1220,#0b1220 6px,#111b2e 6px 12px)}.slot-cell.kind-holiday.is-inactive{background:repeating-linear-gradient(45deg,#2a1010,#2a1010 6px,#3a1414 6px 12px)}.slot-cell.kind-weekend.is-inactive{background:repeating-linear-gradient(45deg,#14133a,#14133a 6px,#1c1a4d 6px 12px)}.slot-cell.is-today{box-shadow:inset 2px 0 #22c55e,inset -2px 0 #22c55e}.slot-cell.is-droptarget{outline-offset:-2px;background-color:#422006;outline:2px solid #facc15}.assignment-chip{color:#fff;cursor:grab;-webkit-user-select:none;user-select:none;border-radius:4px;align-items:center;gap:.25rem;margin:2px 2px 0 0;padding:.2rem .5rem;font-size:.8rem;display:inline-flex}.assignment-chip.is-dragging{opacity:.5}.assignment-chip.is-optimistic{opacity:.7;outline:1px dashed #facc15}.assignment-chip.is-recurring{opacity:.6;cursor:default;border:1px dashed #ffffffb3}.recurring-marker{opacity:.8;font-size:.7rem}.trash-zone{text-align:center;color:#94a3b8;border:2px dashed #475569;border-radius:6px;margin-top:.5rem;padding:.75rem;font-size:.9rem}.trash-zone.is-over{color:#fca5a5;border-color:#dc2626}.toast-stack{z-index:1000;flex-direction:column;gap:.5rem;display:flex;position:fixed;top:1rem;right:1rem}.toast{color:#fff;border-radius:6px;min-width:240px;padding:.6rem .9rem;font-size:.9rem;box-shadow:0 4px 14px #00000059}.toast--error{background:#b91c1c}.toast--success{background:#15803d}.toast--info{background:#1e40af}.modal-backdrop{z-index:1100;background:#0000008c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-dialog{background:#1e293b;border:1px solid #334155;border-radius:10px;width:100%;min-width:300px;max-width:440px;max-height:calc(100vh - 2rem);padding:1.25rem 1.5rem;position:relative;overflow-y:auto;box-shadow:0 12px 40px #00000080}.modal-title{margin:0 0 .75rem}.modal-close{color:#94a3b8;cursor:pointer;background:0 0;border:none;padding:.1rem .35rem;font-size:1.4rem;line-height:1;position:absolute;top:.5rem;right:.6rem}.modal-close:hover{color:#e2e8f0}.contacts-card__head{align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.contacts-card__swatch{border-radius:6px;flex:none;width:28px;height:28px;display:inline-block}.contacts-card__name{font-weight:600}.contacts-card__sub{color:#94a3b8;font-size:.8rem}.contacts-card__list{margin:0}.contacts-card__list dt{color:#94a3b8;font-size:.75rem}.contacts-card__list dd{margin:0 0 .5rem}.contacts-card__row{margin-bottom:.4rem}.contacts-card__empty{color:#94a3b8;font-size:.85rem}.contacts-card__vacations{border-top:1px solid #334155;margin-top:.75rem;padding-top:.5rem}.contacts-card__vacations h4{margin:0 0 .35rem;font-size:.9rem}.contacts-card__vacations ul{margin:0;padding-left:1.1rem;font-size:.85rem}.assignment-chip-wrap{vertical-align:top;flex-direction:column;gap:2px;display:inline-flex}.assignment-chip{cursor:pointer}.assignment-chip__name{cursor:inherit}.chip-x{color:#ffffffd9;cursor:pointer;background:0 0;border:none;margin-left:.1rem;padding:0 .1rem;font-size:.95rem;line-height:1}.chip-x:hover{color:#fff}.crq-badge{background:#0000004d;border-radius:3px;padding:0 .25rem;font-size:.65rem}.crq-input{max-width:110px;padding:.1rem .25rem;font-size:.7rem}.crq-readonly{color:#94a3b8;font-size:.7rem}.crq-badge--missing{color:#fbbf24;white-space:nowrap;background:#78350f4d;border:1px solid #b4530944}.crq-missing-hint{color:#fbbf24;margin-top:.15rem;font-size:.78rem;display:block}.audit-category{color:#cbd5e1;background:#334155;border-radius:3px;padding:.05rem .4rem;font-size:.75rem}.works-warning{color:#fbbf24;white-space:nowrap;background:#78350f4d;border:1px solid #b4530944;border-radius:4px;padding:.2rem .55rem;font-size:.9rem}.works-table .work-row--unassigned td{background:#7c2d1226}.work-row__nextday{color:#94a3b8;font-size:.75rem}.work-date--weekend{color:#fca5a5}.night-badge{font-size:.8rem}.assignee-select--empty{border-color:#b45309}.duty-badge{font-size:.9rem;font-weight:700}.duty-badge--full{color:#4ade80}.duty-badge--partial{color:#fbbf24}.duty-badge--none{color:#f87171}.status-chip{white-space:nowrap;border-radius:999px;padding:.1rem .55rem;font-size:.78rem}.status-chip--open{color:#93c5fd;background:#1e40af55}.status-chip--done{color:#86efac;background:#14532d66}.status-chip--cancelled{color:#94a3b8;background:#33415588;text-decoration:line-through}.topnav__links{align-items:center}.topnav__link{color:#cbd5e1;border:1px solid #0000;border-radius:6px;padding:.4rem .7rem;font-size:.92rem;line-height:1;text-decoration:none;transition:background .12s,color .12s,border-color .12s}.topnav__link:hover,.topnav__link.is-active{color:#fff;background:#334155}.topnav__link--primary{color:#fff;background:#2563eb;padding:.5rem 1rem;font-weight:600;box-shadow:0 1px 4px #2563eb66}.topnav__link--primary:hover{color:#fff;background:#1d4ed8}.topnav__link--primary.is-active{color:#fff;outline-offset:1px;background:#1d4ed8;outline:2px solid #93c5fd}.tab-btn{border:1.5px solid #0000;font-weight:600;transition:filter .12s}.tab-btn:hover{filter:brightness(1.12)}.tab-btn.is-active{box-shadow:0 1px 6px #00000059}.summary-picker{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.summary-picker__label{color:#cbd5e1;margin-right:.2rem;font-weight:600}.summary-picker__chip{color:#94a3b8;background:0 0;border:1.5px solid #334155;border-radius:999px;padding:.2rem .7rem;font-size:.85rem;font-weight:500;transition:filter .12s,background .12s,color .12s}.summary-picker__chip:hover:not(:disabled){filter:brightness(1.15)}.summary-picker__chip.is-on{color:#fff;background:#1d4ed8;border-color:#1d4ed8}.summary-picker__chip:disabled{cursor:default;opacity:.75}.summary-svc-tab{color:#93c5fd;background:#2563eb29;border-radius:6px;padding:.1rem .5rem;font-size:.78rem;font-weight:500}.absence-band td.slot-cell{vertical-align:top}.absence-chip{color:#fff;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;margin-bottom:2px;padding:1px 5px;font-size:.78rem;display:block;overflow:hidden}.vac-tl__header{flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem;margin-bottom:.5rem;display:flex}.vac-tl__legend{color:#94a3b8;font-size:.8rem}.vac-tl__legend-overlap{color:#fca5a5;font-weight:600}.vac-tl__controls{flex-wrap:wrap;align-items:center;gap:.3rem;display:flex}.vac-tl__controls .secondary.is-active{color:#fff;background:#2563eb;border-color:#2563eb}.vac-tl__sep{background:#334155;width:1px;height:18px;margin:0 .2rem}.vac-tl__warn{color:#fed7aa;background:#422006;border:1px solid #b45309;border-radius:6px;margin:0 0 .5rem;padding:.4rem .6rem;font-size:.85rem}.vac-timeline.schedule-grid th,.vac-timeline.schedule-grid td{padding:0}.vac-timeline .slot-header{z-index:6;width:180px;min-width:180px;padding:.3rem .5rem}.vac-timeline .day-header{min-width:0;padding:.25rem 0}.vac-tl__daynum{color:#e2e8f0;font-size:.72rem}.vac-timeline tbody td{border-left-color:#0000;border-right-color:#0000}.vac-timeline .slot-cell{min-height:0}.vac-timeline tbody td{height:28px}.vac-tl__count{text-align:center;color:#94a3b8;height:22px;font-size:.78rem;font-weight:700}.vac-tl__count.is-one{color:#cbd5e1}.vac-tl__count.is-overlap{color:#fff;background:#7f1d1d}.vac-tl__name{align-items:center;gap:.4rem;display:flex}.vac-tl__dot{border-radius:50%;flex:none;width:10px;height:10px}.vac-tl__name-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.vac-tl__name-days{color:#64748b;flex:none;font-size:.72rem}.vac-tl__cell{height:26px;position:relative}.vac-tl__cell.has-label{z-index:3}.vac-fill{background:#475569;position:absolute;inset:4px 0}.vac-fill.seg-start{border-top-left-radius:6px;border-bottom-left-radius:6px;left:3px}.vac-fill.seg-end{border-top-right-radius:6px;border-bottom-right-radius:6px;right:3px}.vac-fill.is-pending{opacity:.9;background:repeating-linear-gradient(45deg,#64748b,#64748b 5px,#475569 5px 10px)}.vac-fill__label{color:#f8fafc;white-space:nowrap;pointer-events:none;text-shadow:0 1px 2px #000000d9;z-index:2;font-size:.72rem;position:absolute;top:50%;left:6px;transform:translateY(-50%)}.vac-tl__filters{flex-wrap:wrap;align-items:center;gap:.4rem;margin:.5rem 0 .75rem;display:flex}.vac-tl__filters-label{color:#94a3b8;font-size:.8rem}.chip{color:#cbd5e1;cursor:pointer;background:#1e293b;border:1px solid #334155;border-radius:999px;padding:.2rem .7rem;font-size:.8rem}.chip:hover{border-color:#475569}.chip.is-active{color:#fff;background:#2563eb;border-color:#2563eb}.vac-tl__emp-filter{position:relative}.vac-tl__emp-filter>summary{cursor:pointer;color:#cbd5e1;background:#1e293b;border:1px solid #334155;border-radius:999px;padding:.2rem .7rem;font-size:.8rem;list-style:none}.vac-tl__emp-filter>summary::-webkit-details-marker{display:none}.vac-tl__emp-list{z-index:20;background:#0f172a;border:1px solid #334155;border-radius:8px;min-width:240px;max-height:280px;margin-top:.3rem;padding:.5rem .6rem;position:absolute;overflow-y:auto;box-shadow:0 8px 24px #00000080}.vac-tl__emp-item{white-space:nowrap;cursor:pointer;align-items:center;gap:.4rem;padding:.15rem 0;font-size:.85rem;display:flex}.vac-tl__cell--addable{cursor:pointer}.vac-tl__cell--addable:hover{background:#2563eb2e}.vac-tl__cell--editable{cursor:pointer}.works-band__header{flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem;margin-bottom:.5rem;display:flex}.works-band__legend{color:#94a3b8;font-size:.8rem}.works-band__hint{color:#64748b;font-size:.8rem}.works-band col,.works-band .day-header{width:156px;min-width:156px}.works-band td.slot-cell{vertical-align:top;white-space:normal;width:156px;min-width:156px}.works-empty{color:#475569;font-size:.75rem}.work-card{overflow-wrap:anywhere;word-break:break-word;background:#0f172a;border:1px solid #334155;border-left:3px solid #2563eb;border-radius:5px;margin-bottom:4px;padding:4px 6px;font-size:.78rem}.work-card.is-clickable{cursor:pointer;transition:border-color .12s,background .12s}.work-card.is-clickable:hover{background:#14213b;border-color:#475569 #475569 #475569 #3b82f6}.work-card--done{opacity:.8;border-left-color:#16a34a}.work-card--cancelled{opacity:.6;border-left-color:#64748b}.work-card__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.3rem;display:flex}.work-card__head .crq-badge{overflow-wrap:anywhere}.work-card__time{color:#cbd5e1;white-space:nowrap;font-size:.72rem}.work-card__title{color:#94a3b8;margin:1px 0}.work-card__role{align-items:baseline;gap:.25rem;margin-top:2px;display:flex}.work-card__name{overflow-wrap:anywhere;flex:1;min-width:0}.work-card__warn{color:#fbbf24}.work-card__role-tag{text-align:center;color:#cbd5e1;background:#334155;border-radius:3px;flex:none;min-width:1.4em;padding:0 3px;font-size:.68rem;display:inline-block}.work-add-btn{color:#94a3b8;cursor:pointer;background:0 0;border:1px dashed #475569;border-radius:5px;width:100%;padding:3px 0;font-size:.74rem;transition:border-color .12s,color .12s,background .12s;display:block}.work-add-btn:hover{color:#93c5fd;background:#14213b;border-color:#3b82f6}.works-warning{color:#fbbf24}.works-linked-tag{color:#38bdf8;font-size:.8rem;font-weight:500}.modal-dialog--wide{max-width:600px}.work-editor{flex-direction:column;gap:.7rem;min-width:min(540px,86vw);display:flex}.work-editor .form-row{margin:0}.work-editor__grid{flex-wrap:wrap;gap:.7rem;display:flex}.work-editor__grid .form-row{flex:1;min-width:120px}.work-editor__crq{flex:150px!important}.work-editor__desc{flex:2 230px!important}.work-editor__templates{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.work-editor__tpl-label{color:#94a3b8;font-size:.85rem}.work-editor__actions{flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.3rem;display:flex}.chip-works{flex-wrap:wrap;gap:2px;margin-top:2px;display:flex}.chip-work-tag{color:#7dd3fc;white-space:nowrap;background:#0ea5e933;border:1px solid #0ea5e955;border-radius:3px;padding:0 4px;font-size:.68rem}.chip-work-tag--done{color:#86efac;background:#14532d44;border-color:#16a34a55}.chip-work-tag--cancelled{color:#94a3b8;opacity:.7;text-decoration:line-through}.slot-header .night-badge{margin-left:.25rem}.assignment-chip.is-continuation{opacity:.55;cursor:default;background-image:repeating-linear-gradient(45deg,#ffffff14 0 6px,#0000 6px 12px)}.view-toggle{border:1px solid #334155;border-radius:6px;display:inline-flex;overflow:hidden}.view-toggle__btn{color:#cbd5e1;cursor:pointer;background:0 0;border:none;padding:.35rem .7rem;font-size:.85rem}.view-toggle__btn+.view-toggle__btn{border-left:1px solid #334155}.view-toggle__btn:hover{background:#1e293b}.view-toggle__btn.is-active{color:#fff;background:#2563eb}.people-grid .day-header{min-width:116px}.people-cell{vertical-align:top;padding:3px 4px}.psg-shift{color:#fff;cursor:pointer;border-radius:4px;flex-direction:column;align-items:flex-start;max-width:100%;margin:0 2px 3px 0;padding:2px 6px;font-size:.78rem;line-height:1.2;display:flex}.psg-shift.is-recurring{opacity:.85}.psg-shift.is-actionable:hover{filter:brightness(1.15)}.psg-shift__t{opacity:.95;white-space:nowrap;align-items:center;gap:2px;font-size:.72rem;display:inline-flex}.psg-cont{color:#94a3b8;margin-bottom:2px;font-size:.72rem;font-style:italic;display:block}.psg-dot{border-radius:50%;flex:none;width:9px;height:9px}.absence-chip.is-dayoff{color:#fde68a;background:#3f3f1f}.absence-chip.is-sick{color:#fecaca;background:#4a1f1f}.absence-chip.is-unavail{color:#cbd5e1;background:#2c2c34}.absence-chip.is-vac{color:#bae6fd;background:#1e3a5f}.absence-chip.is-clickable{cursor:pointer}.absence-chip.is-clickable:hover{filter:brightness(1.25)}.cell-menu__backdrop{z-index:40;position:fixed;inset:0}.cell-menu{z-index:41;background:#0f172a;border:1px solid #334155;border-radius:8px;min-width:210px;max-width:280px;max-height:calc(100vh - 24px);padding:.3rem;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #00000073}.cell-menu__title{color:#94a3b8;border-bottom:1px solid #1e293b;margin-bottom:.25rem;padding:.25rem .4rem .35rem;font-size:.78rem}.cell-menu__item,.cell-menu__slot{text-align:left;color:#e2e8f0;cursor:pointer;background:0 0;border:none;border-radius:5px;align-items:center;gap:.4rem;width:100%;padding:.4rem .45rem;font-size:.85rem;display:flex}.cell-menu__item:hover,.cell-menu__slot:not(:disabled):hover{background:#1e293b}.cell-menu__slot:disabled{color:#64748b;cursor:not-allowed}.cell-menu__sep{color:#64748b;text-transform:uppercase;letter-spacing:.04em;padding:.35rem .45rem .15rem;font-size:.72rem}.cell-menu__free{color:#94a3b8;margin-left:auto;font-size:.72rem}.cell-menu__empty{color:#64748b;padding:.35rem .45rem;font-size:.8rem}.psg-shift__name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.psg-warn{color:#fbbf24;cursor:help;margin:0 2px 2px 0;font-size:.85rem;line-height:1;display:inline-block}.vac-groups{flex-direction:column;gap:.4rem;display:flex}.vac-group{background:#0f172a;border:1px solid #334155;border-radius:6px}.vac-group__summary{cursor:pointer;-webkit-user-select:none;user-select:none;padding:.5rem .75rem;font-weight:600}.vac-group__summary:hover{background:#1e293b}.vac-group[open] .vac-group__summary{border-bottom:1px solid #334155}.vac-group__count{color:#94a3b8;font-weight:400}.vac-group>table{margin:.25rem .5rem .5rem}
