/* Ported verbatim from ZenVagt-Preview.html (UI reference, D21). Overrides live in app.css. */
:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#202a3d;background:#f4f6fa;font-size:16px;--ink:#182033;--muted:#6b7485;--accent:#d8394b;--border:#e5e9f0}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;transition:background .15s,box-shadow .15s}button:disabled{opacity:.55;cursor:wait}[hidden]{display:none!important}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #798ae9;outline-offset:3px}a{color:inherit}h1,h2,h3,p{margin:0}h1{font-size:2rem;letter-spacing:-.045em;font-weight:700}h2{font-size:1.1rem;letter-spacing:-.02em}h3{font-size:1.1rem}small{font-size:.8rem}.muted{color:var(--muted);font-size:.875rem;line-height:1.6}.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.13em;line-height:1.5;color:var(--muted)}.brand{text-decoration:none;display:flex;align-items:center;font-weight:800;font-size:1.85rem;letter-spacing:-.07em;color:white}.brand span{font-weight:400}.brand i{display:inline-block;width:7px;height:7px;background:#f25365;margin:16px 0 0 5px;border-radius:2px}.primary,.secondary,.text-button,.icon-button{border-radius:7px;padding:.7rem 1rem;min-height:42px;font-weight:600;font-size:.875rem;line-height:1.4}.primary{color:white;background:var(--accent);border:1px solid var(--accent);box-shadow:0 2px 3px #d8394b15}.primary:hover{background:#b82b3d}.secondary{border:1px solid #dce1e9;background:white;color:#344057}.secondary:hover{background:#f1f3f8}.text-button{border:0;color:var(--muted);background:none}.icon-button{border:1px solid var(--border);background:white;font-size:1.35rem;padding:.2rem .75rem;line-height:1}.wide{width:100%}.compact{padding:.4rem .75rem;min-height:35px}.shell{display:flex;min-height:100vh}.sidebar{width:222px;flex-shrink:0;background:var(--ink);color:#b9c2d4;padding:30px 18px 20px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:20}.sidebar .brand{margin:0 12px 52px}.side-caption{color:#748097;margin:0 13px 15px}.nav-item{display:flex;align-items:center;gap:12px;width:100%;border:0;background:none;color:#bbc3d3;padding:13px 14px;text-align:left;font-size:.875rem;font-weight:500;border-radius:7px;margin:4px 0}.nav-item span{font-size:1.2rem;width:20px;text-align:center}.nav-item:hover{background:#ffffff08}.nav-item.active{background:#ffffff0d;color:#fff;box-shadow:inset 3px 0 #ec4b5e}.nav-item b{margin-left:auto;font-size:.75rem;background:#d8394b;padding:2px 5px;border-radius:4px}.side-bottom{margin-top:auto;padding-top:32px}.account{display:flex;gap:10px;align-items:center;border-top:1px solid #ffffff13;padding:20px 8px 10px}.account strong{font-size:.875rem;color:#edf0f6;display:block}.account small{display:block;color:#8793a9;margin-top:3px}.avatar{width:36px;height:36px;background:#e7ebfa;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;color:#5361a8;flex-shrink:0}.account .avatar{background:#303b51;color:#dde4f4}.logout{margin-left:54px;border:0;background:none;color:#b7c1d4;font-size:.8rem;padding:5px 0}.version-label{display:block;color:#647087;letter-spacing:.12em;font-size:.65rem;margin:32px 10px 0}.main-wrap{margin-left:222px;flex:1;min-width:0}.topbar{height:72px;background:white;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;padding:0 36px;font-size:.875rem;color:#738093}.topbar #breadcrumb{color:#3e495e}.topbar #breadcrumb span{color:#bbc1cb;margin:0 12px}main{max-width:1800px;margin:auto;padding:32px 36px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}.page-heading .eyebrow{margin-bottom:6px}.heading-actions{display:flex;gap:10px}.overview{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:18px;margin-bottom:26px}.duty-card,.summary-card{border-radius:10px;padding:23px 24px;min-height:150px;background:white;border:1px solid var(--border)}.duty-card{background:var(--ink);color:white;display:flex;justify-content:space-between;position:relative;overflow:hidden}.duty-card .eyebrow{color:#a9b4c8;margin-bottom:12px}.duty-card h2{font-size:1.45rem;margin-bottom:9px}.duty-card p:last-child{font-size:.875rem;color:#b8c5df}.duty-icon{align-self:center;width:60px;height:60px;border-radius:50%;border:1px solid #ffffff25;background:#ffffff07;display:flex;align-items:center;justify-content:center;font-size:2.1rem;color:#f66d7d;flex-shrink:0}.summary-card .eyebrow{margin-bottom:12px}.stat{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}.stat strong{font-size:1.95rem;line-height:1}.stat span{font-size:.875rem;color:var(--muted)}.summary-card h3{margin:6px 0 8px}.calendar-card{background:white;border:1px solid var(--border);border-radius:10px;overflow:hidden}.calendar-toolbar{padding:19px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.date-nav,.view-controls{display:flex;align-items:center;gap:10px}.date-nav h2{min-width:155px;font-size:1rem;text-align:center}.date-nav .icon-button{height:35px;min-height:35px;width:32px;padding:0}.segmented{display:flex;background:#f1f3f8;border:1px solid #e6eaf2;border-radius:7px;padding:3px}.segmented button{font-size:.875rem;border:0;color:#6d7687;padding:6px 13px;background:transparent;border-radius:4px}.segmented button.selected{background:white;box-shadow:0 1px 4px #17213915;color:#242f43;font-weight:600}.view-controls input{padding:7px;border:1px solid var(--border);border-radius:6px;width:145px;font-size:.875rem;color:#526078}.calendar-scroll{overflow-x:auto}.plan-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:750px}.plan-table th,.plan-table td{border-top:1px solid var(--border);border-right:1px solid var(--border);vertical-align:top;text-align:left}.plan-table tr>*:last-child{border-right:0}.plan-table th:first-child,.plan-table td:first-child{width:185px;position:sticky;left:0;background:white;z-index:2}.plan-table th{padding:14px 12px;background:#fbfcfe;font-size:.875rem;font-weight:500;color:#6c788e}.plan-table th .day-num{font-size:1.1rem;color:#29364d;margin-top:5px;font-weight:600;display:block}.plan-table th.is-today{background:#fef2f4;color:#c42f43}.plan-table th.is-today .day-num{color:#c42f43}.plan-table th.weekend-day,.plan-table td.weekend-day{background:#f8f9fc}.plan-table td{height:91px;padding:10px 8px}.person-label{display:flex;align-items:center;gap:9px;padding:6px 4px}.person-label .person-name{font-weight:600;font-size:.875rem;display:block}.person-label small{color:var(--muted);margin-top:3px;display:block;font-size:.75rem}.cell-button{width:100%;border:0;background:transparent;text-align:left;min-height:64px;border-radius:5px;padding:2px;display:flex;flex-direction:column;gap:5px}.cell-button:hover{background:#e8edfa60;box-shadow:inset 0 0 0 1px #bec8e650}.chip{padding:6px 8px;font-size:.8rem;font-weight:600;border-radius:4px;display:block;line-height:1.3;white-space:normal;overflow-wrap:anywhere}.chip.duty{background:#e9edff;color:#4159b7;border-left:3px solid #7084df}.chip.weekend{background:#e8f4f2;color:#187565;border-left:3px solid #43a18d}.chip.holiday{background:#fff0de;color:#956018;border-left:3px solid #dcaa50}.chip.away{background:#ffecef;color:#b23e57}.chip.location{color:#657286;background:#f2f4f8}.empty-cell{color:#c3cad6;padding:6px}.events-row td{height:44px;padding:8px;font-size:.8rem;background:#fcfcfe}.event-chip{color:#93652e;background:#fff6e6;padding:4px;border-radius:4px;font-size:.75rem}.month-table{min-width:2100px}.month-table th:first-child,.month-table td:first-child{width:185px}.month-table th{font-size:.75rem;padding:8px 6px}.month-table td{padding:7px 3px;height:80px}.month-table .chip{font-size:.75rem;padding:5px 3px;border-left-width:2px}.calendar-footer{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;align-items:center;border-top:1px solid var(--border);padding:15px 20px}.legend{display:flex;gap:17px;flex-wrap:wrap;font-size:.75rem;color:#68758a}.legend span{display:flex;align-items:center;gap:6px}.legend-dot{height:8px;width:8px;border-radius:2px;background:#7084df}.legend-dot.weekend{background:#43a18d}.legend-dot.holiday{background:#dcaa50}.legend-dot.away{background:#d87c91}.bottom-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:20px;margin-top:24px}.panel{background:white;border:1px solid var(--border);border-radius:10px;padding:23px}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.panel-heading h2 span{color:var(--muted);font-weight:400;margin-left:7px}.panel>p.muted{margin:-7px 0 18px}.distribution-row{display:grid;grid-template-columns:135px 1fr 35px;gap:12px;align-items:center;margin:18px 0;font-size:.875rem}.distribution-row strong{text-align:right}.bar-track{height:7px;background:#f0f2f7;border-radius:5px;overflow:hidden}.bar-fill{height:100%;background:#6377d1;border-radius:5px}.team-row,.list-row{display:flex;justify-content:space-between;align-items:center;padding:15px 0;gap:12px;border-top:1px solid #eef0f5}.team-row:first-child,.list-row:first-child{border-top:0}.team-person{display:flex;gap:10px;align-items:center;font-size:.875rem;font-weight:600}.team-row .chip{min-width:90px;text-align:center}.list-row strong{display:block;font-size:.95rem;margin-bottom:5px}.list-row small{display:block;line-height:1.6;color:var(--muted);font-size:.875rem}.list-actions{display:flex;gap:8px;flex-shrink:0}.empty-state{padding:35px 20px;text-align:center;color:var(--muted);font-size:.95rem}.audit-details{font-size:.8rem;color:#647087;max-width:650px;white-space:pre-wrap;overflow-wrap:anywhere}.main-footer{display:flex;justify-content:space-between;padding:0 36px 24px;color:#8993a5;font-size:.75rem}.main-footer b{border:1px solid #d3d9e3;padding:1px 4px;border-radius:3px;margin-left:4px}.demo-label{font-size:.65rem;letter-spacing:.06em;color:#f8ba6c;background:#ffffff06;padding:10px;border-radius:5px;margin-bottom:12px}.login-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:white}.login-brand{background:var(--ink);color:white;padding:54px 64px;display:flex;flex-direction:column;justify-content:space-between;min-height:100vh}.login-brand h1{font-size:2.7rem;line-height:1.2;margin:18px 0 24px}.login-brand .eyebrow{color:#f47483}.login-brand div>p:last-child{color:#b9c4da;font-size:1rem;line-height:1.7}.login-brand>small{color:#7e8da8;letter-spacing:.15em}.login-form{display:flex;align-items:center;justify-content:center;padding:40px}.login-box{width:360px}.login-box h2{font-size:1.85rem;margin:12px 0}.login-box>.muted{margin-bottom:30px}.login-footer{border-top:1px solid var(--border);margin-top:35px;padding-top:20px;color:#8390a5;font-size:.8rem}label{display:block;font-size:.875rem;font-weight:600;margin-bottom:18px}label input,label select,label textarea{display:block;width:100%;margin-top:7px;padding:11px 12px;border:1px solid #dbe1ea;border-radius:6px;background:white;color:#263149;font-weight:400;min-height:44px}label textarea{min-height:90px;resize:vertical}label.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;line-height:1.5}label.check input{display:inline-block;width:18px;min-height:18px;margin:2px 0}.notice{background:#fff4e4;border:1px solid #f1d5b0;border-radius:7px;color:#7e5725;font-size:.875rem;line-height:1.6;padding:14px;margin-bottom:20px}.error{color:#be2e43;font-size:.875rem;margin:16px 0;line-height:1.5}.error:empty{display:none}dialog{border:1px solid var(--border);border-radius:14px;padding:0;width:min(530px,calc(100vw - 24px));max-height:90vh;color:#29364d;box-shadow:0 20px 90px #18203330}dialog::backdrop{background:#101a3055;backdrop-filter:blur(3px)}dialog form{padding:26px}.modal-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.modal-heading h2{font-size:1.35rem}.modal-heading button{border:0}.modal-actions{display:flex;justify-content:flex-end;gap:9px;border-top:1px solid var(--border);padding-top:20px;margin-top:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.detail-block{padding:16px 0;border-top:1px solid var(--border)}.detail-block h3{font-size:.875rem;margin-bottom:8px}.detail-block .chip{display:inline-block;margin:0 10px 10px 0}.toast{position:fixed;bottom:24px;right:24px;max-width:min(400px,calc(100vw - 32px));background:#182033;color:white;padding:15px 22px;border-radius:9px;box-shadow:0 6px 30px #18203335;z-index:50;font-size:.875rem}.toast.is-error{background:#b42f44}.danger{color:#b42f44}.detail-action{margin:6px 6px 0 0}.roster-grid{display:flex;gap:15px;align-items:center}.roster-grid strong{margin:0}.loading{padding:35px;color:var(--muted)}
.mobile-only{display:none}@media(max-width:800px){.mobile-only{display:block}.topbar{gap:10px}}
@media(min-width:1600px){main{padding:40px 48px}.overview{gap:24px}.plan-table td{height:108px}.person-label{padding-top:15px}}
@media(max-width:1150px){.sidebar{width:190px;padding-left:12px;padding-right:12px}.main-wrap{margin-left:190px}main{padding:26px 24px}.topbar{padding:0 24px}.overview{gap:12px}.duty-card,.summary-card{padding:20px 18px}.duty-icon{display:none}.calendar-toolbar{padding:15px}.bottom-grid{gap:14px}.panel{padding:18px}.distribution-row{grid-template-columns:110px 1fr 30px}.view-controls input{display:none}}
@media(max-width:800px){.sidebar{position:static;width:100%;padding:16px;flex-direction:row;align-items:center;gap:20px;flex-wrap:wrap}.sidebar .brand{margin:0;font-size:1.5rem}.side-caption,.side-bottom{display:none}.sidebar nav{display:flex;overflow-x:auto;gap:4px;flex:1}.nav-item{padding:10px;white-space:nowrap;width:auto;font-size:.8rem}.nav-item span{display:none}.shell{flex-direction:column}.main-wrap{margin:0}.topbar{height:52px;padding:0 20px;font-size:.75rem}main{padding:22px 18px}.page-heading h1{font-size:1.8rem}.overview{grid-template-columns:1fr 1fr}.duty-card{grid-column:1/-1;min-height:125px}.duty-icon{display:flex}.summary-card{min-height:135px}.bottom-grid{grid-template-columns:1fr}.calendar-toolbar{align-items:flex-start}.date-nav{gap:7px}.date-nav h2{min-width:130px}.view-controls{margin-left:auto}.calendar-footer>.muted{display:none}.login-shell{grid-template-columns:1fr}.login-brand{min-height:auto;padding:24px 30px}.login-brand div,.login-brand>small{display:none}.login-form{padding:45px 24px}.main-footer{padding:5px 18px 20px}}
@media(max-width:500px){.sidebar{gap:12px}.sidebar nav{flex-basis:100%;width:100%}.topbar #breadcrumb{display:none}.topbar{justify-content:flex-end}.page-heading{gap:12px;align-items:flex-end}.heading-actions{flex-direction:column;gap:6px}.heading-actions button{min-height:36px;padding:7px 10px;font-size:.8rem}.overview{gap:10px}.summary-card{padding:16px 13px}.summary-card h3{font-size:1rem}.eyebrow{font-size:.65rem}.calendar-toolbar{gap:12px}.view-controls{width:100%;justify-content:flex-end}.date-nav{width:100%;justify-content:space-between}.date-nav h2{font-size:.875rem}.legend{gap:10px;font-size:.7rem}.panel-heading{flex-wrap:wrap}.list-row{align-items:flex-start;flex-wrap:wrap}.list-actions{flex-wrap:wrap}.form-grid{grid-template-columns:1fr;gap:0}.login-brand .brand{font-size:1.5rem}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.day-picker{background:none;border:0;color:inherit;padding:0;width:100%;text-align:left;font:inherit;min-height:50px;border-radius:4px}.day-picker:hover{box-shadow:0 0 0 2px #8999c650}.holiday-name{display:block;font-size:.75rem;margin-top:5px;line-height:1.35}.plan-table th.is-today{background:#edf1ff;color:#4159b7}.plan-table th.is-today .day-num{color:#4159b7}.plan-table th.holiday-day,.plan-table td.holiday-day,.events-row td.holiday-day{background:#fff0f1}.plan-table th.holiday-day,.plan-table th.holiday-day .day-num{color:#b5233b}.holiday-notice{color:#b5233b;background:#fff0f1;border-radius:6px;padding:10px 12px;margin-bottom:18px;font-size:.875rem}.legend-dot.holiday{background:#c63750}

/* Whole-cell registration colors. A holiday always colors its entire column. */
.plan-table td.shift-D{background:#ccf5b5}.plan-table td.shift-W{background:#ffeb45}.plan-table td.vacation-cell{background:#ffdce5}
.plan-table th.holiday-day,.plan-table td.holiday-day,.events-row td.holiday-day{background:#ef3e43;color:#fff}
.plan-table th.holiday-day .day-num,.plan-table th.holiday-day .holiday-name{color:#fff}
.plan-table td.shift-D .chip,.plan-table td.shift-W .chip,.plan-table td.vacation-cell .chip,.plan-table td.holiday-day .chip{background:transparent;border:0;color:#233122;padding:6px 4px}
.plan-table td.holiday-day .chip,.plan-table td.holiday-day .empty-cell{color:#fff}
.plan-table td .cell-button{min-height:70px;height:100%}.plan-table td .cell-button:hover{background:#ffffff25;box-shadow:inset 0 0 0 2px #17203330}
.legend-dot.duty{background:#ccf5b5}.legend-dot.weekend{background:#ffeb45}.legend-dot.away{background:#ffdce5}.legend-dot.holiday{background:#ef3e43}
.chip.duty{background:#ccf5b5;color:#233122;border-left-color:#7bbb55}.chip.weekend{background:#ffeb45;color:#514700;border-left-color:#d8bd00}.chip.away{background:#ffdce5;color:#882d43}.chip.holiday{background:#ef3e43;color:#fff;border-left-color:#c12227}

/* Large registration labels centered in the full calendar cell. */
.plan-table tbody tr:not(.events-row) td:not(:first-child){vertical-align:middle;padding:0;height:96px}
.plan-table td .cell-button{display:flex;align-items:center;justify-content:center;text-align:center;min-height:96px;width:100%;height:100%;gap:4px;padding:6px}
.plan-table .cell-button .chip{font-size:2.5rem;font-weight:800;line-height:1.1;text-align:center;padding:0;background:transparent;border:0}
.plan-table .cell-button .chip.away{font-size:1.5rem}.plan-table .cell-button .chip.holiday{font-size:1.2rem}
.plan-table.month-table .cell-button .chip{font-size:2rem}.plan-table.month-table .cell-button .chip.away{font-size:1rem}.plan-table.month-table .cell-button .chip.holiday{font-size:.875rem}
.plan-table .cell-button .empty-cell{font-size:1.2rem;text-align:center;padding:0}

.distribution-scroll{overflow-x:auto}.distribution-table{width:100%;border-collapse:collapse;font-size:.875rem;min-width:370px}.distribution-table thead th{font-size:.8rem;color:#647087;font-weight:600;text-align:center;padding:10px 8px;border-bottom:1px solid #e5e9f0;line-height:1.4}.distribution-table thead th:first-child{text-align:left}.distribution-table tbody th{font-weight:500;text-align:left;padding:16px 8px 16px 0}.distribution-table tbody td{text-align:center;font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums;padding:16px 8px}.distribution-table tbody tr+tr{border-top:1px solid #eef0f5}.distribution-table [data-count-kind="D"]{color:#3d702b}.distribution-table [data-count-kind="H"]{color:#c22931}.distribution-table [data-count-kind="W"]{color:#806a00}

.bottom-grid{grid-template-columns:1fr}
