.sv-week-board { position:relative; display:flex; flex-direction:column; width:100%; height:100%; min-width:0; min-height:0; font-family:var(--ds-font); color:var(--ds-brand-ink); background:var(--ds-surface); --sv-week-row-height:76px; }
.sv-week-board button { font:inherit; cursor:pointer; }
.sv-week-tools { display:flex; align-self:center; align-items:center; justify-content:center; margin:0 2px; padding:2px 0; border-radius:var(--ds-r-md); background:var(--ds-tint); min-width:0; }
.sv-week-tools button.sv-week-mode { background:transparent; border:0; box-shadow:none; padding:3px 2px; border-radius:var(--ds-r-sm); font-size:var(--ds-text-av); line-height:14px; font-weight:var(--ds-w-medium); color:var(--ds-ink-2); white-space:nowrap; }
.sv-week-tools button.sv-week-mode[aria-pressed="true"] { background:var(--ds-surface); box-shadow:0 1px 2px color-mix(in srgb,var(--ds-ink) 15%,transparent); color:var(--ds-ink); }
.sv-week-error { flex:none; padding:3px 8px; font-size:var(--ds-text-sm); }
.sv-week-error button.sv-week-retry { background:transparent; border:0; box-shadow:none; color:inherit; }
.sv-week-scroll { flex:1; min-height:0; overflow:auto; background:var(--ds-surface); }
.sv-week-head,.sv-week-row { display:grid; grid-template-columns:var(--sv-week-columns); }
.sv-week-head { position:sticky; top:0; z-index:5; background:var(--ds-canvas); border-bottom:1px solid var(--ds-border); min-height:40px; }
.sv-week-board button.sv-week-day { display:flex; flex-direction:column; align-items:stretch; justify-content:center; gap:4px; min-width:0; padding:6px 7px; border:0; border-radius:0; box-shadow:none; background:transparent; text-align:left; color:inherit; }
.sv-week-board button.sv-week-day:is(:hover,:active) { border:0; box-shadow:none; background:var(--ds-paper-hover); }
.sv-week-header-text { display:flex; flex-wrap:wrap; align-items:baseline; gap:0 4px; min-width:0; font-size:var(--ds-text-caps); line-height:15px; text-align:left; }
.sv-week-header-text strong { font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); white-space:nowrap; }
.sv-week-header-text em { font-size:var(--ds-text-av); padding:0 3px; border-radius:var(--ds-r-block); background:color-mix(in srgb,var(--ds-info) 15%,var(--ds-surface)); color:var(--ds-focus); font-style:normal; }
.sv-week-header-text small { font-size:var(--ds-text-av); white-space:nowrap; }
.sv-week-board button.sv-week-day.sv-week-weekend { background:var(--ds-board-offhours); padding-left:4px; padding-right:4px; }
.sv-week-board button.sv-week-day.sv-week-today { background:color-mix(in srgb,var(--ds-info) 7%,var(--ds-surface)); }
.sv-week-week-title { display:flex; align-items:center; padding:8px 10px; font-size:var(--ds-text-sm); }
.sv-week-row { position:relative; height:var(--sv-week-row-height); grid-template-rows:minmax(0,1fr); border-bottom:1px solid var(--ds-border); box-sizing:border-box; }
.sv-week-person { grid-column:1; grid-row:1; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:3px; border-right:1px solid var(--ds-border); background:var(--ds-wash); padding:3px 2px; min-height:0; }
.sv-week-person .sp-av { width:36px; height:36px; border-radius:var(--ds-r-full); background:var(--ds-brand-ink); color:var(--ds-action-fg); font-size:var(--ds-text-sm); display:flex; align-items:center; justify-content:center; overflow:hidden; flex-shrink:0; }
.sv-week-person .sp-av img { width:100%; height:100%; object-fit:cover; }
.sv-week-person>b { max-width:60px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:var(--ds-text-caps); line-height:13px; font-weight:var(--ds-w-semi); }
.sv-week-cell { grid-row:1; display:flex; align-items:flex-start; gap:6px; min-width:0; min-height:0; position:relative; padding:4px 6px; border-right:1px solid var(--ds-border); box-sizing:border-box; overflow:hidden; }
.sv-week-weekend { background:var(--ds-board-offhours); }
.sv-week-today { background:color-mix(in srgb,var(--ds-info) 7%,var(--ds-surface)); }
.sv-week-chips { flex:1; display:flex; flex-direction:column; gap:1px; min-width:0; }
/* Outrank the shared board button rules, including their hover/active states. */
.sv-week-board button.sv-week-chip { display:flex; align-items:center; justify-content:flex-start; gap:3px; flex:none; width:100%; min-width:0; height:18px; padding:0 5px; box-sizing:border-box; border:0; border-radius:var(--ds-r-block); background:var(--sp-bg); color:var(--sp-ink); text-align:left; font:var(--ds-w-semi) var(--ds-text-sm)/18px var(--ds-font); box-shadow:none; outline:none; touch-action:none; }
.sv-week-board button.sv-week-chip:is(:hover,:active) { border:0; background:var(--sp-bg); color:var(--sp-ink); box-shadow:none; outline:none; filter:brightness(1.04); }
.sv-week-chip>span { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sv-week-list .sv-week-chips>button.sv-week-chip { height:clamp(14px,calc((var(--sv-week-row-height) - 23px) / 3),18px); line-height:clamp(14px,calc((var(--sv-week-row-height) - 23px) / 3),18px); }
.sv-week-board button.sv-week-chip[data-week-draggable="true"] { cursor:grab; }
.sv-week-board button.sv-week-more { display:block; flex:none; width:100%; height:12px; min-height:0; border:0; border-radius:0; box-shadow:none; background:transparent; padding:0; color:color-mix(in srgb,var(--ds-info-ink) 80%,var(--ds-canvas)); font:var(--ds-w-semi) var(--ds-text-av)/12px var(--ds-font); text-align:left; }
.sv-week-board button.sv-week-more:is(:hover,:active) { background:transparent; box-shadow:none; text-decoration:underline; }
.sv-week-load { flex:0 0 64px; width:64px; display:flex; flex-direction:column; gap:3px; padding-top:1px; font-size:var(--ds-text-caps); line-height:14px; }
.sv-week-load>b { font-size:var(--ds-text-base); line-height:16px; font-weight:var(--ds-w-semi); }
.sv-week-load small { font-size:var(--ds-text-av); line-height:13px; white-space:nowrap; }
.sv-week-load small.sv-week-excess { white-space:normal; overflow-wrap:anywhere; }
.sv-week-meter { display:block; height:3px; background:var(--ds-grid-half); border-radius:var(--ds-r-block); overflow:hidden; flex:none; }
.sv-week-meter>i { display:block; height:100%; border-radius:inherit; background:var(--ds-info-ink); }
.sv-week-over { color:var(--ds-st-late-ink); }
.sv-week-over>i { background:var(--ds-st-late); }
.sv-week-total { grid-row:1; grid-column:9; min-width:0; min-height:0; padding:5px 9px; display:flex; flex-direction:column; justify-content:center; gap:5px; font-size:var(--ds-text-sm); background:var(--ds-wash); }
.sv-week-total b>span { font-size:var(--ds-text-caps); font-weight:var(--ds-w-regular); }
.sv-week-total small { font-size:var(--ds-text-av); white-space:nowrap; }
.sv-week-leave { grid-row:1; align-self:end; min-width:0; z-index:2; pointer-events:none; margin:0 0 3px; padding:3px 8px; background:var(--sp-bg); color:var(--sp-ink); border-radius:var(--ds-r-block); font-size:var(--ds-text-sm); font-weight:var(--ds-w-semi); line-height:18px; box-sizing:border-box; }
.sv-week-leave>span { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.sv-week-has-leave { padding-bottom:28px; }
.sv-week-full-leave { padding:0; }
.sv-week-target { box-shadow:inset 0 0 0 2px var(--ds-focus); }
.sv-week-overlap { box-shadow:inset 0 0 0 2px var(--ds-ink-3); }
.sv-week-board button.sv-week-clash,.sv-week-board button.sv-week-clash:is(:hover,:active) { outline:2px dashed var(--ds-ink-3); outline-offset:1px; }
.sv-week-board button.sv-week-preview,.sv-week-board button.sv-week-source { opacity:.5; outline:1px dashed var(--ds-info-ink); }
.sv-week-board button.sv-week-source { opacity:.35; pointer-events:none; }
.sv-week-board button.sv-week-chip:focus-visible { outline:2px solid var(--ds-focus); outline-offset:1px; }
.sv-week-drop-label { position:absolute; z-index:4; bottom:0; left:3px; max-width:calc(100% - 6px); background:var(--ds-surface); color:var(--ds-ink-3); padding:1px 4px; border-radius:var(--ds-r-block); font-size:var(--ds-text-av); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; pointer-events:none;border:0 }
.sv-week-axis { display:block; position:relative; flex:none; height:12px; margin-top:2px; font-size:var(--ds-text-av); line-height:12px; color:color-mix(in srgb,var(--ds-info-ink) 75%,var(--ds-canvas)); }
.sv-week-axis>span { position:absolute; white-space:nowrap; }
.sv-week-timeline .sv-week-cell { gap:6px; padding:4px 6px; }
.sv-week-timeline-content { flex:1; align-self:stretch; min-width:0; min-height:0; display:flex; flex-direction:column; }
/* Keep the complete key outside the scrolling track, even with crowded bars. */
.sv-week-track-scroll { flex:1; min-height:6px; overflow:auto; scrollbar-width:thin; }
.sv-week-track { position:relative; width:100%; min-width:18px; background:linear-gradient(to right,var(--ds-info-soft) var(--sv-week-open),var(--ds-wash) var(--sv-week-open),var(--ds-wash) var(--sv-week-close),var(--ds-info-soft) var(--sv-week-close)); border-radius:0; overflow:hidden; }
.sv-week-tick { position:absolute; top:0; bottom:0; width:1px; background:var(--ds-grid-hour); }
.sv-week-bar-slot { position:absolute; box-sizing:border-box; height:18px; min-width:18px; }
.sv-week-board button.sv-week-bar { height:18px; padding:0 3px; font-size:var(--ds-text-caps); line-height:18px; }
.sv-week-bar .sv-week-number { flex:0 0 12px; font-size:var(--ds-text-caps); line-height:18px; text-align:center; color:var(--ds-action-fg); text-shadow:0 1px 2px var(--ds-ink); }
.sv-week-board button.sv-week-number-only { gap:0; }
.sv-week-number-only>span { display:none; }
.sv-week-activity-slot { position:absolute; height:4px; }
.sv-week-board button.sv-week-activity { height:4px; padding:0; border-radius:0; }
.sv-week-key { flex:none; display:grid; margin-top:2px; }
.sv-week-board button.sv-week-key-chip,.sv-week-board button.sv-week-key-chip:is(:hover,:active) { background:transparent; box-shadow:none; border:0; border-radius:0; color:var(--ds-brand-ink); padding:0; height:12px; font-size:var(--ds-text-av); font-weight:var(--ds-w-medium); line-height:12px; }
.sv-week-key-chip .sv-week-number { flex:0 0 14px; border-radius:var(--ds-r-tag); background:var(--sp-bg); color:var(--sp-ink); font-size:var(--ds-text-av); text-align:center; }
.sv-week-timeline .sv-week-has-leave { padding-bottom:28px; }
.sv-week-cell.sv-week-empty-weekend { padding:0; }
.sv-week-legend { flex:none; display:flex; flex-wrap:wrap; align-items:center; gap:5px 16px; min-height:30px; padding:5px 10px; border-top:1px solid var(--ds-border); background:var(--ds-surface); font-size:var(--ds-text-caps); line-height:16px; }
.sv-week-legend>span { display:inline-flex; align-items:center; gap:5px; }
.sv-week-legend i { width:9px; height:9px; border-radius:var(--ds-r-full); background:var(--sp-bg); }
.sv-week-pop { position:fixed; z-index:60; width:310px; max-width:calc(100vw - 16px); max-height:320px; overflow:auto; padding:28px 12px 12px; box-sizing:border-box; border:1px solid var(--ds-board-band-line); border-radius:var(--ds-r-lg); background:var(--ds-action-fg); box-shadow:0 10px 35px color-mix(in srgb,var(--ds-ink) 20%,transparent); display:flex; flex-direction:column; gap:6px; }
.sv-week-pop button.sv-week-chip { height:25px; }
.sv-week-pop button.sv-week-close { position:absolute; right:5px; top:2px; background:transparent; border:0; box-shadow:none; font-size:var(--ds-text-d2); color:var(--ds-brand-ink); }

/* List | Timeline: stacked so each label is readable (12 px) inside the photo column. */
.sv-week-tools{flex-direction:column;align-items:stretch;gap:2px;padding:3px}
.sv-week-tools button.sv-week-mode{font-size:var(--ds-text-sm);line-height:18px;padding:2px 6px}

/* Locked in Simpro: a small padlock and a not-allowed cursor; dragging says why and offers Unlock. */
.sv-week-locked{cursor:not-allowed!important;padding-right:16px!important;position:relative;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round'%3E%3Crect x='3.5' y='7' width='9' height='7' rx='1.5'/%3E%3Cpath d='M5.5 7V5a2.5 2.5 0 0 1 5 0v2'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 3px center!important;background-size:11px 11px!important}
