#oss-calendar {--fc-border-color:var(--os-line,var(--line,#c9d5de));--fc-page-bg-color:var(--os-surface,var(--card,#fff));--fc-neutral-bg-color:transparent;font-size:14px;margin-bottom:24px}
#oss-calendar .fc-toolbar {gap:8px;flex-wrap:wrap}
#oss-calendar .fc-toolbar-title {font-size:1.2rem;white-space:normal}
#oss-calendar .fc-button {font-size:13px;padding:8px}
#oss-calendar .fc-event {cursor:pointer;white-space:normal}
#oss-calendar .fc-event-title {white-space:normal;overflow-wrap:anywhere}
#oss-calendar .oss-source-program {background:#365cb0;border-color:#365cb0}
#oss-calendar .oss-source-personal {background:#226a5d;border-color:#226a5d}
#oss-calendar .oss-source-consultation {background:#7452a0;border-color:#7452a0}
#oss-calendar .fc-scrollgrid {min-width:0}
#oss-calendar .fc-timeGridWeek-view .fc-scroller {overflow-x:auto!important}
#oss-calendar-status:empty {display:none}
#oss-calendar-status {padding:8px;border-radius:8px;background:var(--os-surface,var(--card,#edf2f7))}
.calendar-action-dialog,.appointment-sheet {max-height:calc(var(--voice-viewport-height,100dvh) - 32px);overflow:auto;padding-bottom:calc(28px + env(safe-area-inset-bottom))}
@media(max-width:450px){#oss-calendar .fc-toolbar-chunk{max-width:100%}#oss-calendar .fc-toolbar-title{font-size:17px}#oss-calendar .fc-button{padding:7px 6px}#oss-calendar .fc-toolbar{justify-content:center}}

/* Standard plugins only: horizontal week scrolling uses CSS, no premium ScrollGrid. */
#oss-calendar .fc-view-harness {overflow-x:auto}
#oss-calendar .fc-timeGridWeek-view {min-width:0}

#oss-calendar .fc-timegrid-axis-cushion {white-space:normal;overflow-wrap:normal}
@media(max-width:360px){.topbar .brand-mark{display:none}.topbar .brand{min-width:64px}.bottom-nav .nav-item>span:last-child{font-size:10px;letter-spacing:0}}

#oss-calendar {--fc-list-event-hover-bg-color:var(--os-surface,var(--card,#edf2f7));--fc-neutral-text-color:inherit}

.sheet-backdrop[data-oss-calendar-sheet]{z-index:10080}
[data-oss-calendar-sheet] .appointment-sheet>header{background:var(--os-surface,var(--card,#fff));color:var(--os-ink,inherit)}

/* Match the original OpenSCI calendar, including a complete seven-day mobile week. */
#oss-calendar{--fc-button-bg-color:transparent;--fc-button-border-color:transparent;--fc-button-text-color:var(--os-ink,#143149);--fc-button-hover-bg-color:#e3f4f3;--fc-button-hover-border-color:transparent;--fc-button-active-bg-color:#dff4f2;--fc-button-active-border-color:transparent;--fc-today-bg-color:rgba(19,157,154,.06);color:var(--os-ink,var(--text,#143149))}
#oss-calendar .fc-header-toolbar{display:grid;grid-template-columns:auto 1fr;gap:10px;margin:12px 0 14px}
#oss-calendar .fc-toolbar-chunk:first-child{display:flex;align-items:center;gap:6px}
#oss-calendar .fc-toolbar-chunk:nth-child(2){text-align:right;min-width:0}
#oss-calendar .fc-toolbar-chunk:last-child{grid-column:1/-1;display:flex;justify-content:center}
#oss-calendar .fc-toolbar-title{font-size:16px;line-height:1.35;font-weight:700}
#oss-calendar .fc-button{font-family:inherit;font-size:13px;font-weight:600;box-shadow:none;min-height:40px;border-radius:12px;padding:7px 10px;color:inherit}
#oss-calendar .fc-prev-button,#oss-calendar .fc-next-button{border:1px solid var(--os-line,#d9e6ec);border-radius:50%;width:38px;min-height:38px;height:38px;padding:0;font-size:28px;line-height:30px;background:var(--os-surface,var(--card,#fff))}
#oss-calendar .fc-button-group{gap:4px}
#oss-calendar .fc-button-group>.fc-button{border-radius:12px}
#oss-calendar .fc-button-active{color:#098f8d;background:#dff4f2}
#oss-calendar .fc-scrollgrid{border-radius:18px;overflow:hidden;background:var(--os-surface,var(--card,#f7fafb))}
#oss-calendar th{font-weight:500}
#oss-calendar .fc-col-header-cell-cushion{padding:7px 1px;display:block;font-size:12px;text-decoration:none;color:inherit}
#oss-calendar .oss-weekday{display:block;text-transform:uppercase;font-size:10px;letter-spacing:.04em;color:var(--muted,#607d8b)}
#oss-calendar .fc-col-header-cell-cushion strong{display:block;font-size:20px;line-height:1.3}
#oss-calendar .fc-day-today .fc-col-header-cell-cushion{background:#dff4f2;color:#098f8d}
#oss-calendar .fc-timegrid-slot{height:40px}
#oss-calendar .fc-timegrid-slot-label-cushion{font-size:11px;font-variant-numeric:tabular-nums;color:var(--muted,#607d8b);padding:0 4px}
#oss-calendar .fc-timegrid-axis{width:48px}
#oss-calendar .fc-timegrid-event{border-radius:6px;min-width:0;font-size:11px}
#oss-calendar .fc-timeGridWeek-view .fc-event-title{overflow:hidden;overflow-wrap:normal;word-break:normal}
#oss-calendar-status{font-size:12px;color:var(--muted,#607d8b);padding:4px 8px;margin:6px 0;background:transparent}
@media(max-width:360px){#oss-calendar .fc-toolbar-title{font-size:14px}#oss-calendar .fc-button{font-size:12px;padding:6px}#oss-calendar .fc-prev-button,#oss-calendar .fc-next-button{font-size:26px;padding:0;width:32px}#oss-calendar .fc-col-header-cell-cushion strong{font-size:18px}}
@media(prefers-reduced-motion:reduce){.bottom-nav{transition:none!important}}
@media(max-width:820px){
 .bottom-nav{transition:translate .2s ease,opacity .2s ease;translate:0 0}
 .phone.nav-autohide .bottom-nav{transform:translateX(-50%);translate:0 calc(100% + 12px);opacity:0;pointer-events:none}
 .phone.nav-autohide .content{padding-bottom:calc(110px + env(safe-area-inset-bottom))}
}
html[data-theme=dark] #oss-calendar{--fc-button-hover-bg-color:#254a50;--fc-button-active-bg-color:#254a50;--fc-today-bg-color:#163b40}

/* Keep the schedule visible; the report guidance remains on the event screen. */
#content:has(#oss-calendar) .opensci-context-hint-v52{display:none}

/* Reference layout: segmented views, a narrow date strip and a full-width time grid. */
#content:has(#oss-calendar)>.page-head{display:none}
.oss-calendar-chrome{color:var(--os-ink,#25323a);background:var(--os-surface,#fff);margin:0 -14px}
.oss-view-row{display:flex;align-items:center;gap:8px;padding:8px 10px}
.oss-view-switch{display:flex;flex:1;min-width:0;background:#f4eafa;border-radius:24px;padding:3px}
.oss-view-switch button{flex:1;min-width:0;min-height:34px;border:0;border-radius:22px;background:transparent;color:inherit;font:inherit;font-size:13px;padding:4px 3px;white-space:nowrap}
.oss-view-switch button[aria-pressed=true]{background:#fff;color:#17232b;font-weight:700}
.oss-today{width:25px;height:27px;min-height:27px;padding:3px 0 0;border:0;border-top:5px solid #5cbfbc;border-radius:4px;background:#6dcfcb;color:#fff;font-size:13px;font-weight:700}
.oss-month{font-size:11px;color:var(--os-muted,#8b8792);max-width:38px;overflow:hidden;white-space:nowrap}
.oss-date-row{display:flex;align-items:center;gap:0;padding:1px 4px 7px;border-bottom:1px solid var(--os-line,#ddd)}
.oss-date-row>.fc-prev-button,.oss-date-row>.fc-next-button{flex:0 0 23px;min-height:28px;height:28px;padding:0;border:0;background:transparent;color:inherit;font-size:28px;line-height:24px}
.oss-date-days{display:flex;flex:1;min-width:0;justify-content:space-around}
.oss-date-day{flex:1;min-width:0;min-height:42px;padding:0;background:transparent;border:0;color:inherit;display:flex;align-items:center;flex-direction:column}
.oss-date-day span{font-size:13px;line-height:20px;text-transform:capitalize;font-weight:400;color:var(--os-muted,#666)}
.oss-date-day b{font-size:12px;line-height:21px;min-width:21px;border-radius:50%;font-weight:400;color:var(--os-muted,#999)}
.oss-date-day.is-today b{background:#263139;color:#fff}
.oss-range-title{align-self:center;text-align:center;font-size:14px;padding:9px 0}
#oss-calendar{margin:0 -14px 0;--fc-today-bg-color:transparent;--fc-border-color:#dadde0;font-size:12px}
#oss-calendar .fc-scrollgrid{border-radius:0;background:var(--os-surface,#fff)}
#oss-calendar .fc-timeGridWeek-view .fc-col-header,#oss-calendar .fc-timeGridDay-view .fc-col-header{display:none}
#oss-calendar .fc-timegrid-slot{height:40px}
#oss-calendar .fc-timegrid-slot-label{width:48px;background:var(--os-bg,#f6f7f8)}
#oss-calendar .fc-timegrid-slot-label-cushion{padding:0 4px;text-align:left}
#oss-calendar .oss-hour{font-size:14px;font-weight:600;color:var(--os-ink,#263139)}
#oss-calendar .oss-half-hour{font-size:14px;font-weight:600;color:var(--os-ink,#263139)}
#oss-calendar .fc-timegrid-axis{width:48px}
#oss-calendar .fc-timegrid-event{border-radius:0;border:0;margin:0 1px 0 0;box-shadow:none}
#oss-calendar .fc-timegrid-event .fc-event-main{padding:2px 2px;color:inherit}
#oss-calendar .oss-source-entry{background:#82d7ab;color:#203b2c;border-color:#82d7ab}
#oss-calendar .oss-source-entry.oss-event-completed{background:#a3c769;color:#253b1d}
#oss-calendar .oss-source-personal{background:#a6dcce;color:#153e33}
#oss-calendar .oss-source-program{background:#c4d6f7;color:#203b65}
#oss-calendar .oss-source-consultation{background:#ddcbee;color:#4b2b61}
#oss-calendar .oss-event-name{font-size:12px;line-height:1.18;overflow-wrap:anywhere;font-weight:500}
#oss-calendar .oss-event-kind{font-size:9px;line-height:1.2;letter-spacing:.04em;text-transform:uppercase;margin-top:5px;opacity:.8;overflow-wrap:anywhere}
#oss-calendar .oss-event-time{font-size:9px;line-height:1.25;margin-top:3px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
#oss-calendar .fc-timeGridDay-view .oss-event-name{font-size:15px}
#oss-calendar .fc-timeGridDay-view .oss-event-time{font-size:12px}
#content:has(#oss-calendar)>[data-action=calendar-new]{position:fixed;bottom:calc(100px + env(safe-area-inset-bottom));left:max(12px,calc((100vw - 850px)/2 + 12px));z-index:31;width:48px;height:42px;min-height:42px;border-radius:50%;padding:0;font-size:0;box-shadow:0 3px 12px #173b3426}
#content:has(#oss-calendar)>[data-action=calendar-new]::after{content:'+';font-size:29px;font-weight:400}
#oss-calendar-status{font-size:11px;margin:0;padding:3px 0}
#content:has(#oss-calendar)>.workspace-tabs{margin:0 0 4px;padding:2px;border-radius:0;gap:0}
#content:has(#oss-calendar)>.workspace-tabs button{font-size:11px;min-height:32px;padding:5px 8px;border-radius:14px}
@media(max-width:820px){body:has(#oss-calendar) .topbar{display:none}#content:has(#oss-calendar){padding-top:4px} .oss-view-row{gap:5px}.oss-view-switch button{font-size:12px}}
html[data-theme=dark] .oss-view-switch{background:#332b3c}html[data-theme=dark] .oss-view-switch button[aria-pressed=true]{background:#56505e;color:#fff}
@media(prefers-color-scheme:dark){html[data-theme=auto] .oss-view-switch{background:#332b3c}html[data-theme=auto] .oss-view-switch button[aria-pressed=true]{background:#56505e;color:#fff}}

/* Text must never paint over a later interval outside its appointment. */
#oss-calendar .fc-timegrid-event .fc-event-main{display:flex;flex-direction:column;height:100%;box-sizing:border-box;overflow:hidden}
#oss-calendar .fc-timegrid-event .oss-event-name{flex:1 1 auto;min-height:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
#oss-calendar .fc-timegrid-event .oss-event-kind{flex:0 0 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
#oss-calendar .fc-timegrid-event .oss-event-time{flex:0 0 auto;margin-top:2px;font-size:clamp(9px,2.6vw,12px);font-weight:700}
#oss-calendar .fc-timeGridDay-view .oss-event-time{font-size:12px}
.oss-date-row>.fc-prev-button,.oss-date-row>.fc-next-button{border:1px solid currentColor;border-radius:50%;height:22px;min-height:22px;line-height:18px;font-size:25px;margin:0 2px;flex-basis:22px}

#oss-calendar .fc-timegrid-event .oss-event-time span{display:block;white-space:nowrap;overflow-wrap:normal}


/* 2026-09-24 calendar display density: default is compact 08:00–22:00.
   Time labels remain complete every 30 minutes; only vertical density changes. */
.oss-view-row{gap:6px}
.oss-hours-button{flex:0 0 auto;min-height:30px;max-width:92px;padding:4px 7px;border:1px solid var(--os-line,#d6dfe4);border-radius:12px;background:var(--os-surface,#fff);color:var(--os-muted,#66737b);font:inherit;font-size:10px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.oss-hours-button:focus-visible{outline:2px solid #159b98;outline-offset:2px}
#oss-calendar[data-density=compact] .fc-timegrid-slot{height:34px}
#oss-calendar[data-density=comfortable] .fc-timegrid-slot{height:40px}
#oss-calendar[data-density=compact] .oss-hour,
#oss-calendar[data-density=compact] .oss-half-hour{font-size:13px;line-height:1;font-weight:650}
#oss-calendar[data-density=compact] .fc-timegrid-slot-label{width:48px}
#oss-calendar[data-density=compact] .fc-timegrid-axis{width:48px}
#oss-calendar[data-density=compact] .fc-timegrid-event .fc-event-main{padding:1px 2px}
#oss-calendar[data-density=compact] .fc-timeGridWeek-view .oss-event-name{-webkit-line-clamp:2;font-size:11px;line-height:1.08}
#oss-calendar[data-density=compact] .fc-timeGridWeek-view .oss-event-kind{font-size:8px;line-height:1.05;margin-top:1px}
#oss-calendar[data-density=compact] .fc-timeGridWeek-view .oss-event-time{font-size:9px;line-height:1.05;margin-top:1px}
.calendar-display-dialog{width:min(92vw,440px);border:0;border-radius:22px;padding:18px;background:var(--os-surface,var(--card,#fff));color:var(--os-ink,inherit)}
.calendar-display-dialog::backdrop{background:#08131a99}
.calendar-display-dialog>header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.calendar-display-dialog>header h3{margin:3px 0 0}
.calendar-display-dialog>header button{width:40px;height:40px;border:0;border-radius:50%;background:var(--os-bg,#eef2f4);font-size:23px}
.calendar-display-dialog .compact-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:390px){
 .oss-view-row{gap:4px;padding-left:6px;padding-right:6px}
 .oss-hours-button{max-width:76px;padding-left:5px;padding-right:5px;font-size:9px}
 .oss-month{display:none}
 .oss-view-switch button{font-size:11px}
 .calendar-display-dialog .compact-grid{grid-template-columns:1fr}
}
