/* Shared presentation for the front page, management pages and editors. */
:root{--bg:#f5f6f8;--surface:#fff;--ink:#202630;--muted:#596574;--accent:#0066cc;--line:#e1e6ed;--radius:12px}
body{font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft JhengHei",sans-serif;background:var(--bg);color:var(--ink)}
#shell{grid-template-columns:176px minmax(0,1fr)}
#shell>aside{padding:24px 14px;background:#f0f2f5;border-right:1px solid var(--line)}
#shell>main{max-width:1480px;padding:24px 28px;margin:0 auto}
main>header{display:flex;align-items:flex-start;justify-content:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:16px}
main>header>div:first-child{flex:0 1 260px;min-width:0}
main h1{font-size:27px;line-height:1.25;letter-spacing:0;margin:0 0 6px}
main h2{font-size:18px;line-height:1.4;letter-spacing:0}
#fetchStatus{font-size:12px;margin:0;max-width:55ch}
.brand{font-size:21px}.brand span{display:none}.pageNavigation{display:none}
#shops{gap:4px}body.compactControls #shops button{padding:8px 10px;font-size:13px;min-height:38px;border-radius:8px}
#shops button.active{background:#e0ebfa;color:#164f8d;box-shadow:none}
.asideNote{line-height:1.7;font-size:11px;margin-top:20px}
body.compactControls .actions{gap:6px;align-items:center;margin:0;padding:0}
.updateActions{gap:6px}.workspaceNav{gap:4px;margin:0 0 16px}
body.compactControls #shell .workspaceNav button{font-size:14px;padding:8px 12px;min-height:40px}
.workspaceNav button[aria-pressed=true]{color:var(--accent);border-bottom-color:var(--accent)}
body.compactControls :is(#shell,#dialog) button{border-radius:8px;font-weight:500;box-shadow:none}
body.compactControls :is(#shell,#dialog) .quiet{background:#fff;border-color:#dce2e9;color:#344150}
body.compactControls :is(#shell,#dialog) .quiet:hover{background:#f0f4f9;border-color:#c4d1e1}
body.compactControls :is(#shell,#dialog) button:disabled{opacity:.55;cursor:default}
body.compactControls :is(#shell,#dialog) :is(input,select,textarea){border-radius:8px;border-color:#dce2e9;background:#fff}
body.compactControls :is(#shell,#dialog) :is(button,input,select,textarea,summary,a):focus-visible{outline:2px solid #0066cc;outline-offset:3px}
.card,.rosterDisclosure,.compactSection,.diagnosticDisclosure,.history{padding:18px 20px;border-radius:12px;box-shadow:none;border-color:var(--line)}
.rosterVenueToolbar{margin-bottom:12px}.rosterDisclosure .staffCard{margin:0}
.staffHead{display:flex;justify-content:flex-start;align-items:baseline;gap:10px;flex-wrap:wrap}
.staffHead h2{font-size:18px;margin:0}.staffHead>.small{font-size:12px;color:var(--muted)}
#staffRoster>p.muted{margin:6px 0 0;font-size:12px;max-width:85ch}
.rosterFilters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin:14px 0 12px}
.rosterFilters>.rosterSearch{flex:0 1 380px;width:380px;max-width:100%;margin:0;background:#f7f8fa}
.rosterFilters>label{margin:0;gap:4px;font-size:12px}.rosterStatus{min-width:160px}
.staffList.rosterColumns{display:grid;grid-template-columns:repeat(var(--roster-columns,1),minmax(0,1fr));gap:0 20px;align-items:start;overflow:visible;max-height:none;padding:0}
.staffColumn{display:flex;flex-direction:column;min-width:0;max-width:600px}
body[data-page] .staffColumn>.staffFold{grid-column:auto;max-width:100%;min-width:0;width:100%;padding:4px 0;border-bottom:1px solid var(--line)}
.staffList.rosterColumns .staffColumn>.staffFold[open]{grid-column:auto;max-width:100%}
body.compactControls #shell .staffFold>summary{display:flex;align-items:center;justify-content:flex-start;gap:8px;padding:3px 2px;min-height:42px;font-size:14px;line-height:1.45}
.staffFold>summary .maidAvatar{width:32px;height:32px;flex-basis:32px;margin:0}
.staffFold>summary .staffName{font-weight:600;min-width:0;max-width:170px;overflow-wrap:anywhere}
body.compactControls .staffFold>summary .staffMeta{margin:0;font-size:12px;line-height:1.5;min-width:0;overflow-wrap:anywhere;flex:0 1 auto}
.staffFold[open]>summary{margin-bottom:4px}
body .staffExpanded{display:grid;grid-template-columns:minmax(0,1fr) 216px;max-width:426px;gap:12px;padding:4px 2px 8px;box-sizing:border-box;align-items:start}
.staffInfo{gap:5px}.staffIdentity{margin:0;gap:6px}.staffIdentity .personLink{font-size:13px;font-weight:600}
.staffInfo>.small{font-size:12px;line-height:1.55!important;color:var(--muted)}
.staffVerifiedDate{display:block;white-space:nowrap;font-size:11px;color:var(--muted)}
.staffExpanded>.foldActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:0}
body.compactControls #shell .staffExpanded>.foldActions>button{width:100%;padding:6px 8px;font-size:12px;min-height:36px;white-space:normal;line-height:1.4}
#staffRoster>p[role=status]{font-size:12px;margin:10px 0 0}
.staffCandidates{margin:16px 0 0;padding-top:12px}.staffCandidates>.staffRow{padding:10px 0;font-size:13px}
.calendarCard{padding:18px 16px}.calendarHead{gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.calendarTools{gap:6px;margin-left:0}.calendarSummary{margin:0 0 10px;font-size:12px}
.closedDaysDisclosure{margin:0 0 12px}.closedDaysDisclosure>summary{font-size:13px;line-height:1.5}
.weekdays{font-size:12px;padding-bottom:8px}.day{padding:6px;min-height:116px}
body.compactControls #shell .day .shift{background:#edf3fb;color:#204b7f;padding:5px 6px;font-size:12px;border-radius:6px;line-height:1.4;text-align:left}
.shift span{font-size:11px;color:#305c8d}.dayShiftList{gap:4px}.dayMore{font-size:11px}
.below{margin-top:14px}.compactSection>summary{font-size:14px}.foldSection>summary{font-size:13px}
.rosterDates{gap:6px}.rosterDates button{font-size:12px}.empty{padding:20px 8px;font-size:13px}
.moreActions>div{width:220px;padding:6px;border-radius:10px;box-shadow:0 12px 32px #18283a1a;border-color:var(--line)}
body.compactControls #shell .moreActions>div>button{padding:8px 10px;min-height:36px;font-size:13px;text-align:left;border:0;border-radius:6px}
dialog{width:min(960px,calc(100vw - 32px));max-width:960px;max-height:92dvh;padding:24px;border-radius:16px;box-shadow:0 18px 60px #17253633}
.dialogHead{gap:12px;margin-bottom:16px;align-items:center}.dialogHead h2{font-size:20px;margin:0;line-height:1.4}
#dialogBody>p{margin-bottom:12px}#dialogBody>p.small{font-size:13px;line-height:1.65}
#dialog label{font-size:13px;gap:4px;margin:8px 0}.formGrid{gap:10px 16px;grid-template-columns:repeat(2,minmax(0,1fr))}
#dialog .formGrid>label{margin:0}#dialog .formGrid>label>input:not([type=checkbox]),#dialog label>textarea{width:100%}
.reviewEditorActions,.foldActions{gap:6px}.reviewEditorActions{margin-top:12px}
.settingsSection{padding:12px 0;margin:0;border-bottom:1px solid var(--line)}
.settingsSection p{margin:4px 0 6px;font-size:13px}.settingsSection a{overflow-wrap:anywhere}
div.settingsSection:has(>strong){display:grid;grid-template-columns:minmax(0,260px) auto;gap:4px 12px;align-items:center;justify-content:start;max-width:380px}
div.settingsSection:has(>strong)>strong,div.settingsSection:has(>strong)>p{grid-column:1}
div.settingsSection:has(>strong)>button{grid-column:2;grid-row:1/span 2;align-self:center}
.shopCategories,.shopTimeModes{padding:12px;margin:12px 0;border-radius:8px;border:1px solid var(--line)}
dialog:has(.settingsSection){max-width:760px}dialog:has(.shopEditor){max-width:740px}
.settingsSection>summary{font-size:14px;font-weight:600;cursor:pointer;line-height:1.6}
.checkLabel{gap:8px;line-height:1.5}.sourceText{font-size:12px;line-height:1.7;padding:12px;background:#f5f6f8;border-radius:8px}
.sourceImage{border-radius:8px}.imageResults td{padding:10px 6px}.imageDownload{font-size:12px}
.reviewEditor{padding:14px 0}.csvRow{border-radius:8px;padding:12px}.csvUpload,.csvFields{gap:10px}
.maidPickerList{gap:6px}.maidPickerItem{padding:8px 10px;font-size:13px;text-align:left}
footer{font-size:11px;color:var(--muted);padding:14px 0}.small,.muted{color:var(--muted)}
@media(max-width:800px){#shell>main{padding:20px}.staffHead>.small{font-size:11px}}
@media(max-width:650px){
 #shell{display:block}#shell>aside{padding:14px 12px 8px;border-right:0;border-bottom:1px solid var(--line)}
 #shell>main{padding:18px 12px;max-width:100%}main>header{gap:12px;margin-bottom:14px}main>header>div:first-child{flex:1 1 100%}
 main h1{font-size:25px}.brand{font-size:20px}.brand span,.asideNote,.navLabel{display:none}
 .pageNavigation{gap:6px;margin-bottom:10px}.pageNavigation a{min-height:44px;font-size:13px}
 #shops{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:6px}body.compactControls #shops button{min-height:44px;padding:8px 10px;white-space:nowrap}
 body.compactControls .actions{display:flex;flex-wrap:wrap;gap:6px}.actions button,.moreActions>summary{min-height:44px}
 body.compactControls #shell .workspaceNav button{min-height:44px;font-size:14px;padding:8px 10px}
 .card,.rosterDisclosure,.compactSection{padding:14px}.staffHead{gap:6px}.staffHead h2{font-size:18px}
 .rosterFilters{gap:10px;margin:12px 0}.rosterFilters>.rosterSearch{flex:1 1 100%;width:100%}.rosterFilters>label{width:100%}.rosterStatus{width:100%;min-height:44px}
 body.compactControls #shell .staffFold>summary{min-height:44px;font-size:14px}.staffFold>summary .staffName{max-width:140px}
 body .staffExpanded{grid-template-columns:minmax(0,1fr);max-width:none;gap:8px}.staffExpanded>.foldActions{width:min(100%,260px);justify-self:end}
 body.compactControls #shell .staffExpanded>.foldActions>button{min-height:44px;font-size:13px}
 .calendarCard{padding:14px 6px}.calendarHead{gap:8px}.calendarTools{flex-wrap:wrap;justify-content:flex-start;width:auto}
 .day{min-height:105px;padding:4px 2px}body.compactControls #shell .day .shift{font-size:11px;padding:4px 3px}.shift span{font-size:10px}
 dialog{width:calc(100vw - 16px);padding:18px 14px;border-radius:14px;max-height:94dvh}.dialogHead h2{font-size:18px}
 .formGrid{grid-template-columns:minmax(0,1fr);gap:10px}#dialog label{font-size:14px}.settingsSection p{font-size:13px}
 .moreActions>div{max-width:calc(100vw - 24px)}body.compactControls #shell .moreActions>div>button{min-height:44px}
 .reviewEditorActions{gap:6px}.reviewEditorActions button{min-height:44px}.csvFields{grid-template-columns:minmax(0,1fr)}
}

/* Past dates stay readable and interactive. */
.day.past{background:#f0f1f3;color:#626a75}
body.compactControls #shell .day.past .shift{background:#e4e7eb;color:#56606d}
.day.past .shift span{color:#596370}.day.past .maidAvatar{filter:grayscale(1)}
body.compactControls #shell .day.past .dateNumber{color:#626a75}.day.past .closedDayLabel{color:#626a75}

body.compactControls #shell .favoriteToggle{margin-left:auto;padding:3px 7px;min-height:28px;font-size:11px;flex-shrink:0;color:#616976}
.staffFold.favoriteMaid>summary{background:#fff6db;border-radius:8px}.staffFold.favoriteMaid .staffName{color:#78510b;font-weight:700}
body.compactControls #shell .favoriteToggle[aria-pressed=true]{background:#f6dfa2;border-color:#cfad56;color:#674600}
body.compactControls #shell .day .shift.favoriteMaid{background:#fff0c2;color:#6c4a0b;box-shadow:inset 0 0 0 1px #d4b86b;font-weight:700}
.day .shift.favoriteMaid span{color:#765719}
body.compactControls #shell .day.past .shift.favoriteMaid{background:#e8e4d9;color:#66604e;box-shadow:inset 0 0 0 1px #c5bda6}.day.past .shift.favoriteMaid span{color:#68604e}
@media(max-width:650px){body.compactControls #shell .favoriteToggle{min-height:44px}}

/* Shared task hierarchy and readable calendar alternatives. */
:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px}
#shell>aside{position:sticky;top:0;height:100dvh}.brand{margin-bottom:20px}main>header{align-items:center}
.workspaceNav{justify-content:flex-start!important}.workspaceNav button{flex:0 0 auto!important}
.calendarHead{gap:10px}.monthControls{display:flex;align-items:center;gap:4px}
body.compactControls #shell .monthControls button:last-child{width:auto;padding:6px 10px;font-size:13px}
.calendarViewSwitch{display:flex;gap:2px;padding:3px;background:#eef1f5;border-radius:9px}
body.compactControls #shell .calendarViewSwitch button{border:0;background:transparent;padding:5px 12px;min-height:30px;color:#596574}
body.compactControls #shell .calendarViewSwitch button[aria-pressed=true]{background:#fff;color:#174f89;box-shadow:0 1px 3px #17253618}
.calendarStatus{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 12px}.calendarStatus p{margin:0;font-size:12px}
.calendarLegend{display:flex;gap:12px;color:#596574}.calendarLegend span:before{content:'';display:inline-block;width:8px;height:8px;margin-right:5px;border-radius:3px}
.legendToday:before{background:#0066cc}.legendFavorite:before{background:#e7bd52}.legendPast:before{background:#9ba3ae}
.dayNoShifts{display:none}.calendarListMode .weekdays,.calendarListMode .outside{display:none}
.calendarListMode .calendar{display:block}.calendarListMode .day:not(.outside){display:grid;grid-template-columns:100px minmax(0,1fr);gap:6px 12px;min-height:68px;padding:12px;border:0;border-bottom:1px solid var(--line)}
.calendarListMode .dateNumber{grid-column:1;grid-row:1/span 4;align-self:start;font-size:0!important;text-align:left;min-height:36px}
.calendarListMode .dateNumber:after{content:attr(data-full-date);font-size:14px;font-weight:600}
.calendarListMode .dayShiftList{grid-column:2;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px}
body.compactControls #shell .calendarListMode .day .shift{font-size:14px;padding:9px 10px;min-height:48px;line-height:1.5}.calendarListMode .shift span{font-size:12px}
.calendarListMode .dayMore,.calendarListMode .closedDayLabel,.calendarListMode .dayNoShifts{grid-column:2;justify-self:start}.calendarListMode .dayNoShifts{display:block;font-size:13px;color:#626a75}
.calendarListMode .mobileOnly{display:none!important}.calendarListMode .dateNumber:focus-visible{outline-offset:0}
body.compactControls #shell .day.today .dateNumber{background:#0066cc;color:white;border-radius:7px}
body.initialLoading .actions,body.initialLoading .workspaceNav,body.initialLoading .calendarHead{pointer-events:none;opacity:.5}
#notice{display:flex;align-items:center;gap:12px;flex-wrap:wrap}#notice[hidden]{display:none}#notice button{font-size:13px}
.rosterFilters{padding:10px;background:#f7f8fa;border-radius:9px}.staffColumn{gap:0}.staffFold>summary:hover{background:#f3f6fa;border-radius:8px}
.rosterFilters{align-items:center}
.rosterFilters>label{display:flex;flex-direction:row;align-items:center;gap:10px;margin:0;white-space:nowrap}
.rosterFilters>.rosterSearch,.rosterFilters .rosterStatus{height:40px;min-height:40px;box-sizing:border-box}
@media(max-width:650px){.rosterFilters>label{justify-content:space-between;width:100%;gap:12px}.rosterFilters .rosterStatus{flex:1;min-width:0;width:auto}.rosterFilters>.rosterSearch,.rosterFilters .rosterStatus{height:44px;min-height:44px}}
body[data-page=front] .staffFold>summary:before{display:none}body[data-page=front] .staffFold>summary{cursor:default}.staffName[href]{text-decoration:none}.staffName[href]:hover{text-decoration:underline}
.dialogHead{position:sticky;top:-24px;background:white;padding:8px 0;z-index:5;border-bottom:1px solid var(--line)}
#dialog input:not([type=checkbox]):not([type=radio]),#dialog select,#dialog textarea{font-size:15px}
.reviewEditorActions{padding-top:12px;border-top:1px solid var(--line)}
@media(max-width:650px){
 #shell>aside{position:static;height:auto}.brand{margin-bottom:10px}.calendarHead{gap:8px}.calendarHead>.monthControls{width:100%}
 .calendarTools{margin-left:auto}.calendarViewSwitch{order:5}.calendarLegend{gap:10px}.calendarStatus{gap:6px 12px}
 .calendarListMode .day:not(.outside){grid-template-columns:76px minmax(0,1fr);padding:10px 6px;gap:6px 8px}
 .calendarListMode .dateNumber:after{font-size:13px}.calendarListMode .dayShiftList{grid-template-columns:minmax(0,1fr)}
 body.compactControls #shell .calendarViewSwitch button{min-height:40px}.calendarListMode .calendar{border-left:0;border-right:0}
 .calendarListMode .maidAvatar{width:26px;height:26px;flex-basis:26px}.dialogHead{top:-18px}#dialog input,#dialog select,#dialog textarea{font-size:16px!important}
 .actions{width:100%}.actions>#imageImportButton{order:-1}.rosterFilters{padding:8px}
}

.adminAccess{margin-left:auto;font-size:13px;white-space:nowrap}body.compactControls #shell .favoriteToggle:disabled{opacity:.6;cursor:default}@media(max-width:650px){.adminAccess{min-height:44px;display:inline-flex;align-items:center;margin-left:0}}

body.compactControls :is(#shell,#dialog) .dangerAction{color:#a32624;background:#fff2f1;border:1px solid #e5bdbb}.dangerAction:hover{background:#ffe5e3!important}
body.compactControls #shell .rosterFilters :is(.rosterSearch,.rosterStatus){height:40px;min-height:40px;margin:0}@media(max-width:650px){body.compactControls #shell .rosterFilters :is(.rosterSearch,.rosterStatus){height:44px;min-height:44px}}

body[data-public=true] .favoriteToggle,body[data-public=true] .pageNavigation,body[data-public=true] .adminAccess{display:none!important}

.day.today{scroll-margin-top:16px}
@media(min-width:651px){body.compactControls #shell .day.today{background:#f2f7ff;box-shadow:inset 0 0 0 2px #0066cc}body.compactControls #shell .day.today .dateNumber:after{content:" 今天";font-size:12px;font-weight:600}.calendarListMode .day.today .dateNumber:after{content:attr(data-full-date) " 今天"!important}}

.calendarListMode.hidePastDays .day.past{display:none}
.calendarHead button[aria-pressed="true"]{color:#005bb5;background:#eaf3ff}

/* Compact, aligned controls shared by both workspaces and all editors. */
:root{--focus:#0066cc;--control-height:38px}
*,*:before,*:after{box-sizing:border-box}button,input,select,textarea{font-variant-numeric:tabular-nums}
button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.calendarDataActions{position:relative;margin-left:auto}.calendarDataActions>summary{list-style:none;cursor:pointer;display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line);border-radius:8px;font-size:22px;background:white}.calendarDataActions>summary::-webkit-details-marker{display:none}
.calendarDataActions>div{position:absolute;right:0;top:calc(100% + 6px);z-index:20;display:grid;gap:6px;min-width:150px;padding:8px;background:white;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #17253618}.calendarDataActions>div>*{width:100%;text-align:left}
body.compactControls #shell .pastSwitch{display:inline-flex;align-items:center;gap:8px;background:transparent;border:0;padding:6px 0;min-height:38px;font-size:12px;color:var(--ink);white-space:nowrap}
.pastSwitch:after{content:'';width:36px;height:22px;border-radius:14px;background:#8793a2;box-shadow:inset 0 0 0 1px #0001;background-image:radial-gradient(circle at 11px 11px,#fff 8px,transparent 9px);flex-shrink:0}
.pastSwitch[aria-checked=true]:after{background-color:#0066cc;background-image:radial-gradient(circle at 25px 11px,#fff 8px,transparent 9px)}
body.compactControls #shell .favoriteToggle{width:36px;min-width:36px;min-height:36px;padding:0;border:0;background:transparent;font-size:23px;color:#846000;flex:0 0 36px;margin-left:auto}
.calendarListMode .dayShiftList{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));align-content:start}.calendarListMode .day{align-items:start}.calendarListMode .shift{min-width:0;overflow-wrap:anywhere}
form>.maidFilterChoice{display:inline-flex;align-items:center;gap:8px;width:auto;margin:4px 8px 4px 0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;vertical-align:middle}.maidFilterChoice input[type=checkbox]{flex-shrink:0}
#dialog .formGrid{align-items:start}#dialog .formGrid>label{margin:0;min-width:0}#dialog :is(input,select,textarea){max-width:100%}.settingsSection{min-width:0}.sourceText{overflow-wrap:anywhere;white-space:pre-wrap}
@media(max-width:650px){
 #shell>aside{padding:8px 12px}.brand{font-size:17px;margin-bottom:6px}#shops{scrollbar-width:thin;padding-bottom:3px}body.compactControls #shops button{min-height:40px;padding:6px 10px}
 #shell>main{padding:12px}main>header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:8px}main>header>div:first-child{min-width:0}main h1{font-size:21px;margin:0}main>header .adminAccess{margin:0;justify-self:end;min-height:40px}main>header .actions{grid-column:1/-1}body[data-page=front] #fetchStatus{display:none}
 .workspaceNav{margin-top:4px!important;margin-bottom:12px!important}.calendarCard{padding:12px 10px}.calendarHead{display:grid;grid-template-columns:minmax(0,1fr) auto 40px;gap:8px;align-items:center}
 .calendarHead>.monthControls{grid-column:1/-1;width:100%;justify-content:space-between}.monthControls input{min-width:0;width:auto;flex:1;max-width:170px}.calendarHead>.calendarViewSwitch{grid-row:2;grid-column:1;justify-self:start;order:initial}.calendarHead>.pastSwitch{grid-row:2;grid-column:2;justify-self:end}.calendarHead>.calendarDataActions{grid-row:2;grid-column:3;margin:0;width:auto}.calendarHead>#calendarVenueFilter{grid-row:3;grid-column:1}.calendarHead>#maidFilter{grid-row:3;grid-column:2/4;min-width:0}.calendarHead summary{font-size:12px}.calendarHead>.maidMultiFilter>summary{width:100%;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .calendarStatus{justify-content:space-between;gap:4px;margin:8px 0}.calendarLegend{gap:8px;font-size:11px}.closedDaysDisclosure{margin-bottom:8px}.calendarListMode .day:not(.outside){grid-template-columns:72px minmax(0,1fr);gap:6px;padding:10px 2px}.calendarListMode .dayShiftList{grid-template-columns:minmax(0,1fr)}.calendarListMode .dateNumber{white-space:normal;line-height:1.5}
 body.compactControls #shell :is(.pastSwitch,.favoriteToggle,.calendarDataActions>summary){min-height:44px}.staffHead{align-items:baseline}.staffHead h2{font-size:18px}.staffHead>.small{font-size:12px}.staffList.rosterColumns{gap:0 12px}.staffFold>summary .staffName{max-width:none;flex:1}.staffFold>summary .staffMeta{flex:0 1 120px;text-align:right;font-size:11px!important}.staffExpanded>.foldActions{width:100%;max-width:360px;justify-self:stretch}
 #dialog{width:calc(100vw - 12px);padding:14px 12px;max-height:96dvh}.dialogHead{top:-14px;gap:10px}.dialogHead h2{min-width:0;overflow-wrap:anywhere}#dialog .formGrid{gap:12px}.reviewEditorActions{position:sticky;bottom:-14px;background:white;padding:10px 0;z-index:4;display:flex;flex-wrap:wrap}.reviewEditorActions>button{flex:1 1 130px;min-height:44px}.multiDates{padding:10px!important}.dateTimeFields{gap:8px}.calendarDataActions>div{min-width:160px}.rosterFilters>label{gap:8px}.sourceText{max-height:30dvh;overflow:auto}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.calendarListMode .dateNumber{grid-row:1}.calendarListMode .dayShiftList{grid-row:1}
.calendarListMode .day .shift{display:block!important}
@media(max-width:650px){main>header>div:first-child{grid-column:1;grid-row:1}main>header>.adminAccess{grid-column:2;grid-row:1}.calendarListMode .dayMore.desktopOnly{display:inline-flex!important}.calendarListMode .day.today{box-shadow:none;border-radius:8px;background:#f2f7ff}.calendarListMode .day:not(.outside){min-height:64px}.calendarListMode .day .shift{min-height:50px}.calendarDataActions>summary{width:40px}}

/* Render every daily shift; limit cards only in the month grid. */
.calendarCard:not(.calendarListMode) .dayShiftList>.shift:nth-child(n+4){display:none!important}
.calendarListMode .dayMore{display:none!important}
.calendarCard.calendarListMode .dayMore.desktopOnly,.calendarCard.calendarListMode .dayMore.mobileOnly{display:none!important}

/* Closed dates without shifts occupy one compact row. */
.calendarListMode .day:has(>.closedDayLabel):not(:has(.shift)){min-height:52px;padding-top:8px;padding-bottom:8px;align-items:center;grid-template-rows:auto}
.calendarListMode .day:has(>.closedDayLabel):not(:has(.shift))>.dayShiftList,.calendarListMode .day:has(>.closedDayLabel):not(:has(.shift))>.dayNoShifts{display:none!important}
.calendarListMode .day:has(>.closedDayLabel):not(:has(.shift))>.closedDayLabel{grid-row:1;margin:0;align-self:center}
.calendarListMode .day:has(>.closedDayLabel):not(:has(.shift))>.dateNumber{align-self:center}

/* Daily list: clearly separated date sections with compact closed rows. */
.calendarListMode .calendar{background:#f3f5f8;padding:8px;border-radius:12px}
.calendarListMode .day:not(.outside){background:#fff;border:1px solid #dce2ea;border-radius:10px;margin-bottom:10px;padding:12px;gap:10px 14px}
.calendarListMode .day:not(.outside):last-child{margin-bottom:0}
body.compactControls #shell .calendarListMode .dateNumber{background:#edf2f8;color:#243b57;border-radius:8px;padding:8px;line-height:1.5;min-height:38px}
body.compactControls #shell .calendarListMode .day.today{border-color:#0066cc;background:#f4f8ff}
body.compactControls #shell .calendarListMode .day.today .dateNumber{background:#0066cc;color:#fff}
.calendarListMode .day.past{background:#f7f8fa}
.calendarListMode .day:has(>.closedDayLabel):not(:has(.shift)){display:flex;flex-wrap:wrap;gap:8px 14px;min-height:52px;padding:7px 12px}
.calendarListMode .day:has(>.closedDayLabel):not(:has(.shift))>.dateNumber{flex:0 0 100px}
@media(max-width:650px){.calendarListMode .calendar{padding:6px}.calendarListMode .day:not(.outside){padding:10px 8px;margin-bottom:8px;gap:8px}.calendarListMode .day:has(>.closedDayLabel):not(:has(.shift))>.dateNumber{flex-basis:72px}body.compactControls #shell .calendarListMode .dateNumber{padding:7px 5px}}

/* Past-date visibility takes precedence over compact closed-day layout. */
.calendarCard.calendarListMode.hidePastDays .calendar>.day.past{display:none!important}

main>header>div:first-child:has(.openingHours){display:grid;grid-template-columns:auto minmax(240px,1fr);column-gap:24px;align-items:start;flex:1 1 620px;min-width:0}
main>header>div:first-child>#shopTitle{grid-column:1;grid-row:1;margin:0}
.openingHours{grid-column:2;grid-row:1/3;display:grid;gap:5px;font-size:13px;line-height:1.5;border-left:1px solid #dce2ea;padding-left:20px;color:#475569}
.openingHoursRow{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}.openingHoursRow strong{color:#243b57}.openingHoursSource{font-size:11px}.openingHours small{font-size:11px;color:#68778b}
main>header>div:first-child>#fetchStatus{grid-column:1}
@media(max-width:850px){main>header>div:first-child:has(.openingHours){display:block}.openingHours{border-left:0;padding:8px 0 0;font-size:12px}.openingHoursRow{gap:3px 7px}}

.openingHours{position:static;height:auto;min-width:0;max-width:100%;background:transparent}.openingHoursRow span{overflow-wrap:normal}main>header{align-items:flex-start}
@media(max-width:850px){main>header>div:first-child:has(.openingHours){display:block;min-width:0}.openingHours{width:auto}}

body:not(.favoritesAuthenticated) .favoriteToggle,body:not(.favoritesAuthenticated) .legendFavorite{display:none!important}

.todayTable{width:100%;border-collapse:collapse;text-align:left}.todayTable th{background:#f1f4f8;color:#475569;font-size:13px}.todayTable th,.todayTable td{padding:10px 12px;border-bottom:1px solid #e1e6ed}.todayTable td:last-child{white-space:nowrap}.todayTable .favoriteMaid{background:#fff3cd}@media(max-width:650px){.todayTable th,.todayTable td{padding:8px 5px;font-size:13px}.todayTable button{padding:5px!important;text-align:left}}

.todayOverviewMode main>header>div:first-child,.todayOverviewMode main>header>.actions,.todayOverviewMode .workspaceNav{display:none!important}
.todayOverviewMode main>header{justify-content:flex-end;margin-bottom:8px}
.todayShopGroups{display:grid;gap:14px}.todayShopSection{border:1px solid #dce2ea;border-radius:12px;padding:14px}.todayShopHeading{display:flex;align-items:center;gap:12px;margin-bottom:10px;font-weight:600;font-size:17px}.todayShiftCards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}.todayShiftCard{display:flex;align-items:center;gap:10px;text-align:left;background:#edf4ff;color:#24476b;border:1px solid transparent;padding:10px;border-radius:9px;min-width:0}.todayShiftInfo{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}.todayShiftInfo>span{font-size:13px}.todayShiftCard.favoriteMaid{background:#fff0bd;border-color:#ddb85a}@media(max-width:650px){.todayShopSection{padding:10px}.todayShiftCards{grid-template-columns:repeat(2,minmax(0,1fr))}.todayShiftCard{padding:8px;gap:6px}.todayShiftCard .maidAvatar{width:28px;height:28px;flex-basis:28px}.todayShiftInfo{font-size:13px}}

/* Dense today overview: use available width rather than full-width shop rows. */
#todayOverview{padding:16px}#todayOverview>h2{margin:0 0 4px;font-size:21px}#todayOverview>p{margin:4px 0 12px}
.todayShopGroups{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;align-items:start}
.todayShopSection{padding:10px;border-radius:9px}.todayShopHeading{font-size:15px;margin-bottom:7px;justify-content:space-between}.todayShopSection>p{margin:4px 0;font-size:12px}
.todayShiftCards{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.todayShiftCard{padding:7px;gap:6px;border-radius:7px;min-height:46px}.todayShiftCard .maidAvatar{width:28px;height:28px;flex-basis:28px}.todayShiftInfo{font-size:13px;line-height:1.4;gap:1px}.todayShiftInfo>span{font-size:12px}
@media(min-width:1500px){.todayShopGroups{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:650px){#todayOverview{padding:10px}.todayShopGroups{grid-template-columns:minmax(0,1fr);gap:8px}.todayShiftCard{min-height:48px}.todayShopSection{padding:8px}}

.todayTimeline{display:grid;gap:10px}.todayTimeSection{display:grid;grid-template-columns:104px minmax(0,1fr);gap:12px;padding:10px 0;border-top:1px solid #e1e6ed}.todayTimeHeading{margin:0;padding:7px 0;color:#26456b;font-size:15px;font-variant-numeric:tabular-nums}.todayTimelineCards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px}.todayPersonTitle{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}.todayVenue{font-size:12px;color:#596b80;font-weight:400}.todayTimeSection .todayShiftCard{min-height:48px}
@media(max-width:650px){.todayTimeSection{grid-template-columns:70px minmax(0,1fr);gap:6px}.todayTimeHeading{font-size:13px}.todayTimelineCards{grid-template-columns:minmax(0,1fr)}.todayPersonTitle{gap:3px 6px}}

.todayMatrixScroll{overflow:auto;max-width:100%;max-height:calc(100dvh - 210px);border:1px solid #dce2ea;border-radius:10px}.todayMatrix{width:100%;min-width:1080px;border-spacing:0;table-layout:fixed;font-size:13px}.todayMatrix th,.todayMatrix td{padding:7px;vertical-align:top;border-right:1px solid #e1e6ed;border-bottom:1px solid #e1e6ed}.todayMatrix thead th{position:sticky;top:0;z-index:2;background:#edf2f8;text-align:center;color:#243b57;font-size:14px}.todayMatrix tr>th:first-child{position:sticky;left:0;background:#f4f6f9;width:90px;text-align:center;font-variant-numeric:tabular-nums;z-index:1}.todayMatrix thead th:first-child{z-index:3}.todayMatrix .todayShiftCard{width:100%;margin-bottom:5px;padding:6px;gap:5px;white-space:normal}.todayMatrix .todayShiftInfo{font-size:12px}.todayMatrix .todayShiftInfo>span{font-size:11px}.todayMatrix .maidAvatar{width:24px;height:24px;flex-basis:24px}.todayMatrix td>.muted{display:block;text-align:center;color:#b3bdc9}.todayMatrix tbody tr:last-child>*{border-bottom:0}
@media(max-width:650px){.todayMatrix{min-width:1100px}.todayMatrixScroll{max-height:calc(100dvh - 230px)}}

.todayShopPicker{margin:6px 0 10px;font-size:13px}.todayShopPicker>summary{display:inline-flex;cursor:pointer;padding:6px 10px;background:#edf2f8;border-radius:7px}.todayShopChoices{display:flex;flex-wrap:wrap;gap:6px 12px;padding:10px 0}.todayShopChoices .maidFilterChoice{margin:0}.todayMatrix{min-width:0}.todayMatrixScroll{max-height:none}.todayMatrix th,.todayMatrix td{padding:5px}.todayMatrix tr>th:first-child{width:70px}.todayMatrix .todayShiftCard{padding:5px;gap:4px;min-height:40px}.todayMatrix .maidAvatar{width:22px;height:22px;flex-basis:22px}.todayMatrix thead th{font-size:12px;overflow-wrap:anywhere}.todayMatrix .todayShiftInfo{font-size:12px}.todayMatrix .todayShiftInfo>span{font-size:11px;overflow-wrap:anywhere}
@media(max-width:850px){.todayMatrix{min-width:760px}.todayMatrixScroll{max-height:none}}

@media(min-width:851px){body.compactControls #shell .todayMatrix .todayShiftCard{padding:3px!important;min-height:30px!important;margin:0 0 3px!important;gap:3px;font-size:11px;line-height:1.15;border-radius:4px}.todayMatrix .todayShiftInfo{font-size:11px;line-height:1.15;gap:0}.todayMatrix .todayShiftInfo>span{font-size:10px;white-space:nowrap}.todayMatrix .maidAvatar{width:18px;height:18px;flex-basis:18px}.todayMatrix th,.todayMatrix td{padding:3px}.todayMatrix tbody th{font-size:12px}.todayOverviewMode #todayOverview{padding:12px}.todayOverviewMode main>header{min-height:0}.todayOverviewMode #todayOverview>p{margin:3px 0 7px}}

/* Today board — restrained timetable, clear type and quiet empty cells. */
body.todayOverviewMode{background:#f5f6f8}
.todayOverviewMode main>header{margin-bottom:8px;min-height:32px}
body.todayOverviewMode #todayOverview{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;padding:18px 20px;border:1px solid #e3e7ec;border-radius:14px;box-shadow:0 3px 14px rgba(24,40,62,.035)}
#todayOverview>h2{grid-column:1;grid-row:1;font-size:22px;letter-spacing:-.025em;line-height:1.35;color:#172536;margin:0;align-self:center}
#todayOverview>.todayShopPicker{grid-column:2;grid-row:1/3;margin:0;align-self:start;position:relative}
#todayOverview>.todayShopPicker>summary{background:#fff;border:1px solid #dce2e9;color:#33465b;border-radius:8px;padding:8px 12px;font-size:13px;list-style:revert}
.todayShopPicker[open] .todayShopChoices{position:absolute;right:0;top:42px;width:320px;max-width:80vw;z-index:6;padding:14px;background:#fff;border:1px solid #dce2e9;border-radius:12px;box-shadow:0 8px 28px rgba(24,40,62,.12)}
#todayOverview>p{grid-column:1;margin:0 0 7px;font-size:12px;color:#596a7c;line-height:1.4}
#todayOverview>.todayMatrixScroll{grid-column:1/-1;border-color:#e1e6ed;border-radius:10px;scrollbar-color:#b8c3d0 #f4f6f9}
#todayOverview>button{grid-column:2;justify-self:end;font-size:12px;padding:5px 10px!important;min-height:30px!important}
.todayMatrix{background:white}.todayMatrix thead th{padding:10px 5px;background:#f1f4f7;color:#26394d;font-size:13px;font-weight:600;line-height:1.4;border-right-color:#e8ecf1}
.todayMatrix tr>th:first-child{background:#f7f9fb;color:#4a5c70;width:82px;font-size:12px;font-weight:600;padding:9px 5px}
.todayMatrix td{padding:5px;border-right-color:#eef1f5;border-bottom-color:#e4e9ef}
body.compactControls #shell .todayMatrix .todayShiftCard{display:flex;align-items:center;min-height:34px!important;padding:4px!important;margin:0 0 3px!important;background:#fff;color:#203246;border:1px solid #e3e9f0;border-radius:6px;gap:5px;line-height:1.25;box-shadow:none}
body.compactControls #shell .todayMatrix .todayShiftCard:last-child{margin-bottom:0!important}
body.compactControls #shell .todayMatrix .todayShiftCard:hover{background:#f0f6ff;border-color:#93b8e2}
body.compactControls #shell .todayMatrix .todayShiftCard:focus-visible{outline:2px solid #1266c4;outline-offset:1px}
.todayMatrix .todayShiftInfo{font-size:12px;line-height:1.25;gap:1px}.todayMatrix .todayShiftInfo strong{font-weight:600}.todayMatrix .todayShiftInfo>span{color:#53667a;font-size:11px;white-space:normal;font-variant-numeric:tabular-nums}
.todayMatrix .maidAvatar{width:24px;height:24px;flex-basis:24px}
body.compactControls #shell .todayMatrix .todayShiftCard.favoriteMaid{background:#fff5d7;border-color:#dfc377}
@media(max-width:850px){body.todayOverviewMode #todayOverview{padding:12px;gap:6px}#todayOverview>h2{font-size:18px}#todayOverview>.todayShopPicker{grid-row:2;grid-column:1/-1;justify-self:start}#todayOverview>p{grid-row:3}.todayMatrix{min-width:960px}.todayMatrix tr>th:first-child{width:76px}.todayMatrix thead th{padding:10px 5px}body.compactControls #shell .todayMatrix .todayShiftCard{min-height:44px!important}.todayMatrixScroll{max-height:72dvh!important}}

@media(min-width:851px){.todayMatrix td{padding:2px 4px}.todayMatrix thead th{padding:8px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px}.todayMatrix tr>th:first-child{padding:6px 3px}body.compactControls #shell .todayMatrix .todayShiftCard{padding:2px!important;min-height:30px!important;margin-bottom:2px!important}.todayMatrix .todayShiftInfo{line-height:1.1;gap:0}.todayMatrix .todayShiftInfo>span{line-height:1.15}.todayMatrix .maidAvatar{width:22px;height:22px;flex-basis:22px}}

/* Calendar controls stay in place; only the schedule region scrolls. */
body.calendarWorkspaceMode{height:100dvh;overflow:hidden}
.calendarWorkspaceMode #shell{height:100dvh;overflow:hidden}
.calendarWorkspaceMode #shell>main{height:100dvh;min-height:0;min-width:0;display:flex;flex-direction:column;overflow:hidden}
.calendarWorkspaceMode main>header,.calendarWorkspaceMode .workspaceNav,.calendarWorkspaceMode #notice{flex-shrink:0}
.calendarWorkspaceMode .calendarCard{display:flex;flex-direction:column;flex:1 1 0;min-height:0;margin-bottom:0;overflow:hidden}
.calendarWorkspaceMode .calendarHead,.calendarWorkspaceMode .calendarStatus{flex-shrink:0}
.calendarScrollArea{min-width:0}
.calendarWorkspaceMode .calendarScrollArea{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:4px;scrollbar-color:#b8c3d0 #f4f6f9}
.calendarScrollArea:focus-visible{outline:2px solid #1266c4;outline-offset:2px}
.calendarWorkspaceMode main>footer{display:none}
@media(max-width:650px){.calendarWorkspaceMode #shell{display:flex;flex-direction:column}.calendarWorkspaceMode #shell>aside{flex-shrink:0;height:auto}.calendarWorkspaceMode #shell>main{height:auto;flex:1;min-height:0;padding-top:10px;padding-bottom:10px}.calendarWorkspaceMode main>header{margin-bottom:8px}.calendarWorkspaceMode .calendarScrollArea{padding-right:2px}}

.homeWorkspaceMode main>header>div:first-child,.homeWorkspaceMode main>header>.actions,.homeWorkspaceMode .workspaceNav{display:none!important}.homeWorkspaceMode main>header{justify-content:flex-end;margin-bottom:10px}.shopHomeGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}#shopHome>h1{margin:0 0 4px;font-size:26px}#shopHome>p{margin:4px 0 16px;font-size:13px}.shopHomeCard{background:#fff;border:1px solid #e0e6ed;border-radius:12px;padding:16px;display:flex;flex-direction:column;align-items:start}.shopHomeHeading{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.shopHomeHeading h2{font-size:18px;margin:0}.shopHomeClosed{font-size:12px;color:#a04438}.shopHomeHours{font-size:13px;line-height:1.7;margin:10px 0 4px;color:#34475b}.shopHomeCard>.small{margin:0 0 10px}.shopHomeLinks{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;margin:4px 0 14px}.shopHomeCard>button{margin-top:auto!important;min-height:36px!important;padding:6px 12px!important}@media(max-width:650px){.shopHomeGrid{grid-template-columns:minmax(0,1fr)}.shopHomeCard{padding:14px}.homeWorkspaceMode main>header{margin-bottom:8px}}

/* Reference-led visual theme: white canvas, segmented navigation, quiet gray summaries. */
:root{--bg:#fff;--surface:#fff;--ink:#1d1d1f;--muted:#68686f;--accent:#007aff;--line:#e8e8ed;--radius:18px}
body{background:#fff;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft JhengHei",sans-serif}
#shell{display:flex;flex-direction:column;min-height:100dvh}
#shell>aside{position:static;height:auto;width:100%;padding:16px max(24px,calc((100vw - 1320px)/2));background:#fff;border:0;border-bottom:1px solid #eeeef1;display:flex;flex-wrap:wrap;align-items:center;gap:14px 28px;flex-shrink:0}
#shell>aside .brand{margin:0;font-size:20px;font-weight:600;white-space:nowrap;color:#242426;text-decoration:none}
#shell>aside .navLabel,#shell>aside .asideNote{display:none}
#shops{display:flex;flex-wrap:wrap;gap:3px;background:#eeeef2;border-radius:20px;padding:4px;margin:0;max-width:100%}
body.compactControls #shell #shops button{flex:0 0 auto;width:auto;border:0;border-radius:16px;font-size:13px;line-height:1.4;padding:7px 14px;min-height:34px;background:transparent;color:#4c4c54;white-space:nowrap;margin:0}
body.compactControls #shell #shops button.active{background:#fff;color:#1d1d1f;box-shadow:0 1px 4px #00000014}
#shell>main{width:100%;max-width:1368px;margin:0 auto;padding:22px 24px;min-width:0}
main h1{font-size:32px;letter-spacing:-.025em;font-weight:700;line-height:1.2}main h2{letter-spacing:-.02em}
main>header{margin-bottom:16px;gap:14px}#fetchStatus{color:#73737b;font-size:13px}
body.compactControls #shell :is(.quiet,.fileAction){border-color:#e8e8ee;color:#303039;background:#fff}
body.compactControls #shell .adminAccess{color:#007aff;border:0;background:transparent}
body.compactControls #shell :is(button,summary,a):focus-visible{outline:2px solid #007aff;outline-offset:3px}
.workspaceNav{border:0;background:#f4f4f7;border-radius:12px;padding:3px;width:fit-content;margin-bottom:16px}
body.compactControls #shell .workspaceNav button{border:0;background:transparent;color:#62626b;min-height:34px;padding:6px 16px;border-radius:9px}
body.compactControls #shell .workspaceNav button[aria-pressed=true]{background:#fff;color:#007aff;box-shadow:0 1px 4px #0000000d}
.card,.rosterDisclosure,.calendarCard{background:#fff;border:0;border-radius:0;box-shadow:none;padding:0}
.calendarHead{gap:10px;margin-bottom:12px}.calendarStatus{border-bottom:1px solid #eeeef2;padding-bottom:10px}
body.compactControls #shell .monthControls button{background:#f4f4f7;border:0;color:#007aff;border-radius:50%;min-width:34px;min-height:34px;padding:4px}
body.compactControls #shell .monthControls input{font-size:20px;font-weight:650;border:0;background:transparent;width:160px;min-height:38px}
.maidMultiFilter>summary,.calendarViewSwitch{background:#f1f1f5;border-radius:12px;border:0}
.referenceSummary{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:12px 0 22px}
.referenceSummary>section{border:0;border-radius:24px;padding:22px 24px;background:#f5f5f7;min-width:0}
.referenceCaption{color:#007aff;margin:0 0 12px;font-size:13px}.referenceSummary h2{font-size:27px;margin:0 0 12px;color:#1d1d1f;line-height:1.3}
.referenceTodayNames{display:flex;flex-wrap:wrap;gap:4px 12px}body.compactControls #shell .referenceSummary button{border:0;background:transparent;padding:3px 0;font-size:13px;text-align:left;color:#484852;min-height:28px}
.referenceHours{display:grid;gap:4px;margin:8px 0;font-size:13px;line-height:1.6;color:#4c4c56}.referenceHours strong{font-size:14px}.referenceSummary small{color:#73737b;font-size:11px}
.calendarListMode .referenceSummary{display:none}
.weekdays{padding:10px 8px;color:#787880}.calendarCard:not(.calendarListMode) .calendar{border:0;gap:0}.calendarCard:not(.calendarListMode) .day{border:0;border-top:1px solid #e8e8ee;border-radius:0;background:#fff;padding:8px;min-height:106px}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day.today{background:#fafcff;box-shadow:none}
.calendarCard:not(.calendarListMode) .day.outside{background:#fafafa}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day .shift{border:0;background:transparent;color:#41414a;border-radius:0;padding:3px 0;font-size:12px;margin:0;line-height:1.4}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day .shift:hover{color:#007aff;background:#f5f8ff}
.calendarCard:not(.calendarListMode) .shift span{color:#6d6d76;font-size:11px}.calendarCard:not(.calendarListMode) .day .shift:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:#007aff;margin:0 5px 2px 0}
body.compactControls #shell .day .dateNumber{border:0;background:transparent;color:#3f3f46;font-weight:500}
body.compactControls #shell .day.today .dateNumber{background:#007aff;color:white;border-radius:20px}
.calendarListMode .calendar{background:#fff;padding:0}.calendarListMode .day:not(.outside){background:#f5f5f7;border:0;border-radius:16px;margin-bottom:8px;padding:12px}
body.compactControls #shell .calendarListMode .day .shift{background:#fff;border-radius:9px;color:#3b485b}
body.compactControls #shell .calendarListMode .day.today{box-shadow:inset 0 0 0 1px #007aff;background:#f0f6ff}
#staffRoster{background:#fff}.rosterFilters{background:#f5f5f7;border-radius:14px;padding:10px}.staffFold>summary .maidAvatar{width:32px;height:32px}
.shopHomeGrid{gap:16px}.shopHomeCard{border:0;background:#f5f5f7;border-radius:22px;padding:20px}.shopHomeHeading h2{font-size:20px}.shopHomeLinks a{color:#007aff}.shopHomeCard>button{background:#fff!important;border:0!important;border-radius:14px!important;color:#007aff!important}
#shopHome>h1{font-size:34px}#shopHome>p{color:#75757d}
body.todayOverviewMode{background:#fff}body.todayOverviewMode #todayOverview{border:0;box-shadow:none;padding:0;background:#fff}
.todayMatrixScroll{border-color:#e9e9ef!important}.todayMatrix thead th{background:#f5f5f7;color:#32323b}.todayMatrix tr>th:first-child{background:#fafafa;color:#65656e}.todayMatrix td{border-color:#eeeef2}
body.compactControls #shell .todayMatrix .todayShiftCard{border-color:transparent;background:#f5f5f7;color:#33333b;border-radius:7px}.todayMatrix .todayShiftInfo>span{color:#707079}
body.compactControls #shell .todayMatrix .todayShiftCard.favoriteMaid,body.compactControls #shell .day .shift.favoriteMaid{background:#fff4d4;border-color:#d8b75a}
body.calendarWorkspaceMode #shell{display:flex;flex-direction:column;height:100dvh}
body.calendarWorkspaceMode #shell>aside{height:auto;flex-shrink:0}
body.calendarWorkspaceMode #shell>main{height:auto;flex:1;min-height:0;padding-top:16px;padding-bottom:16px}
body.calendarWorkspaceMode .calendarScrollArea{scrollbar-color:#c4c4cc #fafafa}
@media(max-width:850px){#shell>aside{padding:12px 16px;gap:10px}.brand{font-size:18px!important}#shops{flex-wrap:nowrap;overflow-x:auto;width:100%;border-radius:16px;scrollbar-width:thin}body.compactControls #shell #shops button{padding:7px 12px;font-size:12px}#shell>main{padding:16px}main h1{font-size:26px}.referenceSummary{gap:10px;margin:8px 0 16px}.referenceSummary>section{padding:16px;border-radius:18px}.referenceSummary h2{font-size:20px}.referenceTodayNames{gap:3px}.referenceHours{font-size:12px}#shopHome>h1{font-size:28px}}
@media(max-width:550px){.referenceSummary{grid-template-columns:minmax(0,1fr)}.referenceSummary>section{padding:15px 16px}.referenceSummary>section:last-child{display:none}.calendarCard:not(.calendarListMode) .day{padding:5px 3px;min-height:88px}.calendarCard:not(.calendarListMode) .day .maidAvatar{display:none}.calendarCard:not(.calendarListMode) .day .shift:before{display:none}.calendarCard:not(.calendarListMode) .day .shift{font-size:11px!important}.openingHours{font-size:12px}.shopHomeCard{padding:18px}.shopHomeGrid{gap:12px}}

@media(max-width:550px){.calendarHead{display:flex!important;flex-wrap:wrap!important;gap:7px!important;align-items:center!important}.calendarHead>.monthControls{flex:1 0 100%;width:100%;justify-content:flex-start}.calendarHead>.calendarViewSwitch{order:2;flex:0 0 auto}.calendarHead>#maidFilter{order:3;margin-left:auto}.calendarHead>.calendarDataActions{order:4;margin-left:0}.calendarHead>#calendarVenueFilter{order:1}.calendarHead>.calendarPastToggle{order:5}.referenceSummary>section{padding:12px 14px}.referenceSummary h2{font-size:18px;margin:4px 0}.referenceSummary .referenceCaption{margin-bottom:4px}.referenceTodayNames{display:none}.referenceSummary{margin-bottom:12px}.referenceSummary button{margin:0!important}body.compactControls #shell .referenceSummary button{min-height:28px}.calendarStatus{padding-bottom:6px}.referenceSummary .small{margin:4px 0}}

/* Small screens need document scrolling: controls must never consume the entire scroll viewport. */
@media(max-width:850px){
 body.calendarWorkspaceMode{height:auto;min-height:100dvh;overflow-y:auto;overflow-x:hidden}
 body.calendarWorkspaceMode #shell{height:auto;min-height:100dvh;overflow:visible;display:flex;flex-direction:column}
 body.calendarWorkspaceMode #shell>main{height:auto;min-height:0;flex:0 0 auto;display:block;overflow:visible;width:100%}
 body.calendarWorkspaceMode .calendarCard{display:block;flex:none;overflow:visible;height:auto;min-height:0}
 body.calendarWorkspaceMode .calendarScrollArea{height:auto;max-height:none;min-height:0;overflow:visible;overscroll-behavior:auto;scrollbar-gutter:auto;padding-right:0;flex:none}
 body.calendarWorkspaceMode main>header,body.calendarWorkspaceMode .workspaceNav,body.calendarWorkspaceMode .calendarHead,body.calendarWorkspaceMode .calendarStatus{position:static}
 body.calendarWorkspaceMode main>footer{display:block}
}

/* Keep today's summary compact; opening hours already appear in the page header. */
.referenceSummary{display:block;margin:8px 0 12px}
.referenceSummary>section{display:flex;align-items:center;flex-wrap:wrap;gap:6px 16px;padding:12px 16px;border-radius:14px;min-height:0}
.referenceSummary .referenceCaption{margin:0;font-size:12px;flex:0 0 auto}
.referenceSummary h2{margin:0;font-size:18px;line-height:1.4;flex:0 0 auto}
.referenceSummary .referenceTodayNames{display:flex;flex:1 1 260px;gap:2px 12px;min-width:0}
body.compactControls #shell .referenceSummary button{margin:0;min-height:26px;padding:2px 0;font-size:12px}
.referenceSummary .small{margin:0;font-size:12px}
@media(max-width:550px){.referenceSummary>section{padding:10px 12px;gap:4px 10px}.referenceSummary h2{font-size:16px}.referenceSummary .referenceTodayNames{display:none}.referenceSummary>section:last-child{display:flex}}

/* Calendar uses normal document scrolling at every viewport size. */
body.calendarWorkspaceMode{height:auto;min-height:100dvh;overflow-y:auto;overflow-x:hidden}
body.calendarWorkspaceMode #shell{height:auto;min-height:100dvh;overflow:visible}
body.calendarWorkspaceMode #shell>main{height:auto;flex:0 0 auto;min-height:0;display:block;overflow:visible}
body.calendarWorkspaceMode .calendarCard{height:auto;display:block;flex:none;min-height:0;overflow:visible}
body.calendarWorkspaceMode .calendarScrollArea{height:auto;max-height:none;overflow:visible;overscroll-behavior:auto;scrollbar-gutter:auto;flex:none;padding-right:0}
body.calendarWorkspaceMode main>footer{display:block}
/* Contain avatars inside each shift instead of floating into its frame. */
body.compactControls #shell .calendarCard .day .shift{display:grid!important;grid-template-columns:24px minmax(0,1fr);gap:1px 7px;align-items:center;padding:6px!important;border:1px solid transparent!important;border-radius:8px;box-shadow:none!important;min-height:43px;white-space:normal;overflow:hidden;text-overflow:clip}
body.compactControls #shell .calendarCard .day .shift:before{display:none!important}
body.compactControls #shell .calendarCard .day .shift>.maidAvatar{display:block;float:none;margin:0!important;width:24px;height:24px;min-width:24px;max-width:24px;grid-column:1;grid-row:1/span 2;align-self:center}
body.compactControls #shell .calendarCard .day .shift>span:not(.maidAvatar){grid-column:2;min-width:0;overflow-wrap:anywhere}
body.compactControls #shell .calendarCard .day .shift.favoriteMaid{border-color:#d9bc76!important;background:#fff5da}
body.compactControls #shell .calendarCard .day .shift:hover{border-color:#b6cee9!important}
@media(max-width:550px){body.compactControls #shell .calendarCard:not(.calendarListMode) .day .shift{grid-template-columns:minmax(0,1fr);padding:4px!important;gap:1px}body.compactControls #shell .calendarCard:not(.calendarListMode) .day .shift>.maidAvatar{display:none}body.compactControls #shell .calendarCard:not(.calendarListMode) .day .shift>span:not(.maidAvatar){grid-column:1}}

body.compactControls #shell .calendarCard:not(.calendarListMode) .dayShiftList>.shift:nth-child(n+4){display:none!important}
body.compactControls #shell .calendarCard .day .shift:not(:has(>.maidAvatar)){grid-template-columns:minmax(0,1fr)}
body.compactControls #shell .calendarCard .day .shift:not(:has(>.maidAvatar))>span{grid-column:1}

.shopActivities{margin:12px 0;padding:10px 0;border-top:1px solid #e7e9ee}.shopActivities h3{font-size:14px;margin:0 0 8px}.shopActivityRow{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;padding:6px 0}.shopActivityRow>span:first-child{font-weight:600}.shopEventBar{display:block;position:relative;min-width:0;margin:2px 0 6px;padding:6px 3px 2px;font-size:11px;line-height:1.35;color:#28578b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shopEventBar:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;border-radius:2px;background:#84b7ed}.calendarListMode .shopEventBar{grid-column:2;justify-self:stretch;margin-bottom:2px}.shopActivityRow button{min-height:30px!important;padding:4px 8px!important}

.homeAdminToolbar{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 18px}.shopHomeAdminActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;border-top:1px solid #e1e3e9;padding-top:10px;margin-top:10px}.shopHomeAdminActions>button{width:100%;min-height:36px!important;padding:6px 8px!important;font-size:12px}.shopHomeCard:has(.shopHomeAdminActions){align-items:stretch}.shopHomeCard:has(.shopHomeAdminActions)>button{align-self:start}.homeAdminToolbar>button{min-height:36px!important;padding:6px 12px!important;font-size:13px}

/* Activity labels sit beside the date, above the shifts. */
.dayDateHeader{display:flex;align-items:flex-start;gap:6px;margin-bottom:5px;min-width:0}.dayDateHeader>.dateNumber{flex:0 0 auto;margin:0}.dayEventLabels{display:flex;flex:1;flex-wrap:wrap;gap:3px 5px;min-width:0;align-self:center}.dayEventLabels:empty{display:none}.dayEventLabels>.shopEventBar{flex:0 1 auto;max-width:100%;margin:0;padding:2px 0 2px 6px;font-size:11px;line-height:1.4}.dayEventLabels>.shopEventBar:before{left:0;right:auto;top:4px;bottom:4px;width:2px;height:auto}
.calendarListMode .dayDateHeader{grid-column:1/-1;grid-row:1;margin-bottom:0;align-items:center}.calendarListMode .dayDateHeader>.dateNumber{width:100px}.calendarListMode .dayEventLabels{justify-self:start}.calendarListMode .dayShiftList{grid-row:2}.calendarListMode .day:has(.dayEventLabels:empty) .dayDateHeader{grid-column:1}.calendarListMode .day:has(.dayEventLabels:empty) .dayShiftList{grid-row:1}
@media(max-width:650px){.calendarListMode .dayDateHeader>.dateNumber{width:72px}.dayDateHeader{gap:4px}.dayEventLabels>.shopEventBar{font-size:10px}}

.dayEventLabels>.shopEventBar{padding:5px 2px 1px}.dayEventLabels>.shopEventBar:before{left:0;right:0;top:0;bottom:auto;width:auto;height:2px}

/* Today: outline the entire day and keep its date circle uncluttered. */
body.compactControls #shell .calendarCard .day.today{background:#f7faff;box-shadow:inset 0 0 0 2px #2585e8!important;border-radius:10px;position:relative}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day.today .dateNumber{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;min-width:34px;min-height:34px;padding:0!important;border-radius:50%;background:#087af0;color:#fff;font-size:14px;font-weight:650;line-height:1;box-shadow:0 2px 5px #087af022}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day.today .dateNumber:after{content:none!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day.today .dayDateHeader:after{content:'今天';color:#0872d6;font-size:11px;font-weight:600;align-self:center;flex:0 0 auto}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day.today .dayDateHeader>.dayEventLabels{order:2}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day.today .dayDateHeader:after{order:1}
body.compactControls #shell .calendarCard.calendarListMode .day.today .dateNumber{border-radius:10px;background:#087af0;color:#fff;font-weight:600}
@media(max-width:550px){body.compactControls #shell .calendarCard:not(.calendarListMode) .day.today .dateNumber{width:28px;height:28px;min-width:28px;min-height:28px;font-size:12px}.calendarCard:not(.calendarListMode) .day.today .dayDateHeader{flex-wrap:wrap}.calendarCard:not(.calendarListMode) .day.today .dayDateHeader:after{font-size:10px!important}}

/* Favorite shifts: soft gold frame, contained avatar and balanced inset. */
body.compactControls #shell .calendarCard .day .shift.favoriteMaid{border:1px solid #e5ca89!important;border-radius:11px!important;background:#fff7e3!important;color:#564321;padding:7px 8px!important;gap:2px 8px;box-shadow:none!important}
body.compactControls #shell .calendarCard .day .shift.favoriteMaid>span:not(.maidAvatar){color:#77613a}
body.compactControls #shell .calendarCard .day .shift.favoriteMaid:hover{background:#fff1ce!important;border-color:#cfa64b!important}
body.compactControls #shell .calendarCard .day.past .shift.favoriteMaid{background:#f4f0e6!important;border-color:#d9d1bd!important;color:#696252}
body.compactControls #shell .calendarCard .day.past .shift.favoriteMaid>span:not(.maidAvatar){color:#726b5c}

/* Daily agenda: keep names and hours together in a suitably sized dialog. */
dialog:has(.dayAgenda){width:min(620px,calc(100vw - 28px));max-width:620px;padding:22px}
body.compactControls #dialog .dayAgenda .agendaRow{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:8px 18px;padding:9px 12px;min-height:48px;margin:6px 0;border-radius:10px}
.dayAgenda .agendaRow>.personWithAvatar{flex:0 1 180px;min-width:0}
.dayAgenda .agendaRow>span{flex:0 1 auto;font-size:13px;white-space:normal;text-align:left}
.dayAgenda .agendaRow .maidAvatar{width:30px;height:30px;flex-basis:30px}.dayAgenda .agendaRow strong{font-size:14px}
@media(max-width:550px){dialog:has(.dayAgenda){padding:18px;width:calc(100vw - 20px)}body.compactControls #dialog .dayAgenda .agendaRow{gap:6px 12px;padding:8px 10px}.dayAgenda .agendaRow>.personWithAvatar{flex-basis:145px}}

/* Store identity: one compact title and link group, independent of hours. */
main>header>div:first-child:has(.openingHours){grid-template-columns:minmax(180px,max-content) minmax(200px,1fr);gap:10px 24px}
main>header>div:first-child>.shopIdentity{grid-column:1;grid-row:1;min-width:0;max-width:390px}
.shopIdentity #shopTitle{margin:0;font-size:clamp(26px,2.2vw,36px);line-height:1.22;letter-spacing:-.025em;overflow-wrap:anywhere}
.shopQuickLinks{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px}
.shopQuickLinks:has(>#shopWebsite[hidden]):not(:has(.groupShopWebsites a)){display:none}
.shopQuickLinks .groupShopWebsites{display:contents}
.shopQuickLinks .shopWebsite{display:inline-flex;align-items:center;justify-content:center;min-height:36px;margin:0;padding:6px 11px;border:1px solid #dce3ed;border-radius:8px;background:#fff;color:#245a93;font-size:13px;font-weight:500;line-height:1.4;text-decoration:none;white-space:normal;overflow-wrap:anywhere}
.shopQuickLinks .shopWebsite[hidden]{display:none}
.shopQuickLinks #shopBookingLinks .shopWebsite{background:#edf5ff;border-color:#d1e4fc;color:#075dae}
.shopQuickLinks .shopWebsite:hover{background:#e7f0fc;border-color:#aac9ee;color:#004e9e}
.shopQuickLinks .shopWebsite:focus-visible{outline:2px solid #087af0;outline-offset:3px}
main>header>div:first-child>.openingHours{grid-column:2;grid-row:1/3;align-self:start;padding-top:2px}
main>header>div:first-child>#fetchStatus{grid-column:1;grid-row:2;margin:0;line-height:1.5}
@media(max-width:850px){
 main>header>div:first-child:has(.openingHours){display:flex;flex-direction:column;align-items:stretch;gap:10px}
 main>header>div:first-child>.shopIdentity{max-width:none}
 main>header>div:first-child>.openingHours{padding:0;border:0}
 .shopQuickLinks{margin-top:8px;gap:7px}
 .shopQuickLinks .shopWebsite{min-height:40px;padding:8px 12px}
 .shopIdentity #shopTitle{font-size:28px}
}

/* Compact per-day editors: fields share rows instead of spanning empty columns. */
body.compactControls #dialog .dateTimeRow{padding:12px 0}
body.compactControls #dialog .dateTimeRow>strong{margin:0 0 8px;font-size:14px;line-height:1.4}
body.compactControls #dialog .dateTimeFields{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));align-items:end;gap:10px 12px}
body.compactControls #dialog .dateTimeFields label{margin:0;gap:5px;min-width:0;font-size:12px;line-height:1.4;display:grid;align-content:end}
body.compactControls #dialog .dateTimeFields .shiftPreset{grid-column:auto}
body.compactControls #dialog .dateTimeFields>.presetControls:not(:empty){display:contents}
body.compactControls #dialog .dateTimeFields .clockParts{grid-template-columns:minmax(0,1fr) minmax(62px,.75fr);align-items:end;gap:5px}
body.compactControls #dialog .dateTimeFields .minuteField{font-size:0;gap:0;line-height:1}
body.compactControls #dialog .dateTimeFields select{width:100%;max-width:100%;min-width:0;min-height:38px;margin:0;padding:7px 9px;font-size:13px;line-height:1.4}
body.compactControls #dialog .dateTimeFields .clockCustomize{grid-column:1/-1;margin:0;min-height:32px;padding:5px 9px}
body.compactControls #dialog .dateTimeList>.reviewEditorActions{position:static;margin:0 0 10px;padding:0;background:transparent}
@media(max-width:650px){
 body.compactControls #dialog .dateTimeFields{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 8px}
 body.compactControls #dialog .dateTimeFields select{min-height:44px;padding:8px 5px;font-size:16px}
 body.compactControls #dialog .dateTimeFields .clockParts{grid-template-columns:minmax(0,1fr) 72px;gap:4px}
 body.compactControls #dialog .dateTimeFields .clockCustomize{min-height:44px}
 body.compactControls #dialog .dateTimeFields>label:has(>select[aria-label$="上班店家"]),body.compactControls #dialog .dateTimeFields .shiftPreset{grid-column:1/-1}
 body.compactControls #dialog .dateTimeRow{padding:12px 0}
}
@media(max-width:350px){body.compactControls #dialog .dateTimeFields{grid-template-columns:minmax(0,1fr)}}

#notice>button{margin:6px 0 0 10px;vertical-align:middle}
.shopEventBar.partialClosureBar{background:#fff3df;color:#86520b;border-color:#e8c583}
.closureCalendarEditor{max-width:620px}
.closureCalendarEditor>h3{margin:12px 0 4px}
.closureCalendarEditor>p{margin:0 0 10px}
.closureDateRows{display:grid;gap:8px;margin:12px 0}
.closureDateRow{display:grid;grid-template-columns:minmax(170px,1.3fr) repeat(2,minmax(100px,1fr));align-items:end;gap:8px;padding:8px 0;border-top:1px solid var(--line)}
#dialog .closureDateRow label,.closureDateRow label{margin:0;min-width:0;font-size:12px;gap:4px}
.closureDateRow :is(input,select){width:100%;min-width:0}
@media(max-width:650px){.closureDateRow{grid-template-columns:repeat(2,minmax(0,1fr))}.closureDateRow>label:first-child{grid-column:1/-1}.closureDateRow :is(input,select){min-height:44px;font-size:16px}}

/* Image review: keep each date's fields and actions together. */
@media(min-width:651px){
 .reviewSplit{grid-template-columns:minmax(250px,34%) minmax(0,1fr);gap:20px}
}
body.compactControls #dialog .imageReviewFields .reviewEditor{padding:12px 0;margin:0}
body.compactControls #dialog .imageReviewFields .reviewEditorHead{margin:0 0 8px;gap:8px;font-size:13px;line-height:1.4}
body.compactControls #dialog .imageReviewFields .reviewFields{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:8px 10px;align-items:end}
body.compactControls #dialog .imageReviewFields .reviewFields label{display:grid;min-width:0;margin:0;gap:4px;align-content:end;font-size:12px;line-height:1.4}
body.compactControls #dialog .imageReviewFields .reviewFields label:has(>input[name=maid_name][readonly]){display:none}
body.compactControls #dialog .imageReviewFields .reviewFields>.presetControls:not(:empty){display:contents}
body.compactControls #dialog .imageReviewFields .reviewFields .shiftPreset{grid-column:auto}
body.compactControls #dialog .imageReviewFields .reviewFields :is(input,select){width:100%;min-width:0;min-height:36px;margin:0;padding:6px 8px;font-size:13px;line-height:1.4}
body.compactControls #dialog .imageReviewFields .reviewFields .clockParts{display:grid;grid-template-columns:minmax(0,1fr) 64px;gap:4px;align-items:end}
body.compactControls #dialog .imageReviewFields .reviewFields .minuteField{font-size:0;line-height:1;gap:0}
body.compactControls #dialog .imageReviewFields .reviewFields .clockCustomize{grid-column:auto;align-self:end;min-height:36px;margin:0}
body.compactControls #dialog .imageReviewFields .reviewEditor>details{margin:8px 0 0;font-size:12px;line-height:1.4}
body.compactControls #dialog .imageReviewFields .reviewEditor>.small{margin:4px 0;font-size:12px;line-height:1.4}
body.compactControls #dialog .imageReviewFields .reviewEditor>p:empty{display:none}
body.compactControls #dialog .imageReviewFields .reviewEditorActions{position:static;display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0;border:0;background:transparent}
body.compactControls #dialog .imageReviewFields .reviewEditorActions>button{flex:0 1 auto;min-height:34px;margin:0;padding:6px 10px;font-size:12px;line-height:1.4}
@media(max-width:650px){
 body.compactControls #dialog .imageReviewFields .reviewFields{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 body.compactControls #dialog .imageReviewFields .reviewFields :is(input,select){min-height:44px;font-size:16px;padding:7px 5px}
 body.compactControls #dialog .imageReviewFields .reviewFields .clockParts{grid-template-columns:minmax(0,1fr) 64px}
 body.compactControls #dialog .imageReviewFields .reviewEditorActions>button{min-height:44px;flex:1 1 auto;padding:8px;font-size:13px}
}

/* A review row asks for a date and one shift choice; clocks expand on demand. */
body.compactControls #dialog .imageReviewFields .reviewFields{grid-template-columns:minmax(150px,.7fr) minmax(240px,1.3fr)}
body.compactControls #dialog .imageReviewFields .reviewFields>label:has(>input[name=maid_name]:not([readonly])){grid-column:1/-1}
body.compactControls #dialog .imageReviewFields .reviewClockLine{display:flex;align-items:center;gap:10px;min-width:0}
body.compactControls #dialog .imageReviewFields .reviewClockLine>select{flex:0 0 112px;width:112px;max-width:112px}
.reviewClockDisplay{font-size:15px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.5;color:var(--ink);white-space:normal;overflow-wrap:anywhere}
.reviewCustomTimes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-column:1/-1;gap:8px}
.reviewCustomTimes[hidden]{display:none}
body.compactControls #dialog .imageReviewFields .reviewEditorActions{align-items:start}
.reviewMoreOptions{min-width:0;margin:0;font-size:12px}
.reviewMoreOptions>summary{display:inline-flex;align-items:center;min-height:34px;padding:6px 10px;border:1px solid #dce2e9;border-radius:8px;cursor:pointer;color:#344150;box-sizing:border-box;list-style:none}
.reviewMoreOptions>summary:after{content:'⌄';margin-left:6px}
.reviewMoreOptions[open]{flex-basis:100%;padding:10px;background:#f6f7f9;border-radius:8px}
.reviewMoreOptions[open]>summary{margin-bottom:8px}
.reviewMoreOptions>button{margin:6px 6px 0 0!important;min-height:34px}
@media(max-width:650px){
 body.compactControls #dialog .imageReviewFields .reviewFields{grid-template-columns:minmax(0,1fr)}
 body.compactControls #dialog .imageReviewFields .reviewClockLine>select{min-height:44px;flex-basis:112px}
 .reviewClockDisplay{font-size:16px}
 .reviewMoreOptions>summary{min-height:44px;font-size:13px}
 .reviewMoreOptions>button{min-height:44px}
}

/* Keep the two main shop actions together, including narrow screens. */
.shopHomeActions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:auto;padding-top:0}.shopHomeActions>button,.shopHomeActions>a{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:36px!important;margin:0!important;padding:7px 12px!important;border:0!important;border-radius:14px!important;background:#fff!important;color:#007aff!important;font:inherit;font-size:13px!important;line-height:1.4;text-decoration:none;white-space:nowrap}.shopHomeActions>a:hover{background:#e8f1ff!important}.shopHomeActions>a:focus-visible{outline:2px solid #007aff;outline-offset:3px}

.shopOrderList{list-style:none;margin:16px 0;padding:0;display:grid;gap:8px;max-width:640px}.shopOrderRow{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid #e4e6ec;border-radius:12px;background:#f8f9fb}.shopOrderNumber{font-size:12px;color:#707987;font-variant-numeric:tabular-nums}.shopOrderName{font-size:14px;font-weight:600;overflow-wrap:anywhere}.shopOrderControls{display:flex;gap:6px}.shopOrderControls>button{min-height:36px!important;padding:6px 10px!important;font-size:13px!important;white-space:nowrap}.shopOrderControls>button:disabled{opacity:.35}.shopOrderFooter{display:flex;justify-content:flex-end;gap:8px;max-width:640px;padding:12px 0;position:sticky;bottom:0;background:#fff}@media(max-width:450px){.shopOrderRow{padding:8px;gap:7px;grid-template-columns:18px minmax(0,1fr) auto}.shopOrderControls>button{padding:6px 8px!important}}

/* Group titles act as the shared calendar and roster venue selector. */

#calendarVenueFilter[hidden],#rosterVenueFilter[hidden]{display:none!important}

/* Shared visual rhythm: clear venue choices and aligned, two-line roster rows. */
:root{--ui-space:8px;--ui-text:#222833;--ui-muted:#606b7b;--ui-rule:#e8ebf0;--ui-soft:#f4f6f9;--ui-blue:#0867d1}
body.compactControls #shell>main{padding-top:24px}main>header{margin-bottom:20px}#shell main .workspaceNav{margin-bottom:20px}
.shopQuickLinks{margin-top:9px}.openingHours{font-size:13px;line-height:1.65}#fetchStatus{font-size:12px;color:var(--ui-muted)}#notice{padding:10px 14px!important;border-radius:10px!important;font-size:13px;line-height:1.5}
#staffRoster .staffHead{gap:8px 12px;margin:0;align-items:baseline}#staffRoster .staffHead h2{font-size:20px;line-height:1.4}#staffRoster .staffHead>.small{font-size:12px;color:var(--ui-muted)}#staffRoster>.small{margin:6px 0 0;font-size:12px;line-height:1.5;color:var(--ui-muted)}
#staffRoster .rosterFilters{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;background:transparent;padding:0;margin:16px 0 12px;border-radius:0}#staffRoster .rosterFilters>.rosterSearch{flex:0 1 420px;width:420px;background:#f8f9fb;border:1px solid #dce2ea;border-radius:10px}#staffRoster .rosterFilters>label{display:flex;align-items:center;gap:8px;width:auto;white-space:nowrap;font-size:12px;color:var(--ui-muted)}#staffRoster .rosterStatus{width:auto;min-width:160px;background:#fff;border-radius:10px}
#staffRoster .staffList.rosterColumns{gap:0 24px}body.compactControls #shell #staffRoster .staffFold{padding:0;border-color:var(--ui-rule)}body.compactControls #shell #staffRoster .staffFold>summary{gap:10px;padding:9px 4px;min-height:60px;align-items:center}#staffRoster .staffFold>summary:before{flex:none;width:10px;margin:0;font-size:12px;color:#8b95a3}#staffRoster .staffFold>summary .maidAvatar{width:36px;height:36px;flex:0 0 36px;border:1px solid #e8ebf0;object-fit:cover}#staffRoster .staffLabel{display:grid;gap:3px;flex:1;min-width:0}#staffRoster .staffFold>summary .staffName{display:block;max-width:none;min-width:0;flex:initial;margin:0;font-size:14px;font-weight:600;line-height:1.4;color:var(--ui-text);overflow-wrap:anywhere}#staffRoster .staffName[href]:hover{color:var(--ui-blue);text-decoration:underline;text-underline-offset:3px}body.compactControls #shell #staffRoster .staffFold>summary .staffMeta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;flex:initial;min-width:0;margin:0;text-align:left;font-size:12px!important;line-height:1.4;color:var(--ui-muted)}#staffRoster .staffShiftCount{white-space:nowrap;font-variant-numeric:tabular-nums}#staffRoster .staffVenue{overflow-wrap:anywhere}#staffRoster .staffFold>summary .favoriteToggle{flex:0 0 34px;width:34px;min-height:34px!important;margin:0!important;padding:4px!important;border-radius:9px;font-size:23px;align-self:center}#staffRoster .staffFold.favoriteMaid>summary{background:#fff6dd}#staffRoster .staffFold.favoriteMaid .staffName{color:#77500a}#staffRoster .staffExpanded{padding:6px 4px 12px}#staffRoster .staffExpanded .small{font-size:12px;line-height:1.5;margin:5px 0}.shopHomeCard{padding:20px}.shopHomeLinks{gap:8px 14px}.calendarToolbar{gap:10px}
@media(max-width:850px){body.compactControls #shell>main{padding:18px 16px}main>header{margin-bottom:16px}.openingHours{font-size:12px}#staffRoster .staffList.rosterColumns{gap:0 16px}}
@media(max-width:550px){body.compactControls #shell>main{padding:14px 12px}#shell main .workspaceNav{margin-bottom:16px}#staffRoster .staffHead h2{font-size:18px}#staffRoster .staffHead>.small{font-size:11px;line-height:1.5}#staffRoster .rosterFilters{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin:12px 0 8px}#staffRoster .rosterFilters>.rosterSearch{width:100%;max-width:none}#staffRoster .rosterFilters>label{width:100%;justify-content:space-between}#staffRoster .rosterStatus{flex:1;min-width:0;max-width:calc(100% - 64px)}body.compactControls #shell #staffRoster .staffFold>summary{min-height:62px;padding:9px 3px;gap:10px}#staffRoster .staffFold>summary .maidAvatar{width:38px;height:38px;flex-basis:38px}#staffRoster .staffFold>summary .favoriteToggle{min-height:40px!important;width:40px;flex-basis:40px}#notice{font-size:12px}.shopHomeCard{padding:16px}}
@media(prefers-reduced-motion:no-preference){.shopTitleChoice,.shopTitleShowAll{transition:background-color .14s ease,color .14s ease,border-color .14s ease}}

#staffRoster .staffAvatarSlot{display:flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:36px;border-radius:50%;background:#f0f2f6;overflow:hidden}#staffRoster .staffAvatarSlot .maidAvatar{margin:0;border:0}@media(max-width:550px){#staffRoster .staffAvatarSlot{flex-basis:38px;width:38px;height:38px}}

/* Group names share the same plain heading typography as individual shops. */
.shopIdentity #shopTitle.groupShopTitle{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px;line-height:1.22}.shopTitleChoices{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:0 8px;padding:0;background:transparent;border:0;border-radius:0}.shopTitleDivider{display:inline;color:inherit;font:inherit}.shopIdentity #shopTitle .shopTitleChoice,.shopIdentity #shopTitle .shopTitleChoice[aria-pressed=true],.shopIdentity #shopTitle .shopTitleChoice[aria-pressed=false]{appearance:none;display:inline-block;margin:0!important;padding:0!important;min-height:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;color:inherit!important;font:inherit!important;letter-spacing:inherit;line-height:inherit!important;text-align:left;white-space:nowrap;cursor:pointer}.shopIdentity #shopTitle .shopTitleChoice:hover{background:transparent!important;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.shopIdentity #shopTitle .shopTitleChoice:focus-visible{outline:2px solid #0867d1;outline-offset:4px;border-radius:3px!important}.shopIdentity #shopTitle .shopTitleShowAll{flex:none;min-height:30px!important;padding:5px 9px!important;margin:0!important;background:transparent!important;border:1px solid #dce2e9!important;border-radius:7px!important;box-shadow:none!important;color:#526174!important;font-size:12px!important;line-height:1.3!important;font-weight:500!important;letter-spacing:0;white-space:nowrap}.shopIdentity #shopTitle .shopTitleShowAll:hover{background:#f3f5f8!important}@media(max-width:550px){.shopIdentity #shopTitle.groupShopTitle{gap:8px 10px}.shopTitleChoices{gap:0 6px}.shopIdentity #shopTitle .shopTitleChoice{min-height:40px!important}.shopIdentity #shopTitle .shopTitleShowAll{min-height:34px!important}}

/* Reference layouts: shared top navigation, today venue grid, spacious date rows. */
#shell>aside{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:space-between!important;gap:24px!important;padding:14px 4.5%!important;overflow:visible!important}#shell>aside #shops{width:auto;max-width:none;overflow:visible!important;display:flex;align-items:center;flex-wrap:nowrap;gap:4px;background:#eaeaee;border-radius:28px;padding:5px}#shell #shops>button,#shell #shops>.navShopPicker>summary{white-space:nowrap;padding:10px 18px!important;border:0;border-radius:24px;background:transparent;font-size:15px!important;line-height:1.4;font-weight:600;list-style:none;color:#25262a;cursor:pointer}#shell #shops>button.active,#shell #shops>.navShopPicker.active>summary{background:white;box-shadow:0 2px 4px #00000010}.navShopPicker{position:relative}.navShopMenu{position:absolute;top:calc(100% + 10px);left:0;z-index:50;min-width:230px;background:white;border:1px solid #e6e8ed;border-radius:14px;padding:6px;box-shadow:0 10px 30px #18233318}.navShopMenu button{display:block;width:100%;text-align:left;border:0;background:white;padding:10px 12px;color:#24272d;font-size:14px}.navShopMenu button:hover{background:#f1f5fa}.navShopMenu .active{color:#0876dc}#shell>aside .adminAccess{position:static!important;white-space:nowrap;font-size:13px;padding:9px 14px;border:1px solid #e4e7ee;border-radius:24px;background:white}#shell>main{max-width:1680px;margin:0 auto;width:100%;padding:36px 4.5%!important}body.todayOverviewMode main>header,body.todayOverviewMode .workspaceNav{display:none!important}body.todayOverviewMode #todayOverview{display:block!important;padding:0;border:0;box-shadow:none;background:white}
.todayPageHeading{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:8px 0 26px}.todayPageHeading h1{font-size:42px;line-height:1.2;margin:6px 0 10px;letter-spacing:-.025em}.todayDate{color:#0879df;font-size:16px;font-weight:650;margin:0}.todayPageSummary{font-size:17px;color:#72747d;margin:0}.todayPageHeading>button{border:0;border-radius:24px;padding:12px 20px;background:#f4f4f7;color:#0879df}.todayVenueChips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 28px}.todayVenueChips>button{background:white;border:1px solid #e5e7ed;color:#222;font-size:14px;border-radius:24px;padding:9px 17px;min-height:40px}.todayVenueChips>button[aria-pressed=true]{background:#202124;border-color:#202124;color:white}.todayStoreGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:24px;align-items:stretch}.todayStoreColumn{min-width:0;padding:20px;background:#f5f5f7;border-radius:24px}.todayStoreHeading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:16px}.todayStoreHeading h2{font-size:19px;margin:0;line-height:1.4;overflow-wrap:anywhere}.todayStoreBadge{flex:none;border-radius:20px;background:#e9edf2;color:#596575;font-size:11px;padding:5px 9px;font-variant-numeric:tabular-nums}.todayStoreColumn .todayShiftCard{width:100%;display:flex;align-items:center;gap:10px;padding:12px!important;min-height:72px!important;border:1px solid #e5e7ec;border-radius:15px;background:white;margin:0 0 10px;text-align:left;color:#24272c}.todayStoreColumn .todayShiftCard.unknownTime{border-style:dashed}.todayStoreColumn .todayShiftInfo{display:grid;min-width:0;gap:3px;line-height:1.4}.todayStoreColumn .todayShiftInfo strong{font-size:15px;overflow-wrap:anywhere}.todayStoreColumn .todayShiftInfo>span{font-size:13px;color:#707581;white-space:normal}.todayStoreColumn .todayShiftCard.favoriteMaid{background:#fff8e8;border-color:#efd6a2}.todayStoreEmpty{font-size:14px;color:#727781;line-height:1.6;margin:16px 0 4px}#todayOverview>.small{font-size:12px;color:#767b85;line-height:1.6}
.workspaceNav{border-radius:0!important;background:transparent!important;border-bottom:1px solid #e5e7ee;padding:0!important;gap:20px;justify-content:flex-start}.workspaceNav>button{border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;padding:10px 0!important;color:#767b85!important}.workspaceNav>button[aria-pressed=true]{color:#0879df!important;border-bottom:2px solid #0879df!important}.openingHours{background:#f5f5f7;padding:16px 20px!important;border:0!important;border-radius:20px}.calendarListMode .referenceSummary{display:none!important}body.compactControls #shell .calendarCard.calendarListMode .day:not(.outside){grid-template-columns:120px minmax(0,1fr);padding:16px 18px;margin:0 0 12px;background:#f5f5f7;border:0;border-radius:20px;min-height:94px}body.compactControls #shell .calendarCard.calendarListMode .day.today{background:#eef5ff;box-shadow:none!important}.calendarListMode .dayShiftList{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}body.compactControls #shell .calendarListMode .day .shift{background:white;border:1px solid #e5e7ec;border-radius:15px;padding:12px!important;min-height:68px;font-size:15px!important;line-height:1.5}.calendarListMode .shift[data-shop=oi]{border-left:3px solid var(--venue-color,#e58d0b)!important}.calendarListMode .shift[data-shop=oz]{border-left:3px solid var(--venue-color,#10a391)!important}.calendarListMode .shift[data-shop=lilith]{border-left:3px solid var(--venue-color,#8953da)!important}.calendarListMode .day .shift span{font-size:13px;line-height:1.5}.calendarListMode .dateNumber{font-size:15px;font-weight:650}.calendarCard .calendarHead{margin-bottom:16px}.calendarScrollArea{scrollbar-width:thin}
@media(max-width:1100px){.todayStoreGrid{grid-template-columns:repeat(3,minmax(0,1fr))}#shell>aside{gap:12px!important}#shell #shops>button,#shell #shops>.navShopPicker>summary{padding:9px 12px!important;font-size:14px!important}}
@media(max-width:850px){#shell>aside{flex-wrap:wrap!important;padding:12px 16px!important}.brand{order:0}#shell>aside .adminAccess{order:1;margin-left:auto}#shell>aside #shops{order:2;width:100%;justify-content:center;border-radius:24px}#shell>main{padding:24px 16px!important}.todayStoreGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.todayPageHeading h1{font-size:34px}.todayPageSummary{font-size:14px}.todayStoreColumn{padding:16px}.todayStoreHeading{align-items:flex-start;flex-wrap:wrap}.todayStoreHeading h2{font-size:18px}}
@media(max-width:550px){#shell>aside #shops{gap:0;padding:4px}#shell #shops>button,#shell #shops>.navShopPicker>summary{font-size:13px!important;padding:9px 10px!important}.navShopMenu{left:auto;right:0;min-width:220px}#shell>main{padding:20px 12px!important}.todayPageHeading{gap:8px;margin:4px 0 20px}.todayPageHeading h1{font-size:30px}.todayDate{font-size:13px}.todayPageSummary{font-size:12px}.todayPageHeading>button{font-size:12px;padding:10px 12px}.todayVenueChips{gap:6px;margin-bottom:18px}.todayVenueChips>button{font-size:13px;padding:7px 12px;min-height:36px}.todayStoreGrid{grid-template-columns:minmax(0,1fr);gap:12px}.todayStoreColumn{border-radius:18px;padding:16px}.todayStoreHeading{align-items:center;flex-wrap:nowrap}.todayStoreColumn .todayShiftCard{min-height:64px!important}.calendarListMode .dayShiftList{grid-template-columns:minmax(0,1fr)}body.compactControls #shell .calendarCard.calendarListMode .day:not(.outside){grid-template-columns:72px minmax(0,1fr);padding:12px 10px;gap:8px}.openingHours{padding:12px 14px!important;border-radius:14px}}

@media(min-width:851px){main>header>div:first-child:has(.openingHours){display:grid!important;grid-template-columns:minmax(0,1fr) minmax(280px,380px)!important;gap:14px 30px;width:100%}main>header>div:first-child>.openingHours{width:100%;max-width:380px;justify-self:end}.shopIdentity #shopTitle{font-size:40px}#shell>aside #shops{margin-left:auto;margin-right:auto}}
.groupTitleText{display:block;flex:1 0 100%;font:inherit}.shopTitleChoices{gap:8px}.shopTitleDivider{display:none}.shopIdentity #shopTitle .shopTitleChoice,.shopIdentity #shopTitle .shopTitleChoice[aria-pressed=false]{font-size:14px!important;font-weight:600!important;min-height:38px!important;line-height:1.4!important;padding:8px 14px!important;border:1px solid #e1e5eb!important;border-radius:24px!important;background:white!important;color:#25272c!important}.shopIdentity #shopTitle .shopTitleChoice[aria-pressed=true]{font-size:14px!important;font-weight:600!important;min-height:38px!important;line-height:1.4!important;padding:8px 14px!important;border:1px solid #222!important;border-radius:24px!important;background:#222!important;color:white!important}.shopIdentity #shopTitle .shopTitleChoice:before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:#097ddd;margin-right:8px}.shopIdentity #shopTitle .shopTitleChoice[data-shop=oz]:before{background:#10a391}.shopIdentity #shopTitle .shopTitleChoice[data-shop=oi]:before{background:#e58d0b}.shopIdentity #shopTitle .shopTitleChoice[data-shop=lilith]:before{background:#8953da}
body.compactControls #shell .todayVenueChips>button{border-radius:24px!important;padding:9px 16px!important;border:1px solid #e3e6ed!important;background:white!important;color:#25272d!important;min-height:40px!important}body.compactControls #shell .todayVenueChips>button[aria-pressed=true]{background:#202124!important;color:white!important;border-color:#202124!important}body.compactControls #shell .todayPageHeading>button{border-radius:24px!important;padding:10px 18px!important;background:#f4f4f7!important;color:#0879df!important}body.compactControls #shell .todayStoreColumn .todayShiftCard{border-radius:15px!important;border:1px solid #e5e7ec!important;background:white!important}body.compactControls #shell .todayStoreColumn .todayShiftCard.unknownTime{border-style:dashed!important}body.compactControls #shell .calendarListMode .day .shift{border:1px solid #e5e7ec!important;border-radius:15px!important}body.compactControls #shell .calendarListMode .day .shift[data-shop=oi]{border-left:3px solid var(--venue-color,#e58d0b)!important}body.compactControls #shell .calendarListMode .day .shift[data-shop=oz]{border-left:3px solid var(--venue-color,#10a391)!important}body.compactControls #shell .calendarListMode .day .shift[data-shop=lilith]{border-left:3px solid var(--venue-color,#8953da)!important}@media(max-width:550px){.groupTitleText{font-size:28px}.shopIdentity #shopTitle .shopTitleChoice{min-height:38px!important}.todayVenueChips{overflow-x:auto;flex-wrap:nowrap;padding-bottom:5px}.todayVenueChips>button{flex:none}}

/* Home starts with the shop directory; venue context belongs to shop pages. */
body.homeWorkspaceMode #shell>main>header{display:none!important}

/* Hover feedback follows the pointer; selected state returns after leaving. */
body.compactControls #shell .navShopMenu button{border-radius:9px!important;box-shadow:none!important;text-align:left}body.compactControls #shell .navShopMenu button:hover,body.compactControls #shell .navShopMenu button:focus-visible{background:#edf3fb!important;color:#075caf!important;box-shadow:none!important}body.compactControls #shell .navShopMenu:has(button:hover) button.active:not(:hover){background:transparent!important;box-shadow:none!important}#shell #shops>button:hover,#shell #shops>.navShopPicker>summary:hover{background:#fff!important;color:#075caf!important}#shell #shops:has(>button:hover)>button.active:not(:hover){background:transparent!important;box-shadow:none!important}body.homeWorkspaceMode .calendarCard,body.homeWorkspaceMode .rosterDisclosure,body.homeWorkspaceMode .below,body.homeWorkspaceMode .workspaceNav{display:none!important}@media(prefers-reduced-motion:no-preference){.navShopMenu button{transition:background-color .12s ease,color .12s ease}}

/* Shared alignment pass across directory, schedules, roster and management forms. */
#shell>aside .brand{margin-bottom:0!important;flex-shrink:0}.navShopMenu{max-height:min(65dvh,440px);overflow-y:auto;overscroll-behavior:contain}.shopHomeGrid{align-items:stretch;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}.shopHomeCard{min-width:0;gap:0}.shopHomeHeading{width:100%;justify-content:space-between}.shopHomeHours{overflow-wrap:anywhere}.shopHomeActions{padding-top:8px;align-items:stretch}.shopHomeActions>*{min-height:40px!important}.shopHomeAdminActions{margin-top:12px;gap:8px}.homeAdminToolbar{align-items:center;gap:8px;flex-wrap:wrap}.todayShiftCard .maidAvatar{flex-shrink:0}.todayShiftInfo{min-width:0}.todayStoreHeading h2{min-width:0}.calendarHead{align-items:center;flex-wrap:wrap}.monthControls{align-items:center;gap:8px}.calendarStatus{align-items:center;flex-wrap:wrap}.calendarLegend{flex-wrap:wrap}.openingHours{overflow-wrap:anywhere}.workspaceNav{flex-wrap:wrap}#notice:empty{display:none!important}#staffRoster .staffExpanded .foldActions{align-content:start}.formGrid{align-items:start}.formGrid>label{min-width:0}#dialogBody input:not([type=checkbox]):not([type=radio]),#dialogBody select{max-width:100%;box-sizing:border-box}#dialogBody .reviewEditorHead{align-items:baseline;flex-wrap:wrap;gap:6px 12px}#dialogBody .reviewEditor{min-width:0}#dialog .dialogHead{align-items:center}#dialogTitle{line-height:1.4;overflow-wrap:anywhere}#dialogBody .reviewEditorActions{gap:8px;flex-wrap:wrap}#shell footer{font-size:12px;line-height:1.65;color:#6d7580;padding-top:16px}.todayVenueChips{scrollbar-width:thin}.calendarScrollArea{overscroll-behavior:contain}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #0878da;outline-offset:3px}
@media(min-width:851px){body[data-page=admin] main>header{flex-wrap:wrap;gap:16px}body[data-page=admin] main>header>.actions{display:flex;flex-wrap:wrap;gap:8px;width:100%;justify-content:flex-end}body[data-page=admin] main>header>.actions button{white-space:nowrap}.shopHomeGrid{gap:18px}}
@media(max-width:650px){#shell>aside{gap:10px!important}.shopHomeGrid{gap:12px}.shopHomeActions{width:100%}.shopHomeActions>*{flex:1}.calendarHead{gap:10px!important}.calendarHead>.monthControls{width:100%;justify-content:flex-start}.calendarHead>.maidMultiFilter{max-width:100%}.calendarStatus{gap:6px 12px}.calendarLegend{gap:8px}.actions{gap:8px!important;align-items:stretch}.actions>.updateActions{display:flex;flex-wrap:wrap;gap:8px}.actions button{min-height:42px!important}#dialog{max-width:calc(100vw - 16px);max-height:94dvh}#dialogBody .formGrid{grid-template-columns:minmax(0,1fr);gap:12px}#dialogBody .reviewEditorActions>*{min-height:42px}.todayStoreHeading{gap:8px}.todayStoreBadge{max-width:45%;white-space:normal;text-align:center}}

/* Dense mobile layout with one consistent horizontal grid. */
@media(max-width:650px){
body.compactControls #shell>aside{padding:10px 12px!important;gap:8px!important;align-items:center!important}#shell>aside .brand{font-size:19px!important;line-height:1.3;margin:0!important}#shell>aside #shops{width:100%;display:grid!important;grid-template-columns:1fr 1fr 1.35fr;gap:2px!important;margin:0!important;padding:4px!important;border-radius:22px!important;box-sizing:border-box}#shell #shops>button,#shell #shops>.navShopPicker>summary{width:100%;text-align:center;box-sizing:border-box;font-size:13px!important;min-height:38px!important;padding:8px 6px!important;margin:0!important}#shell #shops>.navShopPicker{min-width:0}#shell .navShopMenu{min-width:230px;text-align:left}#shell .navShopMenu button{min-height:40px!important;padding:8px 12px!important}
body.compactControls #shell>main{padding:14px 12px!important}#shopHome>h1{font-size:25px!important;line-height:1.3;margin:0 0 5px!important}#shopHome>p{font-size:12px!important;line-height:1.5;margin:0 0 12px!important}.shopHomeGrid{gap:10px!important}.shopHomeCard{padding:13px 14px!important;border-radius:16px!important;min-height:0!important}.shopHomeHeading h2{font-size:18px!important;line-height:1.35;margin:0!important}.shopHomeHours{font-size:13px!important;line-height:1.5;margin:7px 0 3px!important}.shopHomeCard>.small{font-size:12px!important;line-height:1.4;margin:0 0 6px!important}.shopHomeLinks{gap:6px 12px!important;font-size:12px!important;margin:5px 0 9px!important}.shopHomeActions{padding:0!important;gap:8px!important;margin-top:0!important}.shopHomeActions>button,.shopHomeActions>a{min-height:36px!important;padding:7px 10px!important;font-size:13px!important;border-radius:10px!important}.shopHomeAdminActions{margin-top:9px!important;padding-top:8px!important}.homeAdminToolbar{margin:8px 0 12px!important}
main>header{margin-bottom:12px!important;gap:10px!important}main>header>div:first-child:has(.openingHours){gap:9px!important}.shopIdentity #shopTitle{font-size:27px!important;line-height:1.3!important}.shopQuickLinks{gap:6px!important;margin-top:7px!important}.shopQuickLinks .shopWebsite{min-height:34px!important;font-size:12px!important;padding:6px 9px!important}.openingHours{padding:10px 12px!important;border-radius:12px!important;font-size:12px!important;line-height:1.5!important;margin:0!important}.openingHours p{margin:4px 0!important}.openingHours a{font-size:12px!important}#fetchStatus{margin:0!important;font-size:11px!important;line-height:1.4!important}#shell main .workspaceNav{margin:0 0 12px!important;gap:18px!important}.workspaceNav>button{padding:8px 0!important;font-size:14px!important}
body.compactControls #shell .calendarCard .calendarHead{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:8px!important;align-items:center!important;margin:0 0 10px!important}.calendarHead>.monthControls{grid-column:1/-1;display:grid!important;grid-template-columns:36px minmax(0,1fr) 36px auto;gap:7px!important;width:100%;margin:0!important;align-items:center}.monthControls #month{width:100%!important;min-width:0!important;font-size:20px!important;padding:4px 0!important;min-height:38px!important;height:38px!important;text-align:left}.monthControls>button{min-height:36px!important;height:36px!important;min-width:36px!important;padding:5px 9px!important;margin:0!important;font-size:13px!important}.calendarHead>.maidMultiFilter:not([hidden]){grid-column:1;grid-row:3;justify-self:stretch;margin:0!important}.calendarHead>.maidMultiFilter>summary{padding:8px 10px!important;min-height:36px!important;font-size:13px!important;box-sizing:border-box}.calendarHead>.calendarDataActions{grid-column:2;grid-row:3;margin:0!important;justify-self:end}.calendarDataActions>summary{min-height:36px!important;height:36px!important;width:38px!important;padding:5px!important;box-sizing:border-box}.calendarHead>.calendarViewSwitch{grid-column:1;grid-row:2;justify-self:start;display:flex;gap:2px;margin:0!important;padding:3px!important;border-radius:12px!important}.calendarHead>.calendarViewSwitch>button{min-height:34px!important;padding:6px 14px!important;margin:0!important;font-size:13px!important;border-radius:9px!important}.calendarHead>.pastSwitch{grid-column:2;grid-row:2;justify-self:end;min-height:36px!important;padding:2px 0!important;margin:0!important;font-size:12px!important;white-space:nowrap}.calendarStatus{display:flex!important;justify-content:space-between;align-items:center;gap:5px 8px!important;margin:6px 0 10px!important;padding:0 0 8px!important}.calendarStatus p{font-size:11px!important;line-height:1.4;margin:0!important}.calendarLegend{gap:7px!important}.closedDaysDisclosure{margin:0 0 8px!important;padding:0!important}.closedDaysDisclosure>summary{font-size:12px!important;min-height:34px;padding:7px 2px!important}.calendarScrollArea{padding:0!important}body.compactControls #shell .calendarCard.calendarListMode .day:not(.outside){margin-bottom:8px!important;padding:10px!important;grid-template-columns:64px minmax(0,1fr)!important;gap:8px!important;border-radius:14px!important;min-height:0!important}.calendarListMode .dayDateHeader>.dateNumber{width:64px!important;box-sizing:border-box;font-size:12px!important;padding:8px 5px!important;line-height:1.5!important}.calendarListMode .dayShiftList{gap:7px!important}body.compactControls #shell .calendarListMode .day .shift{min-height:56px!important;padding:9px!important;font-size:14px!important;border-radius:11px!important}.calendarListMode .day .shift span{font-size:12px!important}.todayPageHeading{margin-bottom:16px!important}.todayVenueChips{margin-bottom:14px!important}.todayStoreColumn{padding:13px!important}.todayStoreHeading{margin-bottom:10px!important}.todayStoreColumn .todayShiftCard{min-height:60px!important;padding:10px!important;margin-bottom:8px!important}#staffRoster .rosterFilters{margin:10px 0 6px!important}#shell footer{padding-top:12px!important;font-size:11px!important}
}

@media(max-width:650px){body.compactControls #shell .calendarCard.calendarListMode .day .dateNumber{font-size:0!important}.calendarListMode .dateNumber:after{font-size:12px!important;line-height:1.5!important}}

@media(max-width:650px){body.compactControls #shell .calendarHead>#maidFilter{grid-column:1!important;grid-row:3!important;width:100%!important;min-width:0!important;max-width:none!important;margin:0!important;justify-self:stretch!important}body.compactControls #shell .calendarHead>#maidFilter>summary{width:100%!important;box-sizing:border-box}body.compactControls #shell .calendarHead>.calendarDataActions{grid-column:2!important;grid-row:3!important;justify-self:end!important}}

/* Seven-day month grids need readable columns, never seven squeezed text strips. */
@media(max-width:650px){
#shell>main,.calendarCard{min-width:0;max-width:100%;box-sizing:border-box}body.calendarWorkspaceMode .calendarCard:not(.calendarListMode) .calendarScrollArea{overflow-x:auto!important;overflow-y:auto!important;width:100%;max-width:100%;min-width:0;overscroll-behavior-x:contain;scrollbar-width:thin;padding-bottom:8px!important}.calendarCard:not(.calendarListMode) #calendar,.calendarCard:not(.calendarListMode) .weekdays{width:980px!important;min-width:980px!important;grid-template-columns:repeat(7,minmax(0,1fr))!important}.calendarCard:not(.calendarListMode) .weekdays{padding:8px 0!important}.calendarCard:not(.calendarListMode) .day{padding:8px!important;min-width:0;min-height:120px!important}.calendarCard:not(.calendarListMode) .dayDateHeader{min-height:32px;gap:5px}.calendarCard:not(.calendarListMode) .dayShiftList{display:grid;gap:6px;min-width:0}body.compactControls #shell .calendarCard:not(.calendarListMode) .day .shift{font-size:13px!important;line-height:1.45!important;padding:7px!important;overflow-wrap:normal!important;word-break:normal!important;min-width:0;white-space:normal}.calendarCard:not(.calendarListMode) .day .shift>span:not(.maidAvatar){font-size:12px!important;display:block;white-space:nowrap!important;word-break:normal!important;overflow-wrap:normal!important}.calendarCard:not(.calendarListMode) .day .shift .maidAvatar{display:inline-block!important}.calendarCard:not(.calendarListMode) .dayMore{font-size:12px!important;white-space:nowrap;word-break:normal;padding:5px!important}.calendarCard:not(.calendarListMode) .dayNoShifts,.calendarCard:not(.calendarListMode) .closedDayLabel{font-size:12px;line-height:1.5;word-break:normal;overflow-wrap:normal}.calendarCard.calendarListMode #calendar{min-width:0!important;width:100%!important}.calendarCard.calendarListMode .weekdays{display:none!important}.calendarCard.calendarListMode .day .shift>span:not(.maidAvatar){white-space:normal;word-break:normal;overflow-wrap:normal}.calendarCard:not(.calendarListMode) .calendarScrollArea:before{content:'左右滑動查看整週';display:block;font-size:11px;color:#657184;margin:4px 0 8px}
}
/* Mobile month overview: dates and names only, all seven columns visible. */
@media(max-width:650px){
body.compactControls #shell .calendarCard:not(.calendarListMode) .calendarScrollArea{overflow:visible!important;padding:0!important}
.calendarCard:not(.calendarListMode) .calendarScrollArea:before,.calendarCard:not(.calendarListMode) .referenceSummary{display:none!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) #calendar,body.compactControls #shell .calendarCard:not(.calendarListMode) .weekdays{width:100%!important;min-width:0!important;grid-template-columns:repeat(7,minmax(0,1fr))!important;gap:0!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day{height:84px!important;min-height:84px!important;padding:3px 2px!important;overflow:hidden;box-sizing:border-box;border-radius:0!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .dayDateHeader{height:24px;min-height:24px;display:block!important;margin:0!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .dateNumber{font-size:12px!important;line-height:20px!important;padding:0!important;min-width:22px!important;width:22px!important;height:22px!important;min-height:22px!important;margin:0!important;border-radius:7px!important}
.calendarCard:not(.calendarListMode) .dateNumber:after,.calendarCard:not(.calendarListMode) .dayEventLabels,.calendarCard:not(.calendarListMode) .todayLabel,.calendarCard:not(.calendarListMode) .dayMore,.calendarCard:not(.calendarListMode) .closedDayLabel{display:none!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .dayShiftList{display:block!important;margin:0!important;padding:0!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day .shift{display:block!important;width:100%!important;min-height:0!important;height:17px!important;margin:0!important;padding:0 2px!important;border:0!important;border-radius:3px!important;background:transparent!important;box-shadow:none!important;font-size:11px!important;line-height:17px!important;white-space:nowrap!important;text-overflow:ellipsis;overflow:hidden!important;box-sizing:border-box;text-align:left}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day .shift>span,body.compactControls #shell .calendarCard:not(.calendarListMode) .day .shift .maidAvatar{display:none!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day.past{display:block!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day.outside{display:block!important;visibility:hidden}
.calendarCard:not(.calendarListMode) .weekdays{font-size:12px!important;padding:5px 0!important}
}
/* Home directory: compact reference layout with aligned content and actions. */
#shopHome .homeHeading{margin:8px 0 20px}#shopHome .homeDate{font-size:13px;color:#0879df;margin:0 0 5px}#shopHome .homeHeading h1{font-size:36px;line-height:1.25;margin:0 0 7px;letter-spacing:-.025em}#shopHome .homeHeading>.muted{font-size:15px;margin:0;line-height:1.5}
#shopHome .homeTotals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 0 18px}#shopHome .homeTotals>div{background:#f5f5f7;border-radius:18px;padding:15px 18px}#shopHome .homeTotals span{display:block;font-size:13px;color:#596574;margin-bottom:5px}#shopHome .homeTotals strong{font-size:30px;line-height:1.2;font-variant-numeric:tabular-nums}#shopHome .homeTotals small{font-size:13px;color:#596574;margin-left:5px}
#shopHome .homeFilters{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 18px}body.compactControls #shell #shopHome .homeFilters button{min-height:36px!important;margin:0;padding:7px 14px!important;border:1px solid #e2e5eb;border-radius:20px;background:#fff;font-size:13px}#shopHome .homeFilters button[aria-pressed=true]{background:#202124!important;color:#fff!important;border-color:#202124!important}
#shopHome .shopHomeGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:stretch}#shopHome .shopHomeCard{display:flex;flex-direction:column;gap:0;padding:20px!important;border-radius:22px!important;min-height:0!important;background:#f5f5f7}#shopHome .shopHomeHeading{display:flex;align-items:start;gap:8px;margin:0;min-height:30px}#shopHome .shopHomeHeading h2{font-size:21px;line-height:1.35;margin:0;overflow-wrap:anywhere}#shopHome .shopHomeClosed:empty{display:none}#shopHome .shopHomeClosed{font-size:11px;white-space:nowrap;padding:4px 7px;border-radius:12px;background:#e8e9ed;color:#535e6b}#shopHome .homeCategory{font-size:12px;color:#626b76;margin:2px 0 12px}#shopHome .shopHomeHours{font-size:13px;line-height:1.65;margin:0 0 10px!important;min-height:44px;overflow-wrap:anywhere}#shopHome .homeShiftCount{font-size:13px;line-height:1.5;margin:0 0 12px;color:#535e6b}#shopHome .shopHomeActions{display:flex;gap:8px;padding:0!important;margin-top:auto!important;width:100%;align-items:center}body.compactControls #shell #shopHome .shopHomeActions>button{background:#0076e5!important;color:white!important;border:0;flex:1;min-height:40px!important;border-radius:22px!important;margin:0;padding:8px 12px!important;font-size:14px!important}body.compactControls #shell #shopHome .shopHomeActions>a{flex:0 0 auto;min-height:40px!important;border:0;border-radius:22px!important;background:#e8e8ee;color:#364353;padding:8px 15px!important;font-size:13px!important;box-sizing:border-box;text-align:center}#shopHome .shopHomeLinks{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px!important;margin:14px 0 0!important;line-height:1.5}#shopHome .homeFootnote{font-size:11px;line-height:1.6;color:#657184;margin:14px 0 0}
@media(max-width:1100px){#shopHome .shopHomeGrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){#shopHome .shopHomeGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){#shopHome .homeHeading{margin:0 0 12px}#shopHome .homeHeading h1{font-size:26px!important}#shopHome .homeHeading>.muted{font-size:12px}#shopHome .homeDate{font-size:11px;margin-bottom:3px}#shopHome .homeTotals{gap:7px;margin-bottom:12px}#shopHome .homeTotals>div{padding:10px;border-radius:12px}#shopHome .homeTotals span{font-size:10px;line-height:1.5;margin-bottom:3px}#shopHome .homeTotals strong{font-size:23px}#shopHome .homeTotals small{font-size:11px;margin-left:3px}#shopHome .homeFilters{gap:6px;margin-bottom:12px}body.compactControls #shell #shopHome .homeFilters button{font-size:12px!important;padding:6px 12px!important;min-height:34px!important}#shopHome .shopHomeGrid{grid-template-columns:minmax(0,1fr);gap:10px!important}#shopHome .shopHomeCard{padding:13px 14px!important;border-radius:15px!important}#shopHome .shopHomeHeading{min-height:24px;align-items:center}#shopHome .shopHomeHeading h2{font-size:18px!important}#shopHome .homeCategory{margin:1px 0 6px;font-size:11px}#shopHome .shopHomeHours{min-height:0;margin:0 0 5px!important;font-size:12px!important;line-height:1.5!important}#shopHome .homeShiftCount{margin:0 0 8px;font-size:12px}#shopHome .shopHomeLinks{margin:9px 0 0!important;font-size:12px!important}body.compactControls #shell #shopHome .shopHomeActions>button,body.compactControls #shell #shopHome .shopHomeActions>a{min-height:36px!important;padding:7px 12px!important;font-size:13px!important}}
/* Mobile month navigator: compact dates above a selected-day schedule. */
.mobileMonthVenues,.mobileMonthDetail,.mobileMonthMarks{display:none}
@media(max-width:650px){
body.calendarWorkspaceMode #shell>main>header,body.calendarWorkspaceMode #shell main .workspaceNav{display:none!important}
.calendarCard:not(.calendarListMode) .mobileMonthVenues{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;margin:0 0 14px;padding:1px}
body.compactControls #shell .mobileMonthVenues button{flex:0 0 auto;min-height:36px!important;padding:7px 14px!important;margin:0!important;border:1px solid #e3e6ed;border-radius:22px;background:white;font-size:13px}.mobileMonthVenues button[aria-pressed=true]{background:#202124!important;color:white!important;border-color:#202124!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .calendarHead{grid-template-columns:minmax(0,1fr) 126px!important;gap:9px!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .monthControls{grid-column:1;grid-row:1;grid-template-columns:32px minmax(0,1fr) 32px;gap:3px!important}.calendarCard:not(.calendarListMode) .monthControls>button:last-child{display:none!important}.calendarCard:not(.calendarListMode) .monthControls #month{font-size:16px!important}.calendarCard:not(.calendarListMode) .monthControls>button{min-width:32px!important;width:32px!important;height:36px!important;padding:5px!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .calendarViewSwitch{grid-column:2!important;grid-row:1!important;justify-self:end}.calendarCard:not(.calendarListMode) .calendarViewSwitch>button{padding:6px 11px!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .calendarHead>#maidFilter{grid-column:1/-1!important;grid-row:2!important}.calendarCard:not(.calendarListMode) .calendarDataActions{display:none!important}.calendarCard:not(.calendarListMode) .closedDaysDisclosure{margin-bottom:6px!important}.calendarCard:not(.calendarListMode) .closedDaysDisclosure>summary{font-size:11px!important;min-height:24px;padding:3px 0!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day{height:55px!important;min-height:55px!important;padding:3px!important;border:0!important;box-shadow:none!important;background:transparent!important;border-radius:12px!important;display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:2px}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day .dayShiftList,.calendarCard:not(.calendarListMode) .dayNoShifts,.calendarCard:not(.calendarListMode) .dayDateHeader>span{display:none!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .dayDateHeader{height:27px;min-height:27px;width:100%;text-align:center;position:static!important}body.compactControls #shell .calendarCard:not(.calendarListMode) .dateNumber{width:27px!important;height:27px!important;min-height:27px!important;line-height:27px!important;font-size:15px!important;color:#24272b;background:transparent!important;border:0!important;border-radius:50%!important;font-weight:500;box-shadow:none!important}
.calendarCard:not(.calendarListMode) .day.past .dateNumber{color:#91959c!important}.calendarCard:not(.calendarListMode) .day.today .dateNumber{background:#0078e9!important;color:white!important;font-weight:700!important}.calendarCard:not(.calendarListMode) .dayDateHeader:after{display:none!important}
body.compactControls #shell .calendarCard:not(.calendarListMode) .day.mobileSelected{background:#edf6ff!important;box-shadow:inset 0 0 0 2px #087fea!important}
.calendarCard:not(.calendarListMode) .mobileMonthMarks{display:flex;align-items:center;justify-content:center;gap:3px;height:10px;min-height:10px}.mobileMonthMarks i{display:block;width:5px;height:5px;border-radius:50%;background:#0078e9}.day.past .mobileMonthMarks i{background:#bfc3cb}.mobileMonthMarks .mobileClosed{font-size:11px;line-height:12px;color:#ba4d36}.calendarCard:not(.calendarListMode) .weekdays{padding:4px 0!important;margin:0 0 3px!important}.weekdays>:first-child,.weekdays>:last-child{color:#ba4d36!important}
.calendarCard:not(.calendarListMode) .mobileMonthDetail{display:block;margin-top:14px;padding:14px;border-radius:18px;background:#f5f5f7}.mobileDetailHead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.mobileDetailHead h2{font-size:18px;margin:0}.mobileDetailHead>span{font-size:12px;color:#0673db}
body.compactControls #shell .mobileDetailShift{display:flex;align-items:center;gap:10px;width:100%;padding:10px!important;min-height:62px!important;margin:0 0 8px!important;background:white;border:0;border-radius:13px;text-align:left;box-sizing:border-box}.mobileDetailShift .maidAvatar{width:36px!important;height:36px!important;flex:0 0 36px}.mobileDetailShift>div{min-width:0;display:grid;gap:3px}.mobileDetailShift strong{font-size:14px;color:#24272b;overflow-wrap:anywhere}.mobileDetailShift span{font-size:12px;color:#626b76}.mobileDetailNav{display:flex;gap:8px;margin-top:9px}body.compactControls #shell .mobileDetailNav button{flex:1;margin:0!important;padding:8px!important;min-height:36px!important;border:0;border-radius:20px;background:#e8e9ef;font-size:13px}
}
@media(max-width:650px){body.compactControls #shell .calendarCard:not(.calendarListMode) .day.today .dateNumber{background:#0078e9!important;color:white!important;font-weight:700!important}.calendarCard:not(.calendarListMode) .mobileMonthVenues{overscroll-behavior-x:contain}}
/* Mobile list: one date heading and one continuous group of readable rows. */
.shiftName{font-size:inherit;font-weight:inherit}.mobileListCount,.mobileListToday{display:none}
@media(max-width:650px){
.calendarCard.calendarListMode .mobileMonthVenues{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;margin:0 0 14px;padding:1px;overscroll-behavior-x:contain}
body.compactControls #shell .calendarCard.calendarListMode .calendarHead{grid-template-columns:minmax(0,1fr) 126px!important;gap:9px!important}body.compactControls #shell .calendarCard.calendarListMode .monthControls{grid-column:1;grid-row:1;grid-template-columns:32px minmax(0,1fr) 32px;gap:3px!important}.calendarCard.calendarListMode .monthControls>button:last-child{display:none!important}.calendarCard.calendarListMode .monthControls #month{font-size:16px!important}.calendarCard.calendarListMode .monthControls>button{min-width:32px!important;width:32px!important;height:36px!important;padding:5px!important}
body.compactControls #shell .calendarCard.calendarListMode .calendarViewSwitch{grid-column:2!important;grid-row:1!important;justify-self:end}.calendarCard.calendarListMode .calendarViewSwitch>button{padding:6px 11px!important}body.compactControls #shell .calendarCard.calendarListMode .calendarHead>#maidFilter{grid-column:1!important;grid-row:2!important}.calendarCard.calendarListMode .calendarDataActions{display:none!important}body.compactControls #shell .calendarCard.calendarListMode .pastSwitch{grid-column:2!important;grid-row:2!important;font-size:11px!important;min-height:36px!important}.calendarCard.calendarListMode .closedDaysDisclosure>summary{font-size:11px!important;min-height:24px;padding:3px 0!important}
body.compactControls #shell .calendarCard.calendarListMode #calendar{display:block!important;background:#f5f5f7;margin-top:10px;padding:14px 0 0!important;box-sizing:border-box}
body.compactControls #shell .calendarCard.calendarListMode .day:not(.outside){display:block!important;padding:0!important;margin:0 0 20px!important;border:0!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;min-height:0!important;scroll-margin-top:12px}
body.compactControls #shell .calendarCard.calendarListMode.hidePastDays .day.past{display:none!important}
body.compactControls #shell .calendarCard.calendarListMode .day.today{background:transparent!important;box-shadow:none!important}
body.compactControls #shell .calendarCard.calendarListMode .dayDateHeader{display:flex!important;align-items:center;gap:7px;padding:0 3px!important;min-height:28px!important;margin:0 0 8px!important;position:static!important;width:100%;box-sizing:border-box}
body.compactControls #shell .calendarCard.calendarListMode .dayDateHeader>.dateNumber{width:auto!important;min-height:28px!important;height:auto!important;max-width:none!important;padding:0!important;margin:0!important;line-height:1.4!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:transparent!important;font-size:0!important;color:#24272b!important;text-align:left}
body.compactControls #shell .calendarCard.calendarListMode .dateNumber:after{display:inline!important;font-size:16px!important;line-height:1.4!important;font-weight:650;color:inherit!important}
body.compactControls #shell .calendarCard.calendarListMode .day.today .dateNumber{color:#0078e9!important}.calendarCard.calendarListMode .day.today .dayDateHeader:after{content:'今天'!important;display:block!important;position:static!important;background:none!important;color:#0078e9!important;padding:0!important;font-size:12px!important;order:1;width:auto!important;height:auto!important}.calendarCard.calendarListMode .dayDateHeader>.mobileListCount{display:block!important;margin-left:auto;font-size:12px;color:#6c7480;order:2;white-space:nowrap}.calendarCard.calendarListMode .dayEventLabels{flex:1;min-width:0}
body.compactControls #shell .calendarCard.calendarListMode .dayShiftList{display:block!important;border:1px solid #e4e6ed;border-radius:16px;background:white;overflow:hidden;padding:0!important;gap:0!important;box-sizing:border-box}.calendarCard.calendarListMode .dayShiftList:empty{display:none!important}body.compactControls #shell .calendarCard.calendarListMode .day.today .dayShiftList{border:2px solid #0078e9!important}
body.compactControls #shell .calendarCard.calendarListMode .day .shift{display:grid!important;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;column-gap:9px;min-height:56px!important;width:100%!important;max-width:none!important;box-sizing:border-box;padding:10px 12px!important;margin:0!important;background:white!important;border:0!important;border-bottom:1px solid #e9ebf0!important;border-radius:0!important;box-shadow:none!important;font-size:14px!important;line-height:1.45!important;text-align:left;white-space:normal!important}body.compactControls #shell .calendarCard.calendarListMode .day .shift:last-child{border-bottom:0!important}
body.compactControls #shell .calendarCard.calendarListMode .day .shift .maidAvatar{display:block!important;width:34px!important;height:34px!important;min-width:34px!important;flex-basis:34px;grid-column:1;grid-row:1;margin:0!important}.calendarCard.calendarListMode .shift .shiftName{grid-column:2;grid-row:1;overflow-wrap:anywhere;font-size:14px!important;font-weight:500!important;min-width:0;color:#24272b}
body.compactControls #shell .calendarCard.calendarListMode .day .shift>span:not(.maidAvatar){grid-column:3;grid-row:1;margin:0!important;max-width:150px;font-size:12px!important;line-height:1.45!important;text-align:right;white-space:normal!important;word-break:normal!important;overflow-wrap:normal!important;color:#515d6c}
.calendarCard.calendarListMode .day .dayMore{display:none!important}.calendarCard.calendarListMode .closedDayLabel{font-size:12px!important;margin:5px 3px!important}.calendarCard.calendarListMode .dayNoShifts{font-size:12px!important;margin:6px 3px!important}.calendarCard.calendarListMode .mobileListToday{display:block;position:sticky;bottom:14px;width:max-content;max-width:100%;z-index:3;margin:14px auto!important;min-height:40px!important;padding:9px 20px!important;border:0;border-radius:24px;background:#25282d!important;color:white!important;font-size:13px;box-shadow:0 4px 14px #1e293b22}
}
@media(max-width:650px){body.compactControls #shell .calendarCard.calendarListMode .mobileListToday{border-radius:24px!important;padding:9px 20px!important}body.compactControls #shell .calendarCard.calendarListMode .day .shift.unknownTime>span:not(.maidAvatar){background:#eff0f5;border-radius:9px;padding:4px 7px!important;color:#646d79}.calendarCard.calendarListMode .closedDaysDisclosure{margin-bottom:6px!important}.calendarCard.calendarListMode .shiftName{line-height:1.5!important}}
/* Keep the multi-select inside the viewport and avoid a redundant today shortcut. */
@media(max-width:650px){body.compactControls #shell .calendarCard .calendarHead{position:relative!important}body.compactControls #shell .calendarHead>#maidFilter{position:static!important}body.compactControls #shell #maidFilter>.maidFilterPanel{position:absolute!important;top:100%!important;left:0!important;right:0!important;bottom:auto!important;transform:none!important;width:100%!important;min-width:0!important;max-width:100%!important;margin:5px 0 0!important;padding:12px!important;box-sizing:border-box;max-height:55dvh!important;overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior:contain;z-index:50!important;border:1px solid #dce3ed;border-radius:14px;background:white;box-shadow:0 8px 24px #172c4826}body.compactControls #shell #maidFilter .maidFilterPanel input[type=search]{width:100%;max-width:100%;box-sizing:border-box;min-width:0}body.compactControls #shell #maidFilter .maidFilterList{max-height:none!important;overflow:visible!important;min-width:0}body.compactControls #shell #maidFilter .maidFilterChoice{min-width:0;max-width:100%;box-sizing:border-box}body.compactControls #shell #maidFilter .maidFilterChoice>span{min-width:0;overflow-wrap:anywhere}body.compactControls #shell .calendarCard.calendarListMode #mobileListToday[hidden],body:has(#maidFilter[open]) #mobileListToday{display:none!important}}
/* Three equal mobile navigation segments, with identical box geometry. */
@media(max-width:650px){body.compactControls #shell>aside #shops{grid-template-columns:repeat(3,minmax(0,1fr))!important;align-items:stretch!important;gap:3px!important;padding:4px!important}body.compactControls #shell #shops>button,body.compactControls #shell #shops>.navShopPicker{width:100%!important;min-width:0!important;margin:0!important;box-sizing:border-box;height:40px!important;align-self:stretch!important}body.compactControls #shell #shops>button,body.compactControls #shell #shops>.navShopPicker>summary{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;height:40px!important;min-height:40px!important;margin:0!important;padding:0 5px!important;border:0!important;border-radius:19px!important;box-sizing:border-box;font-size:13px!important;line-height:20px!important;font-weight:600!important;letter-spacing:0!important;text-align:center!important}body.compactControls #shell #shops>.navShopPicker>summary::marker{content:''}body.compactControls #shell #shops>.navShopPicker>summary::-webkit-details-marker{display:none}}
.mapsSettings{border:1px solid #dfe5ee;border-radius:14px;padding:14px;margin:12px 0}.mapsSettings h3{margin:0 0 10px;font-size:16px}.mapsSettings>label{display:grid;gap:6px}.mapsSettings input{width:100%;box-sizing:border-box;min-width:0}.mapsPreview p{margin:4px 0;line-height:1.5}.mapsPreview>strong{display:block;margin-top:8px}.mapsSettings button{margin-top:10px}.mapsPreview button{max-width:100%;white-space:normal}
.reviewBatchActions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;position:sticky;top:0;z-index:5;background:white;padding:8px 0 12px;border-bottom:1px solid #e3e8f0;margin-bottom:10px}.reviewBatchActions button{margin:0!important}.reviewBatchActions p{margin:0;font-size:12px}.reviewFields select{max-width:100%;min-width:0}
.closureMonthControls{display:flex;align-items:center;gap:8px;margin:4px 0 12px}.closureMonthControls input{width:170px;min-width:0;font-size:17px;font-weight:600}.closureMonthControls button{min-width:36px;min-height:36px;margin:0!important}
#dialogBody .dialogFeedback{margin:0 0 12px;padding:10px 12px;border:1px solid #efc0bc;background:#fff1ef;color:#9a261e;border-radius:10px;line-height:1.5;font-size:13px}.reviewBatchActions>label{display:grid;gap:4px;font-size:12px}.reviewBatchActions select{min-height:36px;max-width:100%;font-size:13px}.closureCalendarEditor .multiDates>.monthControls[hidden]{display:none!important}.closureCalendarEditor .multiDates>strong{display:none}.closureMonthControls input{min-height:40px}.closureMonthControls button{min-height:40px!important;min-width:40px}.homeTotals span{overflow-wrap:anywhere}
.closureCalendarEditor .multiDates>.monthControls{display:none!important}
#dialogBody.shopEditor .shopEditorFooter{position:sticky;bottom:0;z-index:8;display:flex;justify-content:flex-end;gap:8px;padding:10px 0 2px;margin-top:14px;border-top:1px solid #e4e8ef;background:#fff;box-shadow:0 -8px 10px #ffffffee}body.compactControls #dialogBody.shopEditor .shopEditorFooter>button{position:static!important;margin:0!important;min-height:40px!important}@media(max-width:650px){#dialogBody.shopEditor .shopEditorFooter{padding:10px 0 4px}#dialogBody.shopEditor .shopEditorFooter>button{width:100%}}
.connectionStatus{font-size:12px;line-height:1.5;padding:10px 12px;margin:0 0 12px;border:1px solid #e7cd95;border-radius:10px;background:#fff8e8;color:#76500c}.connectionStatus[hidden]{display:none!important}

/* Shared venue identity across grouped schedules. */
[data-shop=oz]{--venue-color:#10a391}[data-shop=oi]{--venue-color:#e58d0b}[data-shop=lilith]{--venue-color:#8953da}[data-shop=aphrodite]{--venue-color:#d44e7b}[data-shop=yuma]{--venue-color:#5364ce}
.shopIdentity #shopTitle .shopTitleChoice[data-shop]:before{background:var(--venue-color,#097ddd)}
body.groupWorkspace #shell .day .shift[data-shop],body.groupWorkspace .mobileDetailShift[data-shop],body.groupWorkspace .agendaRow[data-shop]{border-inline-start:3px solid var(--venue-color,#097ddd)!important}
body.groupWorkspace .shift[data-shop] .shiftName:before,body.groupWorkspace .mobileDetailShift[data-shop] .shiftName:before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--venue-color,#097ddd);margin-inline-end:6px;vertical-align:middle;flex-shrink:0}
body.groupWorkspace .shiftName{min-width:0}
body.groupWorkspace .agendaRow[data-shop]{padding-inline-start:12px}

.mobileMonthVenues>button[data-shop=oz]:before,.mobileMonthVenues>button[data-shop=oi]:before,.mobileMonthVenues>button[data-shop=lilith]:before,.mobileMonthVenues>button[data-shop=aphrodite]:before,.mobileMonthVenues>button[data-shop=yuma]:before{content:'';display:inline-block;width:7px;height:7px;background:var(--venue-color);border-radius:50%;margin-inline-end:5px;vertical-align:middle}

.shopColorInput{width:80px!important;min-width:80px!important;height:42px;padding:4px!important;cursor:pointer}

body.groupWorkspace .agendaRow[data-shop] .personWithAvatar>:is(strong,a):before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--venue-color);margin-inline-end:6px;vertical-align:middle}
.shopOrderRow .shopOrderHandle{width:44px;min-height:44px!important;padding:4px!important;font-size:27px!important;cursor:grab;touch-action:none;user-select:none;line-height:1}.shopOrderRow.dragging{border-color:#0784ed;background:#edf6ff;box-shadow:0 3px 12px #1379c922}.shopOrderRow.dragging .shopOrderHandle{cursor:grabbing}.shopOrderRow:has(.shopOrderHandle:focus-visible){outline:2px solid #0784ed;outline-offset:2px}

/* Compact day management stays out of the mobile month grid. */
.dayManage{font-size:12px;padding:3px 6px;min-height:28px;}
@media(max-width:650px){.calendarCard:not(.calendarListMode) .dayManage{display:none}.calendarListMode .dayManage{margin-left:auto}}

/* Keep day actions inside the date column, independent of activity labels. */
body.compactControls #shell .calendarCard.calendarListMode .dayDateHeader{display:grid!important;grid-template-columns:100px minmax(0,1fr);grid-template-rows:auto auto;align-items:start;gap:6px 12px;min-width:0}
.calendarCard.calendarListMode .dayDateHeader>.dateNumber{grid-column:1;grid-row:1}
.calendarCard.calendarListMode .dayDateHeader>.dayManage{grid-column:1;grid-row:2;justify-self:start;align-self:start;margin:0!important;width:auto!important;min-width:48px;white-space:nowrap;word-break:keep-all;flex-shrink:0}
.calendarCard.calendarListMode .dayDateHeader>.dayEventLabels{grid-column:2;grid-row:1/span 2;align-self:start}
@media(max-width:650px){
 body.compactControls #shell .calendarCard.calendarListMode .dayDateHeader{grid-template-columns:max-content minmax(0,1fr) auto;gap:5px 8px}
 .calendarCard.calendarListMode .dayDateHeader>.dayEventLabels{grid-column:2/-1;grid-row:2}
 .calendarCard.calendarListMode .dayDateHeader>.mobileListCount{grid-column:3;grid-row:1;margin:0;justify-self:end}
 .calendarCard.calendarListMode .day.today .dayDateHeader:after{grid-column:2;grid-row:1;justify-self:start}
}

.todayScheduledFilter{margin:0 0 16px;cursor:pointer}.todayStoreColumn[hidden]{display:none!important}

.cloudSnapshotNotice{font-size:12px;color:#626267;padding:8px 0;margin:0 0 12px;border-bottom:1px solid #e2e2e7}
