/* Calendar presentation only. Time-grid hour height, column coordinates,
   absolute event geometry, resize handles and scroll ownership stay legacy. */
#tab-schedule.aura-calendar { display: grid; gap: var(--aura-space-4); min-width: 0; }
#tab-schedule.aura-calendar.hidden { display: none; }
#tab-schedule.aura-calendar .schedule-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 32%);
  gap: var(--aura-space-4);
  align-items: start;
}
#tab-schedule.aura-calendar .schedule-main {
  min-width: 0;
  padding: var(--aura-space-4);
  background: var(--aura-card);
  border: var(--aura-border-subtle);
  border-radius: var(--aura-radius-lg);
  box-shadow: var(--aura-shadow-card);
}
#tab-schedule.aura-calendar .cal-top { display: flex; flex-wrap: wrap; gap: var(--aura-space-3); margin: 0 0 var(--aura-space-4); }
#tab-schedule.aura-calendar .cal-title { min-width: 140px; gap: var(--aura-space-2); }
#tab-schedule.aura-calendar .cal-title b { font-size: var(--aura-text-xl); font-weight: var(--aura-weight-semibold); letter-spacing: normal; }
#tab-schedule.aura-calendar .cal-title small { color: var(--aura-text-secondary); font-size: var(--aura-text-sm); }
#tab-schedule.aura-calendar .viewswitch { display: flex; gap: var(--aura-space-1); padding: var(--aura-space-1); border: var(--aura-border-subtle); border-radius: var(--aura-radius-md); background: var(--aura-raised); }
#tab-schedule.aura-calendar .viewswitch button { min-height: var(--aura-control-height); padding: var(--aura-space-2) var(--aura-space-3); color: var(--aura-text-secondary); font-size: var(--aura-text-sm); border-radius: var(--aura-radius-sm); }
#tab-schedule.aura-calendar .viewswitch button:hover { background: var(--aura-card); }
#tab-schedule.aura-calendar .viewswitch button.active { background: var(--aura-success); color: var(--aura-on-primary); }
#tab-schedule.aura-calendar .navbtns { display: flex; gap: var(--aura-space-2); margin-left: auto; }
#tab-schedule.aura-calendar .navbtns button { width: var(--aura-touch-target); height: var(--aura-touch-target); border: var(--aura-border-subtle); border-radius: var(--aura-radius-sm); color: var(--aura-text); background: var(--aura-card); }
#tab-schedule.aura-calendar .navbtns .tbtn { width: auto; padding-inline: var(--aura-space-3); color: var(--aura-primary); }
#tab-schedule.aura-calendar .navbtns button:hover { background: var(--aura-primary-soft); border-color: var(--aura-primary); }
#tab-schedule.aura-calendar .catfilter { gap: var(--aura-space-2); margin-bottom: var(--aura-space-3); }
#tab-schedule.aura-calendar .catchip { min-height: 36px; padding: var(--aura-space-2) var(--aura-space-3); border: var(--aura-border-subtle); border-radius: var(--aura-radius-pill); color: var(--aura-text-secondary); background: var(--aura-card); font-size: var(--aura-text-xs); }
#tab-schedule.aura-calendar .catchip.active { border-color: var(--aura-primary); background: var(--aura-primary-soft); color: var(--aura-primary); }
#tab-schedule.aura-calendar #calendarTools { gap: var(--aura-space-2); padding-block: var(--aura-space-3); margin: 0 0 var(--aura-space-3); border-block: var(--aura-border-subtle); }
#tab-schedule.aura-calendar #calendarTools :is(button, select) { min-height: var(--aura-control-height); max-width: 100%; font-size: var(--aura-text-xs); border-radius: var(--aura-radius-sm); }
#tab-schedule.aura-calendar #calendarTools button { padding: var(--aura-space-2) var(--aura-space-3); }
#tab-schedule.aura-calendar #calendarTools select { min-width: 0; }

/* Month grid remains seven columns. Dates never gain external borders that
   would change the calendar's hit area; selected state uses an inset ring. */
#tab-schedule.aura-calendar .month { padding: 0; border: var(--aura-border-subtle); border-radius: var(--aura-radius-md); box-shadow: none; overflow: hidden; background: var(--aura-card); }
#tab-schedule.aura-calendar .m-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); }
#tab-schedule.aura-calendar .wd { padding: var(--aura-space-3) var(--aura-space-2); text-align: center; background: var(--aura-raised); color: var(--aura-text-secondary); font-size: var(--aura-text-xs); letter-spacing: normal; }
#tab-schedule.aura-calendar .wd.we { color: var(--aura-warning); }
#tab-schedule.aura-calendar .m-cell { min-width: 0; min-height: calc(var(--aura-space-12) * 2); padding: var(--aura-space-2); gap: var(--aura-space-1); border-top: var(--aura-border-subtle); border-right: var(--aura-border-subtle); transition: background var(--aura-duration-fast) var(--aura-easing); }
#tab-schedule.aura-calendar .m-cell:nth-child(7n) { border-right: 0; }
#tab-schedule.aura-calendar .m-cell:hover { background: var(--aura-raised); }
#tab-schedule.aura-calendar .m-cell.sel { background: var(--aura-primary-soft); box-shadow: inset 0 0 0 2px var(--aura-primary); }
#tab-schedule.aura-calendar :is(.m-cell, .tg-dayhead):focus-visible { outline: var(--aura-focus-ring); outline-offset: -3px; }
#tab-schedule.aura-calendar .m-cell.dim { opacity: 1; background: color-mix(in srgb, var(--aura-raised) 45%, var(--aura-card)); }
#tab-schedule.aura-calendar .m-cell.dim.sel { background: var(--aura-primary-soft); }
#tab-schedule.aura-calendar .m-cell .dnum { width: 28px; height: 28px; margin: 0; color: var(--aura-text); font-size: var(--aura-text-xs); }
#tab-schedule.aura-calendar .m-cell.dim .dnum { color: var(--aura-text-muted); }
#tab-schedule.aura-calendar .m-cell.today .dnum { color: var(--aura-on-primary); background: var(--aura-success); box-shadow: none; }
#tab-schedule.aura-calendar .m-cell.sel:not(.today) .dnum { box-shadow: none; color: var(--aura-primary); font-weight: var(--aura-weight-bold); }
#tab-schedule.aura-calendar .mev { min-width: 0; padding: 2px var(--aura-space-1); border-radius: var(--aura-radius-sm); background: color-mix(in srgb, var(--aura-card) 80%, transparent); color: var(--aura-text); }
#tab-schedule.aura-calendar .m-more { color: var(--aura-text-secondary); padding-left: var(--aura-space-1); }
#tab-schedule.aura-calendar .m-dots { justify-content: flex-start; }
#tab-schedule.aura-calendar .shift-tag { align-self: flex-start; float: none; max-width: 100%; margin: 0; }

/* Skin the time-grid headings only. No event top/left/height/width, hour height,
   body columns, scroll limits or drag/resize handle declarations belong here. */
#tab-schedule.aura-calendar .tg-wrap { border: var(--aura-border-subtle); border-radius: var(--aura-radius-md); box-shadow: none; background: var(--aura-card); }
#tab-schedule.aura-calendar .tg-days { background: var(--aura-raised); border-bottom-color: var(--aura-divider); }
#tab-schedule.aura-calendar .tg-dayhead { border-left-color: var(--aura-divider); }
#tab-schedule.aura-calendar .tg-dayhead .w { color: var(--aura-text-secondary); }
#tab-schedule.aura-calendar .tg-dayhead .d { color: var(--aura-text); }
#tab-schedule.aura-calendar .tg-dayhead.today .d { background: var(--aura-success); color: var(--aura-on-primary); }
#tab-schedule.aura-calendar .tg-dayhead.sel { box-shadow: inset 0 -2px 0 var(--aura-primary); background: var(--aura-primary-soft); }
#tab-schedule.aura-calendar .tg-dayhead.sel .w { color: var(--aura-primary); }

/* Selected day is the sole owner of its scrolling agenda list. */
#tab-schedule.aura-calendar .schedule-side { padding: var(--aura-space-4); top: var(--aura-space-4); max-height: calc(100vh - var(--aura-space-8)); min-width: 0; margin-top: 0; border: var(--aura-border-subtle); border-radius: var(--aura-radius-lg); background: var(--aura-card); box-shadow: var(--aura-shadow-card); }
#tab-schedule.aura-calendar .sel-head { flex-wrap: wrap; gap: var(--aura-space-2); margin: 0 0 var(--aura-space-4); }
#tab-schedule.aura-calendar .sel-head .d { font-size: var(--aura-text-xl); font-weight: var(--aura-weight-semibold); }
#tab-schedule.aura-calendar .sel-head .n { color: var(--aura-text-secondary); font-size: var(--aura-text-sm); }
#tab-schedule.aura-calendar .schedule-actions { width: 100%; display: flex; flex-wrap: wrap; gap: var(--aura-space-2); margin: var(--aura-space-2) 0 0; }
#tab-schedule.aura-calendar .schedule-actions > button { flex: 1 1 auto; }
#tab-schedule.aura-calendar .manual-add { min-height: var(--aura-touch-target); height: auto; padding: var(--aura-space-2) var(--aura-space-3); margin-left: 0; color: var(--aura-primary); border: var(--aura-border-subtle); border-radius: var(--aura-radius-sm); background: var(--aura-primary-soft); font-size: var(--aura-text-sm); }
#tab-schedule.aura-calendar #openAdd { background: var(--aura-success); color: var(--aura-on-primary); }
#tab-schedule.aura-calendar #scheduleList { display: grid; align-content: start; gap: var(--aura-space-2); padding-right: var(--aura-space-1); }
#tab-schedule.aura-calendar #scheduleList :is(.card, .aura-event-row) { min-width: 0; margin: 0; padding: var(--aura-space-3) var(--aura-space-2); gap: var(--aura-space-2); border: 0; border-bottom: var(--aura-border-subtle); border-radius: 0; background: transparent; box-shadow: none; }
#tab-schedule.aura-calendar #scheduleList .tcol { min-width: 40px; }
#tab-schedule.aura-calendar #scheduleList .t { font-size: var(--aura-text-sm); line-height: var(--aura-leading-body); }
#tab-schedule.aura-calendar #scheduleList .sub { color: var(--aura-text-secondary); font-size: var(--aura-text-xs); overflow-wrap: anywhere; }
#tab-schedule.aura-calendar #scheduleList .body { cursor: pointer; }
#tab-schedule.aura-calendar #scheduleList .iconbtn { min-height: var(--aura-touch-target); min-width: var(--aura-touch-target); }
#tab-schedule.aura-calendar .empty { color: var(--aura-text-secondary); font-size: var(--aura-text-sm); padding: var(--aura-space-8) var(--aura-space-2); }

/* Supplementary views are summaries of existing data, not additional editors. */
#tab-schedule.aura-calendar .aura-calendar-bottom { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--aura-space-4); align-items: start; }
#tab-schedule.aura-calendar :is(#auraWeekAgenda, #auraSharedCalendars, .aura-calendar-ai) { min-width: 0; }
#tab-schedule.aura-calendar :is(#auraWeekAgenda, #auraSharedCalendars, .aura-calendar-ai) > .aura-section-header { margin-bottom: var(--aura-space-3); flex-wrap: wrap; gap: var(--aura-space-2); }
#tab-schedule.aura-calendar .aura-section-header__title { font-size: var(--aura-text-md); }
#tab-schedule.aura-calendar .aura-section-header__subtitle { font-family: var(--aura-font-brand); }
#tab-schedule.aura-calendar .aura-calendar-week-list { display: grid; gap: var(--aura-space-2); list-style: none; padding: 0; margin: 0; }
#tab-schedule.aura-calendar .aura-calendar-week-row { display: flex; align-items: center; gap: var(--aura-space-3); min-width: 0; padding: var(--aura-space-2); border: var(--aura-border-subtle); border-radius: var(--aura-radius-sm); background: var(--aura-card); }
#tab-schedule.aura-calendar .aura-calendar-week-row > :first-child { flex-shrink: 0; font-variant-numeric: tabular-nums; }
#tab-schedule.aura-calendar .aura-calendar-week-row > :last-child { min-width: 0; overflow-wrap: anywhere; }
#tab-schedule.aura-calendar .aura-calendar-shared-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--aura-space-2); }
#tab-schedule.aura-calendar .aura-calendar-shared-item { display: flex; flex-wrap: wrap; align-items: center; gap: var(--aura-space-2); min-width: 0; padding: var(--aura-space-3); border: var(--aura-border-subtle); border-radius: var(--aura-radius-sm); background: var(--aura-card); }
#tab-schedule.aura-calendar .aura-calendar-shared-item :is(strong, span, small) { min-width: 0; overflow-wrap: anywhere; }
#tab-schedule.aura-calendar .aura-calendar-ai #scheduleDialoguePanel { margin: 0; border: 0; background: transparent; }
#tab-schedule.aura-calendar .aura-calendar-ai .ai-avatar { background: var(--aura-card); color: var(--aura-primary); border-color: var(--aura-outline); }
#tab-schedule.aura-calendar .aura-calendar-ai .ai-msg.assistant .ai-bubble { background: var(--aura-card); color: var(--aura-text); }
#tab-schedule.aura-calendar .aura-calendar-ai .ai-msg.user .ai-bubble { background: var(--aura-primary); color: var(--aura-on-primary); }
#tab-schedule.aura-calendar .aura-calendar-ai .ai-preview-item { background: var(--aura-raised); border-color: var(--aura-divider); }
#tab-schedule.aura-calendar .aura-calendar-ai .ai-composer { border-top-color: var(--aura-divider); }
#tab-schedule.aura-calendar .aura-calendar-ai .ai-import { min-height: var(--aura-touch-target); }

@media (max-width: 1280px) {
  #tab-schedule.aura-calendar .schedule-workspace { grid-template-columns: minmax(0, 1fr) minmax(280px, 32%); gap: var(--aura-space-3); }
  #tab-schedule.aura-calendar .schedule-main, #tab-schedule.aura-calendar .schedule-side { padding: var(--aura-space-3); }
  #tab-schedule.aura-calendar .cal-title { flex-basis: 100%; }
  #tab-schedule.aura-calendar .m-cell { min-height: 88px; padding: var(--aura-space-1); }
  #tab-schedule.aura-calendar .aura-calendar-shared-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 900px) {
  #tab-schedule.aura-calendar .schedule-workspace { grid-template-columns: minmax(0, 1fr) minmax(260px, 34%); }
  #tab-schedule.aura-calendar .viewswitch button { padding-inline: var(--aura-space-2); }
  #tab-schedule.aura-calendar .cal-top { gap: var(--aura-space-2); }
}
@media (max-width: 760px) {
  #tab-schedule.aura-calendar .schedule-workspace, #tab-schedule.aura-calendar .aura-calendar-bottom { grid-template-columns: minmax(0, 1fr); }
  #tab-schedule.aura-calendar .schedule-side { position: static; max-height: none; }
  #tab-schedule.aura-calendar .schedule-side #scheduleList { overflow: visible; }
  #tab-schedule.aura-calendar .aura-calendar-shared-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  #tab-schedule.aura-calendar .schedule-main { padding: var(--aura-space-2); }
  #tab-schedule.aura-calendar .cal-title { flex-basis: 100%; }
  #tab-schedule.aura-calendar .navbtns { gap: var(--aura-space-1); }
  #tab-schedule.aura-calendar .viewswitch button { min-height: var(--aura-control-height); padding-inline: var(--aura-space-2); }
  #tab-schedule.aura-calendar .m-cell { min-height: 64px; padding: var(--aura-space-1); }
  #tab-schedule.aura-calendar .m-cell .dnum { align-self: center; }
  #tab-schedule.aura-calendar .m-dots { justify-content: center; }
  #tab-schedule.aura-calendar .wd { padding-inline: var(--aura-space-1); }
  #tab-schedule.aura-calendar .aura-calendar-shared-grid { grid-template-columns: minmax(0, 1fr); }
}

#tab-schedule.aura-calendar .aura-calendar-filter-hint { grid-column: 1 / -1; margin: 0 0 var(--aura-space-2); font-size: var(--aura-text-xs); color: var(--aura-text-secondary); }
#tab-schedule.aura-calendar .aura-calendar-week-range { margin: 0; font-size: var(--aura-text-xs); color: var(--aura-text-secondary); }
#tab-schedule.aura-calendar .aura-calendar-week-date { font-size: var(--aura-text-xs); }
#tab-schedule.aura-calendar .aura-calendar-week-row .aura-event-row { flex: 1; }
#tab-schedule.aura-calendar .aura-calendar-shared-item[aria-pressed="true"] { background: var(--aura-success-soft); border-color: var(--aura-success); box-shadow: inset 3px 0 var(--aura-success); font-weight: var(--aura-weight-bold); }
#tab-schedule.aura-calendar .ev:focus-visible { outline: var(--aura-focus-ring); outline-offset: var(--aura-focus-offset); }

#tab-schedule.aura-calendar #scheduleList .aura-event-row__open { grid-template-columns: minmax(0, 1fr); gap: var(--aura-space-2); }
#tab-schedule.aura-calendar #scheduleList .aura-event-row__tags { max-width: none; justify-content: flex-start; }
#tab-schedule.aura-calendar #scheduleList .aura-event-row.ended .aura-event-row__time::after { content: ' · 已結束'; }
#tab-schedule.aura-calendar .aura-calendar-ai #scheduleDialoguePanel { height: clamp(240px, 32vh, 360px); }
