/* All surfaces inherit the semantic palette supplied for classic/cloud/maple. */
#partyCalendarSection.party-calendar {
  --cal-panel:var(--ui-panel, #1c241f); --cal-raised:var(--ui-raised, #29332c);
  --cal-inset:var(--ui-inset, #141c17); --cal-ink:var(--ui-ink, #eeeede);
  --cal-muted:var(--ui-muted, #bec7b8); --cal-line:var(--ui-line, #59644f);
  --cal-control:var(--ui-control-line, #879679); --cal-accent:var(--ui-accent, #d5c18b);
  --cal-on-accent:var(--ui-on-accent, #19231c); --cal-soft:var(--ui-soft, #364034);
  --cal-success:var(--ui-success, #c2e3b8); --cal-success-bg:var(--ui-success-bg, #304936);
  --cal-danger:var(--ui-danger, #ffc0b1); --cal-danger-bg:var(--ui-danger-bg, #482c29);
  --cal-radius:var(--ui-radius, 9px);
  width:100%; min-width:0; margin:20px 0 0; color:var(--cal-ink); background:var(--cal-panel);
  border:1px solid var(--cal-line); border-radius:var(--cal-radius); padding:22px; box-shadow:none;
  font:400 14px/1.6 'Noto Sans TC',sans-serif;
}
#partyCalendarSection[hidden] { display:none!important; }
#partyList[hidden],#partyFilters[hidden] { display:none!important; }
:root[data-appearance] .party-browse-tools .party-layout-switch { width:auto; min-width:0; display:grid; grid-template-columns:repeat(3,minmax(44px,1fr)); }
:root[data-appearance] .party-browse-tools .party-layout-switch button { min-width:44px; min-height:44px; }
#partyCalendarSection :is(h2,h3,h4,p) { margin:0; text-shadow:none; letter-spacing:normal; }
#partyCalendarSection :is(h2,h3,h4,strong,b) { color:inherit; }
#partyCalendarSection h2 { font-size:25px; line-height:1.5; }
#partyCalendarSection h3 { font-size:17px; line-height:1.6; }
#partyCalendarSection p { font-size:12px; color:var(--cal-muted); }
#partyCalendarSection .cal-kicker { color:var(--cal-muted); font-size:11px; letter-spacing:.14em; }
#partyCalendarSection .cal-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:22px; }
#partyCalendarSection .cal-heading p { margin-top:5px; }
#partyCalendarSection .cal-timezone { color:var(--cal-muted); font-size:11px; white-space:nowrap; }
#partyCalendarSection .cal-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
#partyCalendarSection .cal-navigation,#partyCalendarSection .cal-switch { display:flex; gap:6px; flex-shrink:0; }
#partyCalendarSection .cal-range { text-align:center; flex:1; }
#partyCalendarSection button.cal-button {
  appearance:none; min-width:44px; min-height:44px; height:auto; padding:9px 13px; border:1px solid var(--cal-control);
  border-radius:calc(var(--cal-radius) * .7); background:var(--cal-raised); color:var(--cal-ink); box-shadow:none;
  font:600 12px/1.6 'Noto Sans TC',sans-serif; letter-spacing:normal; text-shadow:none; cursor:pointer;
  touch-action:manipulation; overflow-wrap:anywhere; white-space:normal;
}
#partyCalendarSection button::before,#partyCalendarSection button::after { content:none!important; }
#partyCalendarSection button.cal-button:hover:not(:disabled):not([aria-disabled="true"]) { background:var(--cal-soft); }
#partyCalendarSection button.cal-button:is([aria-pressed="true"],.cal-button-primary) { background:var(--cal-accent); color:var(--cal-on-accent); border-color:var(--cal-accent); }
#partyCalendarSection button.cal-button:is([aria-pressed="true"],.cal-button-primary):hover:not(:disabled):not([aria-disabled="true"]) { background:var(--cal-accent); color:var(--cal-on-accent); }
#partyCalendarSection button:focus-visible { outline:3px solid var(--cal-accent)!important; outline-offset:3px; position:relative; z-index:1; }
#partyCalendarSection button.cal-button:is(:disabled,[aria-disabled="true"]) { opacity:1; background:var(--cal-inset); color:var(--cal-muted); border-color:var(--cal-line); cursor:default; transform:none; }
/* Busy controls stay focusable; later theme hover/active effects must not imply availability. */
:root[data-appearance] #mainContent #partyCalendarSection button.cal-button[aria-disabled="true"] {
  background:var(--cal-inset)!important; color:var(--cal-muted)!important; border-color:var(--cal-line)!important;
  box-shadow:none!important; transform:none!important; filter:none!important; opacity:1!important; cursor:default;
}
#partyCalendarSection .cal-scopes { display:flex; gap:8px; flex-wrap:wrap; margin-top:16px; }
#partyCalendarSection .cal-scopes .cal-button { border-radius:999px; }
#partyCalendarSection .cal-status-row { display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:48px; margin-block:8px; }
#partyCalendarSection .cal-status-row[data-state="error"] { padding:10px 12px; background:var(--cal-danger-bg); border:1px solid var(--cal-danger); border-radius:var(--cal-radius); }
#partyCalendarSection .cal-status-row[data-state="error"] p { color:var(--cal-danger); }
#partyCalendarSection .cal-status-row .cal-button { flex-shrink:0; }
#partyCalendarSection .cal-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:22px; }
#partyCalendarSection .cal-date-panel,#partyCalendarSection .cal-agenda { min-width:0; }
#partyCalendarSection .cal-date-scroll { overflow-x:auto; padding:4px; margin:-4px; scrollbar-color:var(--cal-line) var(--cal-inset); }
#partyCalendarSection .cal-days { display:grid; grid-template-columns:repeat(7,minmax(44px,1fr)); gap:5px; min-width:338px; padding:1px; }
#partyCalendarSection button.cal-day {
  min-width:44px; min-height:86px; padding:8px 3px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px;
  background:var(--cal-inset); color:var(--cal-ink); border:1px solid var(--cal-line); border-radius:calc(var(--cal-radius) * .7);
  font:400 12px/1.4 'Noto Sans TC',sans-serif; box-shadow:none; text-shadow:none; cursor:pointer; touch-action:manipulation;
}
#partyCalendarSection button.cal-day:hover { border-color:var(--cal-accent); background:var(--cal-soft); }
#partyCalendarSection button.cal-day strong { font:700 21px/1.4 ui-monospace,monospace; color:inherit; }
#partyCalendarSection .cal-day-weekday { color:var(--cal-muted); font-size:11px; }
#partyCalendarSection .cal-day-count { color:var(--cal-muted); font-size:11px; min-height:14px; }
#partyCalendarSection button.cal-day[aria-current="date"] { border:2px solid var(--cal-accent); }
#partyCalendarSection button.cal-day[aria-pressed="true"] { background:var(--cal-accent); border-color:var(--cal-accent); color:var(--cal-on-accent); }
#partyCalendarSection button.cal-day[aria-pressed="true"] :is(.cal-day-weekday,.cal-day-count,.cal-day-preview) { color:var(--cal-on-accent); }
#partyCalendarSection .cal-weekday-labels { display:none; }
#partyCalendarSection .cal-day-preview { display:none; }
#partyCalendarSection .cal-calendar-note { margin-top:12px; font-size:11px; }
#partyCalendarSection .cal-agenda-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; padding-top:18px; border-top:1px solid var(--cal-line); }
#partyCalendarSection .cal-agenda-heading .cal-button { flex-shrink:0; }
#partyCalendarSection .cal-agenda-note { margin:10px 0 16px; }
#partyCalendarSection .cal-agenda-list { display:grid; gap:12px; }
#partyCalendarSection .cal-party { min-width:0; padding:16px; border:1px solid var(--cal-line); border-radius:var(--cal-radius); background:var(--cal-raised); }
#partyCalendarSection .cal-party-heading { display:flex; gap:12px; align-items:center; }
#partyCalendarSection .cal-boss-art { width:68px; height:68px; flex:0 0 68px; border:1px solid var(--cal-line); border-radius:calc(var(--cal-radius) * .8); overflow:hidden; background:var(--cal-inset); }
#partyCalendarSection .cal-boss-art img { width:100%; height:100%; object-fit:cover; display:block; }
#partyCalendarSection .cal-boss-fallback { width:100%; height:100%; display:grid; place-content:center; font-size:24px; color:var(--cal-accent); }
#partyCalendarSection .cal-party-title { min-width:0; flex:1; }
#partyCalendarSection .cal-party-stage { color:var(--cal-muted); font-size:11px; }
#partyCalendarSection .cal-leader { margin-top:12px; overflow-wrap:anywhere; }
#partyCalendarSection .cal-party-title h4 { font-size:16px; line-height:1.5; overflow-wrap:anywhere; }
#partyCalendarSection .cal-party-title p { display:flex; align-items:center; gap:7px; flex-wrap:wrap; margin-top:5px; }
#partyCalendarSection .cal-party-title time { color:var(--cal-ink); font:700 18px/1.5 ui-monospace,monospace; }
#partyCalendarSection .cal-schedule { display:inline-block; padding:3px 7px; border-radius:5px; background:var(--cal-soft); color:var(--cal-ink); font-size:11px; }
#partyCalendarSection .cal-schedule[data-schedule="confirmed"] { color:var(--cal-success); background:var(--cal-success-bg); }
#partyCalendarSection .cal-party-numbers { display:flex; align-items:center; gap:15px; margin-top:16px; padding:12px 0; border-block:1px solid var(--cal-line); }
#partyCalendarSection .cal-capacity { display:block; flex-shrink:0; color:var(--cal-accent); font-size:22px; line-height:1.3; }
#partyCalendarSection .cal-party-numbers>div { display:flex; flex-wrap:wrap; gap:4px 14px; color:var(--cal-muted); font-size:12px; }
#partyCalendarSection .cal-party-numbers b { color:var(--cal-ink); }
#partyCalendarSection .cal-recruitment-note { margin-top:8px; font-size:11px; }
#partyCalendarSection .cal-own-state { display:inline-block; margin-top:12px; padding:5px 9px; border-radius:5px; background:var(--cal-inset); font-size:12px; }
#partyCalendarSection .cal-own-state[data-state="selected"] { color:var(--cal-success); background:var(--cal-success-bg); }
#partyCalendarSection .cal-own-state[data-attendance="unavailable"] { color:var(--cal-danger); background:var(--cal-danger-bg); }
#partyCalendarSection .cal-requirements { margin-top:10px; border-top:1px solid var(--cal-line); }
#partyCalendarSection .cal-requirements summary { display:list-item; cursor:pointer; min-height:44px; align-content:center; color:var(--cal-ink); font-size:12px; }
#partyCalendarSection .cal-requirements summary:focus-visible { outline:3px solid var(--cal-accent); outline-offset:3px; }
#partyCalendarSection .cal-requirements p { white-space:pre-wrap; overflow-wrap:anywhere; margin-bottom:10px; }
#partyCalendarSection .cal-party-actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:14px; }
#partyCalendarSection .cal-party-actions .cal-button { flex:1 1 130px; }
#partyCalendarSection .cal-party-actions .cal-roster-button { display:flex; align-items:center; justify-content:center; gap:9px; flex-basis:230px; }
#partyCalendarSection .cal-roster-button>span:last-child { word-break:keep-all; overflow-wrap:normal; }
#partyCalendarSection .cal-roster-preview { display:inline-flex; align-items:center; padding-left:5px; flex-shrink:0; }
#partyCalendarSection .cal-roster-avatar { display:grid; place-content:center; width:24px; min-width:24px; max-width:24px; height:24px; flex:0 0 24px; padding:0; margin-left:-5px; border:1px solid var(--cal-control); border-radius:50%; background:var(--cal-inset); color:var(--cal-ink); font-size:11px; overflow:hidden; }
#partyCalendarSection .cal-roster-avatar img { width:24px; height:24px; object-fit:cover; }
#partyCalendarSection .cal-action-notice { margin-bottom:12px; color:var(--cal-danger); }
#partyCalendarSection .cal-empty { display:flex; min-height:165px; flex-direction:column; align-items:center; justify-content:center; padding:24px 14px; gap:8px; text-align:center; background:var(--cal-inset); border:1px dashed var(--cal-line); border-radius:var(--cal-radius); }
#partyCalendarSection .cal-empty strong { font-size:15px; }
#partyCalendarSection .cal-empty-icon { color:var(--cal-accent); font-size:25px; }
#partyCalendarSection[data-calendar-view="month"] .cal-weekday-labels { display:grid; grid-template-columns:repeat(7,minmax(44px,1fr)); min-width:338px; gap:5px; text-align:center; padding:5px 0 10px; color:var(--cal-muted); font-size:11px; }
#partyCalendarSection[data-calendar-view="month"] .cal-day-weekday { display:none; }
#partyCalendarSection[data-calendar-view="month"] button.cal-day { min-height:68px; }
#partyCalendarSection[data-calendar-view="month"] button.cal-day-outside:not([aria-pressed="true"]) { background:var(--cal-panel); color:var(--cal-muted); border-style:dashed; }
@media (min-width:1000px) {
  #partyCalendarSection[data-calendar-view="month"] .cal-layout { grid-template-columns:minmax(0,1.2fr) minmax(310px,1fr); align-items:start; }
  #partyCalendarSection[data-calendar-view="month"] .cal-agenda-heading { padding-top:0; border-top:0; }
  #partyCalendarSection[data-calendar-view="month"] button.cal-day { min-height:98px; justify-content:flex-start; padding-top:9px; }
  #partyCalendarSection[data-calendar-view="month"] .cal-day-preview { display:block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--cal-muted); font-size:11px; margin-top:5px; }
  #partyCalendarSection[data-calendar-view="week"] .cal-agenda-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #partyCalendarSection[data-calendar-view="week"] .cal-empty { grid-column:1/-1; }
}
@media (max-width:600px) {
  #partyCalendarSection.party-calendar { padding:14px; }
  #partyCalendarSection .cal-heading { align-items:flex-start; flex-direction:column; gap:7px; margin-bottom:18px; }
  #partyCalendarSection h2 { font-size:23px; }
  #partyCalendarSection .cal-toolbar { gap:9px; }
  #partyCalendarSection .cal-range { flex-basis:100%; order:-1; text-align:left; font-size:17px; }
  #partyCalendarSection .cal-switch { margin-left:auto; }
  #partyCalendarSection .cal-scopes { gap:5px; }
  #partyCalendarSection .cal-scopes .cal-button { flex:1 1 auto; padding-inline:9px; font-size:11px; }
  #partyCalendarSection .cal-layout { gap:14px; }
  #partyCalendarSection .cal-agenda-heading { align-items:flex-start; flex-wrap:wrap; }
  #partyCalendarSection .cal-agenda-heading h3 { font-size:16px; }
  #partyCalendarSection .cal-party { padding:12px; }
  #partyCalendarSection .cal-party-heading { gap:10px; }
  #partyCalendarSection .cal-boss-art { width:56px; height:56px; flex-basis:56px; }
  #partyCalendarSection .cal-party-title h4 { font-size:15px; }
  #partyCalendarSection .cal-party-title time { font-size:17px; }
  #partyCalendarSection .cal-party-numbers { gap:12px; }
  #partyCalendarSection .cal-capacity { font-size:21px; }
  #partyCalendarSection .cal-party-numbers>div { display:grid; gap:4px; }
  #partyCalendarSection .cal-party-actions .cal-roster-button { flex-basis:100%; }
  #partyCalendarSection .cal-status-row { flex-wrap:wrap; }
}
