.calendar-workspace{--grid:#dedbd5;--surface:#fff;--hour:54px;color:#4a4844;width:100%;min-width:0;background:#fff}
.calendar-top{display:flex;align-items:center;gap:8px;margin:6px 0 14px}
.calendar-top-spacer{flex:1}
.calendar-modes{display:flex;flex-shrink:0;border:1px solid var(--grid);border-radius:7px;overflow:hidden}
.calendar-modes button{min-height:38px;min-width:46px;padding:7px 14px;background:transparent;border:0;border-left:1px solid var(--grid);color:inherit;font:inherit;font-size:.9rem}
.calendar-modes button:first-child{border-left:0}
.calendar-modes button[aria-pressed=true]{background:#3f3d39;color:#fff}.calendar-today,.calendar-undo{min-height:36px;padding:6px 10px;background:transparent;border:1px solid var(--grid);border-radius:7px;color:inherit;font:inherit;font-size:.78rem}.calendar-undo:disabled{opacity:.32}.calendar-undo:not(:disabled){cursor:pointer}
.calendar-options{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;font-size:.76rem}
.calendar-project-picker{position:relative;z-index:5;max-width:70%}.calendar-project-picker summary{cursor:pointer;padding:7px 0}
.calendar-project-picker>div{position:absolute;top:100%;left:0;min-width:240px;max-width:80vw;max-height:45vh;overflow:auto;padding:10px;background:var(--surface);border:1px solid var(--grid);border-radius:10px;box-shadow:0 8px 20px #0002}
.calendar-project-picker label{display:flex;gap:8px;align-items:center;padding:9px 4px;overflow-wrap:anywhere}
.calendar-project-picker input{width:17px;min-height:17px;accent-color:#55504a;margin:0}
.calendar-project-picker i,.calendar-project-legend i{display:inline-block;width:10px;height:10px;border:1px solid #9996;border-radius:3px;flex-shrink:0}
.calendar-color-label{display:flex;align-items:center;gap:5px;white-space:nowrap}
.calendar-color-label select{min-height:30px;width:auto;padding:3px 7px;border:1px solid var(--grid);border-radius:6px;background:transparent;color:inherit;font:inherit}
.calendar-project-legend{display:flex;gap:6px 14px;flex-wrap:wrap;font-size:.72rem;color:#777168;margin:0 0 12px}
.calendar-project-legend>span{display:flex;align-items:center;gap:5px;max-width:100%;overflow-wrap:anywhere}
.calendar-surface{touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;min-width:0}
.calendar-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--grid);border-radius:10px;overflow:hidden;background:var(--surface)}
.calendar-weekday{padding:9px 2px;text-align:center;font-size:.76rem;border-bottom:1px solid var(--grid);color:#81796f}
.calendar-month-cell{min-width:0;min-height:116px;padding:7px 5px;border-right:1px solid var(--grid);border-bottom:1px solid var(--grid)}
.calendar-month-cell:nth-child(7n){border-right:0}.calendar-month-cell.outside{background:#faf9f7;color:#aaa59e}
.calendar-date{font-size:.76rem;line-height:1.5;margin-bottom:5px;font-variant-numeric:tabular-nums}.calendar-date.is-today{font-weight:750;text-decoration:underline;text-underline-offset:4px}
.calendar-attendees{display:flex;flex-wrap:wrap;gap:2px;min-width:0;margin:2px 0 6px}
.attendee-group{display:flex;gap:2px;flex-wrap:wrap;padding:0;border:0;background:transparent;max-width:100%;min-width:0;cursor:pointer}
.attendee-chip{display:inline-block;max-width:100%;border-radius:3px;background:var(--member);color:var(--ink);font-size:.58rem;line-height:1.35;padding:1px 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid #7772}
.attendee-none{font-size:.56rem;color:#9a9389;line-height:1.4}
.calendar-month-events{display:grid;gap:3px}
.calendar-entry{display:block;box-sizing:border-box;min-width:0;min-height:0;width:100%;margin:0;padding:4px 5px;border:1px solid #3332;border-radius:4px;background:var(--entry);color:var(--entry-ink);font:inherit;font-size:.73rem;text-align:left;line-height:1.3;cursor:grab;overflow:hidden;overflow-wrap:anywhere;touch-action:pan-y pinch-zoom}
.calendar-entry>span{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.calendar-entry small{display:block;font-size:.68rem;line-height:1.4}
.calendar-completed{opacity:.57;cursor:pointer}.calendar-completed>span{text-decoration:line-through}
.calendar-time-grid{display:grid;grid-template-columns:22px repeat(var(--days),minmax(0,1fr));border:1px solid var(--grid);border-radius:10px;overflow:hidden;background:var(--surface)}
.calendar-time-header{padding:7px 3px 2px;min-width:0;border-left:1px solid var(--grid);border-bottom:1px solid var(--grid)}
.calendar-time-header .calendar-date{text-align:center;font-size:.73rem;white-space:nowrap}
.calendar-time-grid>section{min-width:0;border-left:1px solid var(--grid)}
.calendar-time-body{position:relative;height:calc(var(--hour)*9);background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--hour) - 1px),var(--grid) calc(var(--hour) - 1px),var(--grid) var(--hour))}
.calendar-hours{position:relative;font-size:.6rem;color:#948c82;text-align:center}
.calendar-hours span{position:absolute;left:1px;right:1px;transform:translateY(-50%)}.calendar-hours span:first-child{transform:none}.calendar-hours span:last-child{transform:translateY(-100%)}
.calendar-lunch{position:absolute;top:44.444%;height:11.112%;width:100%;background:#d8d1c33b;pointer-events:none}
.single-day .calendar-entry{font-size:.84rem;padding:6px 8px}.single-day .calendar-attendees{justify-content:center;gap:5px;margin:4px 0 8px}.single-day .calendar-time-header .calendar-date{font-size:1rem;font-weight:600;margin-bottom:5px}.single-day .attendee-chip{font-size:.76rem;padding:2px 6px;border-radius:5px}.single-day .attendee-none{font-size:.72rem}
.calendar-drag-source{opacity:.3}.calendar-drag-ghost{z-index:9999;pointer-events:none!important;opacity:.9;box-shadow:0 6px 22px #0005;transform:scale(1.03);margin:0}
.calendar-drop-target{outline:2px solid #71675b;outline-offset:-2px}
.project-theme-field,.member-color-field{display:flex;flex-direction:column;gap:7px;font-size:.82rem;margin:12px 0}
.project-theme-field select,.member-color-field select{width:100%;min-height:38px}
.project-member-settings .inline-form{flex-wrap:wrap;align-items:center}.project-member-settings .inline-form>.member-color-field{flex:1;min-width:150px}
.palette-preview{display:flex;gap:5px}.palette-preview span{display:grid;place-items:center;width:27px;height:25px;border-radius:5px;border:1px solid #7774;font-size:.7rem}
.member-editor-form .palette-preview{margin-bottom:8px}
@media(max-width:650px){
 .calendar-top{gap:6px;margin-top:4px;margin-bottom:8px}
 .calendar-modes button{min-height:40px;min-width:48px;padding:7px 12px;font-size:.9rem}.calendar-today,.calendar-undo{min-height:36px;padding:6px 9px;font-size:.72rem}
 .calendar-month-cell{min-height:94px;padding:5px 2px}.calendar-entry{font-size:.6rem;padding:3px 2px;border-radius:3px}
 .calendar-date{font-size:.66rem}.attendee-chip{font-size:.51rem;padding:1px 2px}
 .calendar-time-header{padding:6px 1px 0}.calendar-time-header .calendar-date{font-size:.62rem}.single-day .calendar-time-header{padding:9px 4px 2px}.single-day .calendar-time-header .calendar-date{font-size:1rem}.single-day .attendee-chip{font-size:.78rem;padding:3px 7px}
 .calendar-attendees{gap:1px;margin-bottom:4px}.calendar-options{gap:6px}.calendar-project-legend{font-size:.65rem;margin-bottom:8px}
 .calendar-workspace{--hour:48px}.calendar-time-grid{grid-template-columns:18px repeat(var(--days),minmax(0,1fr))}
}

/* Calendar stays light to match the approved warm-white reference, even when iOS is in dark mode. */
.calendar-workspace,.calendar-month-grid,.calendar-time-grid{background:#fff;color:#4a4844}.calendar-month-cell,.calendar-time-header,.calendar-time-body{background:#fff}.calendar-weekday{color:#625f59}.calendar-project-legend,.calendar-color-label{color:#6f6a63}

.calendar-entry-person{display:block;margin:0 0 3px;font-size:.62rem;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.82}.single-day .calendar-entry-person{font-size:.72rem;margin-bottom:4px}

.calendar-entry-room{display:block;margin-top:3px;font-size:.68rem;line-height:1.25;opacity:.82;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.single-day .calendar-entry-room{font-size:.76rem}


/* Expand week/day view only when overtime work is present. */
.calendar-time-grid.has-overtime .calendar-time-body{
  height:calc(var(--hour)*17);
}
.calendar-time-grid.has-overtime .calendar-lunch{
  top:23.5294%;
  height:5.8824%;
}


/* Day view task cards mirror the task-list information hierarchy. */
.calendar-entry-listlike{
  padding:10px 12px;
  border-radius:10px;
  text-align:left;
  line-height:1.35;
}
.calendar-entry-list-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
}
.calendar-entry-listlike .task-assignee-stack{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}
.calendar-entry-listlike .task-heading{
  display:flex;
  align-items:baseline;
  gap:8px;
  flex-wrap:wrap;
  min-width:0;
}
.calendar-entry-listlike .task-heading .row-title{
  white-space:normal;
  line-height:1.35;
  font-size:1rem;
  font-weight:700;
}
.calendar-entry-listlike .room-inline,
.calendar-entry-listlike .task-part-inline{
  color:rgba(255,255,255,.9);
  font-size:.82rem;
  white-space:nowrap;
}
.calendar-entry-listlike .schedule-cell{
  margin-top:8px;
  font-size:.82rem;
  color:rgba(255,255,255,.92);
}
.calendar-entry-listlike .status{
  border-color:rgba(255,255,255,.35);
  background:rgba(255,255,255,.16);
  color:#fff;
  padding:5px 9px;
  font-size:.72rem;
  white-space:nowrap;
}
.single-day .calendar-entry-listlike{
  font-size:.9rem;
  padding:10px 12px;
}
.single-day .calendar-entry-listlike .schedule-cell{
  font-size:.84rem;
}
@media(max-width:650px){
  .single-day .calendar-entry-listlike{padding:9px 10px}
  .single-day .calendar-entry-listlike .task-heading .row-title{font-size:.96rem}
  .single-day .calendar-entry-listlike .room-inline,
  .single-day .calendar-entry-listlike .task-part-inline,
  .single-day .calendar-entry-listlike .schedule-cell{font-size:.78rem}
  .single-day .calendar-entry-listlike .status{font-size:.68rem;padding:4px 8px}
}

/* Let JavaScript own horizontal swipes anywhere in the calendar work area. */
.calendar-surface,.calendar-time-grid,.calendar-time-body,.calendar-entry{touch-action:pan-y!important;overscroll-behavior-x:contain}




/* Calendar paging: fixed navigation stays visible; only calendar content slides. */
body{overflow-x:hidden}
.calendar-page-transition{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  z-index:19;
  overflow:hidden;
  background:#f4f2ed;
  pointer-events:none;
}
.calendar-page-transition-track{
  display:flex;
  width:200vw;
  height:100%;
  will-change:transform;
}
.calendar-page-transition-pane{
  position:relative;
  width:100vw;
  min-width:100vw;
  height:100%;
  overflow:hidden;
  background:#f4f2ed;
}
.calendar-page-transition-content{
  width:min(1180px,100vw);
  margin:0 auto;
  padding:92px 16px 40px;
  box-sizing:border-box;
  pointer-events:none;
}
@media(min-width:851px){
  .calendar-page-transition-content{padding:34px 42px 70px}
}

/* Prevent the transition panes from contributing transient width during teardown. */
.calendar-page-transition,
.calendar-page-transition-pane{
  contain:layout paint;
}
.calendar-page-transition-track{
  backface-visibility:hidden;
  transform-style:flat;
}
