:root{--ej-brand:#6731a1;--ej-brand-hover:#451d77;--ej-brand-subtle:#f0eaf6;--ej-brand-border-subtle:#e1d6ec;--ej-success:#0acf97;--ej-info:#39afd1;--ej-info-subtle:#ebf7fa;--ej-warning:#ffc35a;--ej-danger:#fa5c7c;--ej-gender-male:#2196f3;--ej-gender-female:#e91e63;--ej-link-blue:#007bff;--ej-bg:#fafbfe;--ej-surface:#fff;--ej-surface-2:#f6f7fb;--ej-fg:#6c757d;--ej-fg-strong:#313a46;--ej-fg-subtle:#8a969c;--ej-border:#dee2e6;--ej-border-strong:#ced4da;--ej-border-subtle:#eef2f7;--ej-focus-ring:rgba(103,49,161,.25);--ej-radius:0.25rem;--ej-shadow:0 0 35px 0 hsla(215,9%,64%,.15);--ej-duration:150ms;--ej-ease:ease-in-out;--p-primary-50:#f3e5f5;--p-primary-100:#e1bee7;--p-primary-200:#ce93d8;--p-primary-300:#ba68c8;--p-primary-400:#ab47bc;--p-primary-500:#9c27b0;--p-primary-600:#8e24aa;--p-primary-700:#7b1fa2;--p-primary-800:#6a1b9a;--p-primary-900:#4a148c;--p-primary-text-color:#fff;--p-primary-color:#6731a1;--p-primary-hover-color:#451d77;--p-button-secondary-hover-background:var(--p-surface-200);--p-form-field-padding-x:0.5rem;--p-form-field-padding-y:0.375rem;--p-form-field-sm-padding-x:0.75rem;--p-form-field-sm-padding-y:0.25rem;--p-form-field-lg-padding-x:0.75rem;--p-form-field-lg-padding-y:0.5rem;--p-badge-padding:0.15rem 0.25rem;--p-badge-height:auto;--p-badge-min-width:auto;--p-badge-sm-height:auto;--p-badge-sm-min-width:auto;--p-badge-sm-font-size:0.6rem;--p-button-padding-y:0.05rem;--p-button-padding-x:0.25rem;--p-button-lg-padding-y:var(--p-button-padding-y);--p-button-lg-padding-x:var(--p-button-padding-x);--p-button-sm-padding-y:var(--p-button-padding-y);--p-button-sm-padding-x:var(--p-button-padding-x);--p-button-icon-only-width:auto;--p-button-sm-icon-only-width:auto;--p-button-secondary-border-color:rgba(0,0,0,.1);--p-confirmdialog-icon-size:1rem;--p-icon-size:0.8rem;--p-overlay-modal-padding:0.5rem;--p-tooltip-padding:0.3rem;--p-form-field-disabled-background:rgba(0,0,0,.05);--p-navigation-item-padding:0.3rem;--p-mask-background:rgba(0,0,0,.05)}html:has(>body.p-overflow-hidden){overflow:hidden!important}body.p-overflow-hidden{overflow:hidden!important}.p-tooltip{font-size:.8rem}.p-badge{text-align:center;text-wrap:nowrap;&.p-badge-circle{height:1rem;width:1rem}}.p-dialog-content{overflow-x:hidden}.p-dialog.p-confirmdialog{.p-dialog-content{gap:.5rem;.p-confirmdialog-icon.mdi{height:auto;width:auto}}}.p-button{&.p-button-icon-only{padding:var(--p-button-padding-y) var(--p-button-padding-x);&:after{height:0}}}.p-inputgroup{width:auto;.p-button:first-child:not(:only-child){border-right-color:transparent}.p-button:not(:first-child):not(:last-child){border-left-color:transparent;border-right-color:transparent}.p-button:last-child:not(:only-child){border-left-color:transparent}}.p-inputnumber-input{width:1px!important}.p-tieredmenu{min-width:auto}.p-select-clear-icon{margin-top:-.4rem}#roster-app{.subgrid{grid-template-rows:subgrid}.subgrid,.subgrid-cols{display:grid;grid-template-columns:subgrid}.planner-shell{margin-bottom:1rem}.planner-main-col,.planner-shell{display:flex;flex-direction:column;min-height:0}.planner-main-col{gap:.5rem;min-width:0}.planner-banner{align-items:center;background:var(--ej-brand-subtle);border:1px solid var(--ej-brand-border-subtle);border-radius:var(--ej-radius);color:var(--ej-brand);display:flex;gap:.625rem;padding:6px 6px 6px 12px}.planner-banner>.mdi{font-size:1rem}.planner-banner .planner-banner-title{font-size:.85rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.planner-banner .planner-banner-crumb{color:var(--ej-fg-strong);flex:1;font-size:.88rem;font-weight:600;letter-spacing:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.planner-banner .p-inputgroup{margin-left:auto}.planner-card{background:var(--ej-surface);border:1px solid var(--ej-border);border-radius:var(--ej-radius);box-shadow:var(--ej-shadow);display:flex;flex:1 1 auto;min-height:0;overflow:hidden}.planner-scroll{flex:1;min-height:0;min-width:0;overflow:auto}.planner-grid{--col-gap:22px;align-items:stretch;background:var(--ej-surface);column-gap:var(--col-gap);display:grid;grid-template-columns:minmax(220px,1fr) max-content max-content max-content max-content;min-width:720px}.r-row.event-row-prominent{background:var(--ej-brand-subtle);border-bottom:1px solid var(--ej-brand-border-subtle);min-height:52px}.r-row.event-row-prominent>.r-comp,.r-row.event-row-prominent>.r-dur,.r-row.event-row-prominent>.r-name,.r-row.event-row-prominent>.r-time{padding-bottom:12px;padding-top:12px}.r-row.event-row-prominent .strong{color:var(--ej-fg-strong);font-size:1.05rem}.r-row.event-row-prominent[data-rail]:before{width:4px}.event-row-tools .p-inputgroup{background:var(--ej-surface);border-radius:var(--p-button-border-radius)}.col-headers,.loc-group>.pos-group,.planner-grid>.loc-group,.pos-group>.position-block,.position-block>.shift-group{display:grid;grid-column:1/-1;grid-template-columns:subgrid}.col-headers{align-items:center;background:var(--ej-surface-2);border-bottom:1px solid var(--ej-border);box-shadow:0 1px 0 var(--ej-border);color:var(--ej-fg-subtle);column-gap:var(--col-gap);font-size:.66rem;font-weight:600;letter-spacing:.06em;min-height:30px;padding:0 14px;position:sticky;text-transform:uppercase;top:0;z-index:2}.col-headers .roster-tools .p-inputgroup{background:var(--ej-surface);border-radius:var(--p-button-border-radius);width:auto}.col-headers .roster-tools .p-button{height:24px}.col-headers>.col-header{align-items:center;display:inline-flex;gap:.25rem;min-width:0}.col-headers>.col-header.right{justify-content:flex-end;text-align:right}.r-row{align-items:center;column-gap:var(--col-gap);display:grid;grid-column:1/-1;grid-template-columns:subgrid;min-height:36px;position:relative}.r-row>.r-comp,.r-row>.r-dur,.r-row>.r-name,.r-row>.r-time{padding:5px 0}.r-row>.r-name{padding-left:calc(var(--row-indent, 0)*20px + 14px)}.r-row>.r-comp{padding-right:14px}.r-name{align-items:center;color:var(--ej-fg-strong);display:inline-flex;gap:8px;min-width:0}.r-name .strong{font-weight:700}.r-name .desc{color:var(--ej-fg-subtle);font-size:.82rem;font-weight:400}.r-time{align-items:center;color:var(--ej-fg-strong);display:inline-flex;font-size:.85rem;font-variant-numeric:tabular-nums;gap:6px;justify-content:flex-end;white-space:nowrap}.r-time>.mdi{color:var(--ej-fg-subtle);font-size:.9rem}.r-dur{min-width:60px;text-align:right}.r-comp,.r-dur{color:var(--ej-fg-strong);font-size:.85rem;font-variant-numeric:tabular-nums;white-space:nowrap}.r-comp{align-items:center;display:inline-flex;gap:6px;justify-content:flex-end;min-width:88px}.r-comp.warn{color:var(--ej-warning)}.r-comp.warn .mini-bar>span{background:var(--ej-warning)}.r-comp.danger{color:var(--ej-danger)}.r-comp.danger .mini-bar>span{background:var(--ej-danger)}.r-tools{align-items:center;display:flex;justify-content:flex-end;padding-right:14px}.mini-bar{background:var(--ej-border);border-radius:999px;height:5px;overflow:hidden;position:relative;width:26px}.mini-bar>span{background:var(--ej-success);border-radius:inherit;inset:0 auto 0 0;position:absolute}.chev{color:var(--ej-fg-subtle);cursor:pointer;display:inline-flex;font-size:1.05rem;line-height:1;text-align:center;transition:transform var(--ej-duration) var(--ej-ease);width:14px}.chev.open{transform:rotate(90deg)}.chev.hidden{visibility:hidden}.grip{align-items:center;color:var(--ej-fg-subtle);cursor:grab;display:inline-flex;font-size:1.05rem;line-height:1;opacity:0;transition:opacity var(--ej-duration) var(--ej-ease)}.r-row:hover .grip{opacity:1}.grip:active{cursor:grabbing}.grip.disabled{cursor:not-allowed;opacity:.25!important}.idx{background:var(--ej-surface-2);border-radius:3px;color:var(--ej-fg-subtle);font-size:.7rem;font-variant-numeric:tabular-nums;font-weight:500;line-height:1.4;min-width:1.5rem;padding:1px 5px;text-align:center}.r-row[data-rail]:before{background:var(--rail-color);bottom:0;content:"";left:0;pointer-events:none;position:absolute;top:0;width:3px;z-index:2}.r-row[data-rail=warn]{--rail-color:var(--ej-warning)}.r-row[data-rail=danger]{--rail-color:var(--ej-danger)}.r-row[data-rail=success]{--rail-color:var(--ej-success)}.r-row[data-rail=info]{--rail-color:var(--ej-info)}.r-row[data-rail=brand]{--rail-color:var(--ej-brand)}.r-row.drop-valid{background:rgba(10,207,151,.06)}.r-row.drop-warn{background:rgba(255,195,90,.08)}.r-row.drop-invalid{background:rgba(250,92,124,.06)}.r-row.clickable{cursor:pointer}.r-row.clickable:hover{background:var(--ej-surface-2)}.r-row.clickable:focus-visible{background:var(--ej-surface-2);box-shadow:inset 0 0 0 2px var(--ej-focus-ring);outline:0}.event-row{background:var(--ej-surface);border-bottom:1px solid var(--ej-border)}.event-row .strong{font-size:.9rem}.location-row{background:var(--ej-surface-2);border-bottom:1px solid var(--ej-border);border-top:1px solid var(--ej-border);box-shadow:0 1px 0 var(--ej-border);position:sticky;top:30px;z-index:1}.location-row .strong{color:var(--ej-brand);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}.location-row.clickable:hover{filter:brightness(.97)}.position-row{background:var(--ej-surface);border-top:1px solid var(--ej-border-subtle)}.location-row+.pos-group>.position-block:first-child>.position-row{border-top:0}.shift-row{background:var(--ej-surface);border-top:1px dashed var(--ej-border-subtle)}.shift-group>.position-block.has-shifts>.shift-row:first-child,.shift-group>.shift-row:first-child{border-top:1px solid var(--ej-border-subtle)}.ej-avatar,.shift-row:hover{background:var(--ej-surface-2)}.ej-avatar{align-items:center;border-radius:50%;color:var(--ej-fg-strong);display:inline-flex;flex-shrink:0;font-weight:700;justify-content:center;letter-spacing:-.02em}.ej-avatar.ring-male{box-shadow:inset 0 0 0 1.5px var(--ej-gender-male)}.ej-avatar.ring-female{box-shadow:inset 0 0 0 1.5px var(--ej-gender-female)}.ej-avatar-empty{align-items:center;background:transparent;border:1px dashed var(--ej-border-strong);border-radius:50%;color:var(--ej-fg-subtle);display:inline-flex;flex-shrink:0;justify-content:center}.ej-avatar-empty .mdi{font-size:.85em;line-height:1}.who{align-items:center;color:var(--ej-fg-strong);display:inline-flex;font-size:.85rem;gap:6px;min-width:0}.who a{color:inherit;text-decoration:none}.who a:hover{color:var(--ej-link-blue);text-decoration:underline}.who .unassigned,.who .user-link{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.who .age{color:var(--ej-fg-subtle);font-size:.75rem}.who .unassigned{color:var(--ej-fg-subtle);font-style:italic}.who .partner-tag{color:var(--ej-fg-subtle);font-size:.8rem}.status-dot{flex-shrink:0}.on-air-dot,.status-dot{border-radius:50%;display:inline-block;height:8px;width:8px}.on-air-dot{flex:0 0 auto}.on-air-dot--live{background:var(--ej-danger)}.on-air-dot--waiting{background:var(--ej-warning)}.on-air-dot--off{background:var(--ej-border-strong)}.search-panel{border:1px solid var(--ej-border);border-radius:var(--ej-radius);box-shadow:var(--ej-shadow);flex-direction:column;isolation:isolate;min-height:0;overflow:hidden}.search-panel,.search-panel .sp-head{background:var(--ej-surface);display:flex}.search-panel .sp-head{align-items:center;border-bottom:1px solid var(--ej-border-subtle);gap:8px;padding:10px 10px 10px 12px}.search-panel .sp-modes{background:var(--ej-surface-2);border-radius:999px;display:inline-flex;flex:1;padding:3px}.search-panel .sp-mode{align-items:center;background:transparent;border:0;border-radius:999px;color:var(--ej-fg);cursor:pointer;display:inline-flex;flex:1;font-family:inherit;font-size:.78rem;font-weight:600;gap:6px;justify-content:center;padding:6px 12px;transition:background var(--ej-duration) var(--ej-ease),color var(--ej-duration) var(--ej-ease)}.search-panel .sp-mode:hover{color:var(--ej-fg-strong)}.search-panel .sp-mode.active{background:var(--ej-surface);box-shadow:0 1px 2px rgba(0,0,0,.08);color:var(--ej-brand)}.search-panel .sp-mode:focus-visible{box-shadow:0 0 0 2px var(--ej-focus-ring);outline:0}.search-panel .sp-mode .mdi{font-size:.95rem}.search-panel .sp-close{align-items:center;background:transparent;border:0;border-radius:var(--ej-radius);color:var(--ej-fg-subtle);cursor:pointer;display:inline-flex;height:28px;justify-content:center;width:28px}.search-panel .sp-close:hover{background:var(--ej-surface-2);color:var(--ej-fg-strong)}.search-panel .sp-search{align-items:center;display:flex;gap:6px;padding:10px 10px 8px}.search-panel .sp-body{display:flex;flex:1;flex-direction:column;gap:4px;min-height:0;overflow:auto;padding:4px 10px 10px}.search-panel .sp-paginator{background:var(--ej-surface);border-radius:0;border-top:1px solid var(--ej-border);bottom:-10px;margin:4px -10px -10px;padding:3px 6px;position:sticky;z-index:1}.search-panel .sp-paginator .p-paginator{background:transparent;padding:0}.search-panel .sp-paginator .p-paginator-first,.search-panel .sp-paginator .p-paginator-last,.search-panel .sp-paginator .p-paginator-next,.search-panel .sp-paginator .p-paginator-page,.search-panel .sp-paginator .p-paginator-prev{border-radius:4px;font-size:.78rem;height:24px;min-width:24px}.search-panel .sp-paginator .p-select{align-items:center;height:24px}.search-panel .sp-paginator .p-select .p-select-label{font-size:.78rem;padding:2px 6px}.search-panel .sp-meta{align-items:center;border-bottom:1px solid var(--ej-border-subtle);color:var(--ej-fg-subtle);display:flex;font-size:.7rem;font-weight:600;justify-content:space-between;letter-spacing:.05em;padding:8px 14px;text-transform:uppercase}.search-panel .sp-meta-hint{align-items:center;display:inline-flex;font-weight:400;gap:4px;letter-spacing:normal;text-transform:none}.search-panel .sp-meta-hint .mdi{font-size:.85rem}.search-panel .sp-empty{align-items:center;color:var(--ej-fg-subtle);display:flex;flex-direction:column;font-size:.85rem;gap:6px;padding:24px 0;text-align:center}.search-panel .sp-empty .mdi{font-size:1.6rem;opacity:.4}}.drop-floater{border-radius:var(--ej-radius);box-shadow:0 4px 12px rgba(0,0,0,.18);color:#fff;font-family:var(--ej-font-sans,inherit);font-size:.72rem;font-weight:700;line-height:1.1;padding:6px 12px;pointer-events:none;position:fixed;white-space:nowrap;z-index:1200}.drop-floater:after{border:6px solid transparent;border-bottom:0;content:"";height:0;left:18px;position:absolute;top:100%;width:0}.drop-floater--valid{background:var(--ej-success)}.drop-floater--valid:after{border-top-color:var(--ej-success)}.drop-floater--warn{background:var(--ej-warning);color:var(--ej-fg-strong)}.drop-floater--warn:after{border-top-color:var(--ej-warning)}.drop-floater--invalid{background:var(--ej-danger)}.drop-floater--invalid:after{border-top-color:var(--ej-danger)}.cursor-pointer{cursor:pointer}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.w-24rem{width:24rem}.w-25rem{width:25rem}.w-30rem{width:30rem}.w-50rem{width:50rem}.min-h-2rem{min-height:2rem}.min-h-80vh{min-height:80vh}.h-1rem{height:1rem}.w-1rem{width:1rem}.fs-2rem{font-size:2rem}.p-dialog.forms-outlined-dialog .p-dialog-header{border-bottom:1px solid var(--ej-border-subtle);gap:10px;padding:14px 16px 12px}.p-dialog.forms-outlined-dialog .p-dialog-content{padding:14px 16px 16px}.p-dialog.forms-outlined-dialog .p-dialog-footer{align-items:center;background:var(--ej-surface-2);border-top:1px solid var(--ej-border-subtle);display:flex;gap:8px;justify-content:flex-end;padding:10px 16px}.forms-outlined-dialog .ej-modal-title{display:flex;flex:1;flex-direction:column;min-width:0}.forms-outlined-dialog .ej-modal-title-text{color:var(--ej-fg-strong);font-size:.98rem;font-weight:700;line-height:1.2}.forms-outlined-dialog .ej-modal-title-sub{color:var(--ej-fg-subtle);font-size:.78rem;font-weight:400;margin-top:2px}.forms-outlined-dialog .ej-modal-title-icon{color:var(--ej-brand);flex-shrink:0;font-size:1.15rem;line-height:1}.forms-outlined .form-section+.form-section{margin-top:18px}.forms-outlined .form-section-head{align-items:center;color:var(--ej-fg-subtle);display:flex;font-size:.66rem;font-weight:700;gap:8px;letter-spacing:.08em;margin-bottom:10px;text-transform:uppercase}.forms-outlined .form-section-head:after{background:var(--ej-border-subtle);content:"";flex:1;height:1px}.forms-outlined .form-section-body{display:flex;flex-direction:column;gap:10px}.forms-outlined .ej-field{display:flex;flex-direction:column;gap:5px;min-width:0}.forms-outlined .ej-field-label{align-items:center;color:var(--ej-fg-subtle);display:inline-flex;font-size:.64rem;font-weight:700;gap:4px;letter-spacing:.06em;line-height:1;text-transform:uppercase}.forms-outlined .ej-field-label .req{color:var(--ej-danger);font-weight:700}.forms-outlined .ej-field-hint{color:var(--ej-fg-subtle);font-size:.72rem;line-height:1.3}.forms-outlined .ej-field-error{align-items:center;color:var(--ej-danger);display:inline-flex;font-size:.72rem;gap:4px;line-height:1.3;margin-top:2px}.forms-outlined .ej-field-error .mdi{flex-shrink:0;font-size:.85rem;line-height:1}.forms-outlined .ej-field-row{align-items:stretch;display:flex;gap:6px}.forms-outlined .ej-field-row>:first-child{flex:1;min-width:0}.forms-outlined .p-datepicker .p-datepicker-input,.forms-outlined .p-inputtext,.forms-outlined .p-select,.forms-outlined .p-textarea{background:#fff;border:1px solid var(--ej-border);border-radius:var(--ej-radius);box-shadow:none;box-sizing:border-box;color:var(--ej-fg-strong);font-family:inherit;font-size:.85rem;padding:.45rem .625rem;transition:border-color var(--ej-duration) var(--ej-ease),background var(--ej-duration) var(--ej-ease)}.forms-outlined .p-textarea{line-height:1.4;min-height:64px;resize:vertical}.forms-outlined .p-datepicker .p-datepicker-input:not(:disabled):hover:not(:focus):not(.p-invalid),.forms-outlined .p-inputtext:not(:disabled):hover:not(:focus):not(.p-invalid),.forms-outlined .p-select:not(.p-disabled):hover:not(.p-focus):not(.p-invalid),.forms-outlined .p-textarea:not(:disabled):hover:not(:focus):not(.p-invalid){border-color:var(--ej-border-strong)}.forms-outlined .p-datepicker .p-datepicker-input:focus,.forms-outlined .p-inputtext:focus,.forms-outlined .p-select.p-focus,.forms-outlined .p-textarea:focus{background:#fff;border-color:var(--ej-brand);box-shadow:none;outline:none}.forms-outlined .p-datepicker.p-invalid .p-datepicker-input,.forms-outlined .p-inputtext.p-invalid,.forms-outlined .p-select.p-invalid,.forms-outlined .p-textarea.p-invalid{border-color:var(--ej-danger)}.forms-outlined .p-datepicker{background:transparent;border:0;width:100%}.forms-outlined .p-datepicker .p-datepicker-input{width:100%}.forms-outlined .ej-switch-row{align-items:center;cursor:pointer;display:flex;gap:12px;justify-content:space-between;padding:8px 12px;user-select:none}.forms-outlined .ej-switch-row.is-disabled{cursor:not-allowed;opacity:.6}.forms-outlined .ej-switch-row+.ej-switch-row{border-top:1px solid var(--ej-border-subtle)}.forms-outlined .ej-switch-text{display:flex;flex-direction:column;gap:2px;min-width:0}.forms-outlined .ej-switch-name{color:var(--ej-fg-strong);font-size:.85rem;font-weight:500;line-height:1.2}.forms-outlined .ej-switch-desc{color:var(--ej-fg-subtle);font-size:.75rem;line-height:1.3}.forms-outlined .form-toggle-list{border:1px solid var(--ej-border);border-radius:var(--ej-radius);display:flex;flex-direction:column}.forms-outlined .btn{align-items:center;border:0;border-radius:var(--ej-radius);cursor:pointer;display:inline-flex;font-family:inherit;font-size:.85rem;font-weight:600;gap:6px;line-height:1.2;padding:.45rem .875rem;transition:background var(--ej-duration) var(--ej-ease),color var(--ej-duration) var(--ej-ease),border-color var(--ej-duration) var(--ej-ease),opacity var(--ej-duration) var(--ej-ease)}.forms-outlined .btn:disabled{cursor:not-allowed;opacity:.55}.forms-outlined .btn .mdi{line-height:1}.forms-outlined .btn-primary{background:var(--ej-brand);color:#fff}.forms-outlined .btn-primary:not(:disabled):hover{background:var(--ej-brand-hover)}.forms-outlined .btn-text{background:transparent;color:var(--ej-fg-subtle)}.forms-outlined .btn-text:not(:disabled):hover{background:var(--ej-surface-2);color:var(--ej-fg-strong)}.forms-outlined .btn-danger{background:transparent;color:var(--ej-danger);margin-right:auto}.forms-outlined .btn-danger:not(:disabled):hover{background:rgba(250,92,124,.1)}.top-1rem{top:1rem}.z-index-1{z-index:1}.max-h-calc-100vh-2rem{max-height:calc(100vh - 2rem)}