/* The four local units keep independent horizontal/vertical scroll positions. */
.general-column-grid{align-items:stretch}
.general-column-grid .general-panel{height:clamp(190px,calc((100dvh - 490px)/2),360px)}
.general-column-grid .general-panel>header{min-height:58px;padding:10px 12px}
.general-panel-controls{display:flex;align-items:center;gap:6px;flex:none}
.general-panel-controls .icon-button{width:32px;height:34px;border:1px solid var(--border);border-radius:7px}
.general-column-grid .general-calendar-scroll{overflow:auto;overscroll-behavior:contain;min-height:0;flex:1;position:relative;scrollbar-width:thin;scrollbar-color:var(--border) var(--surface)}
.general-calendar-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.general-timeline{display:grid;grid-template-columns:48px repeat(var(--general-columns),minmax(var(--general-column-width),1fr));min-width:calc(48px + var(--general-columns)*var(--general-column-width));background:var(--surface);position:relative}
.general-time-heading,.general-professional-heading{position:sticky;top:0;z-index:4;height:57px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:center}
.general-time-heading{left:0;z-index:6;font-size:8px;color:var(--muted)}
.general-professional-heading{gap:8px;padding:7px 9px;min-width:0;border-left:1px solid var(--border);justify-content:flex-start}
.general-avatar-wrap{position:relative;display:inline-flex;flex:none}
.general-avatar-wrap .avatar{width:30px;height:30px;font-size:10px}
.general-professional-count{position:absolute;right:-5px;top:-5px;min-width:15px;height:15px;padding:0 3px;border:1px solid var(--surface);border-radius:10px;background:var(--accent);color:var(--surface);font-size:9px;font-weight:650;line-height:14px;text-align:center}
.general-professional-name{font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.general-time-column{position:sticky;left:0;z-index:3;height:var(--general-day-height);background:var(--surface);border-bottom:1px solid var(--border)}
.general-time-tick{position:absolute;right:7px;font-size:9px;line-height:12px;transform:translateY(-6px);color:var(--muted)}
.general-time-tick:first-child{transform:translateY(3px)}
.general-time-tick:last-child{transform:translateY(-13px)}
.general-professional-column{position:relative;min-width:0;height:var(--general-day-height);border-left:1px solid var(--border);border-bottom:1px solid var(--border);background:repeating-linear-gradient(to bottom,var(--surface) 0,var(--surface) calc(var(--general-half-hour) - 1px),var(--grid-half,#f1edf5) calc(var(--general-half-hour) - 1px),var(--grid-half,#f1edf5) var(--general-half-hour),var(--surface) var(--general-half-hour),var(--surface) calc(var(--general-hour) - 1px),var(--grid-hour,#e6e0ed) calc(var(--general-hour) - 1px),var(--grid-hour,#e6e0ed) var(--general-hour))}
.general-external-column{background-color:var(--surface-soft)}
.general-closed-time{position:absolute;inset-inline:0;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--muted) 9%,transparent),color-mix(in srgb,var(--muted) 9%,transparent) 5px,transparent 5px,transparent 9px);pointer-events:none}
.general-timed-event{position:absolute;min-height:0;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:2px;padding:4px 5px;overflow:hidden;line-height:1.25;z-index:1}
.general-timed-event:hover,.general-timed-event:focus-visible{z-index:2;box-shadow:0 2px 10px #33204425}
.general-timed-event .general-event-time{display:flex;align-items:center;gap:3px;width:auto;min-width:0;white-space:nowrap;overflow:hidden;flex-shrink:0}
.general-timed-event .general-event-time strong{font-size:10px}
.general-timed-event .general-event-time small{font-size:9px;white-space:nowrap}
.general-timed-event .general-event-time>svg{margin:0;flex:none;width:11px;height:11px}
.general-timed-event .general-event-cues{display:flex;align-items:center;justify-content:flex-end;gap:3px;margin-left:auto;min-width:0;max-width:42%}
.general-event-cues>span{overflow:hidden;text-overflow:ellipsis;font-size:10px;font-weight:650}
.general-event-cues svg{width:11px;height:11px;flex:none}
.general-timed-event .general-event-body{gap:2px;overflow:hidden}
.general-timed-event .general-event-body strong{font-size:11px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.general-timed-event .general-event-body>span{font-size:10px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.general-timed-event .general-group-mark{position:absolute;bottom:2px;right:3px;font-size:8px;line-height:10px;padding:0 3px;background:var(--surface)}
.general-timed-event.period-event-multi{border-left:5px double #669581}
.general-timed-event.period-event-group{border-bottom:2px dashed var(--accent)}
.general-short-event .general-event-body>span{display:none}
.general-short-event .general-event-time small{display:none}
.general-timed-event.period-event-block{background:repeating-linear-gradient(135deg,var(--surface-soft),var(--surface-soft) 6px,color-mix(in srgb,var(--muted) 10%,var(--surface-soft)) 6px,color-mix(in srgb,var(--muted) 10%,var(--surface-soft)) 7px)}
.general-external-slot{position:absolute;overflow:hidden;z-index:1}
.general-external-slot .external-general{height:100%;width:100%;min-height:0;overflow:hidden;padding:4px 5px;gap:2px;align-items:stretch;display:flex;flex-direction:column}
.general-external-slot .external-general :is(strong,span){font-size:10px;line-height:1.3}
.general-external-slot .external-time svg{width:11px;height:11px}
.general-room-status{display:flex;gap:5px;padding:5px 8px;overflow-x:auto;border-bottom:1px solid var(--border);flex:none;background:var(--surface-soft)}
.general-room-status button{display:flex;align-items:center;gap:5px;border:1px dashed var(--border);border-radius:5px;flex:none;font-size:10px;color:var(--muted);padding:5px 7px;background:var(--surface)}
.general-room-status button svg{width:12px;height:12px;flex:none}
.general-room-status button:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}
.general-empty-line{font-size:10px;color:var(--muted);padding:5px 10px;background:var(--surface-soft);margin:0}
.general-timeline[data-density="slim"] .general-professional-heading{flex-direction:column;gap:3px;padding:5px}
.general-timeline[data-density="slim"] .general-professional-name{max-width:100%;font-size:9px}
.general-timeline[data-density="avatar"] .general-professional-heading{padding:5px;justify-content:center}
.general-timeline[data-density="avatar"] .general-professional-name{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.general-timeline[data-density="avatar"] .general-event-body,.general-timeline[data-density="avatar"] .general-event-time small{display:none}
.general-timeline[data-density="avatar"] .general-event-time{flex-direction:column;align-items:flex-start;gap:2px}
.general-timeline[data-density="avatar"] .general-event-cues{max-width:100%;margin-left:0}
.general-timeline[data-density="avatar"] .general-timed-event{padding:4px 3px}
.general-timeline[data-density="avatar"] .general-external-slot .external-general>span:not(.external-time){display:none}
.general-unit-closed>header p{font-weight:600}
.general-professional-legend{display:flex;align-items:center;gap:10px;overflow:auto;padding:6px 10px;flex:none;border-bottom:1px solid var(--border);font-size:10px;color:var(--muted)}
.general-professional-legend>span{display:flex;align-items:center;gap:5px;white-space:nowrap}
.general-professional-legend i{display:inline-block;height:9px;width:9px;border-radius:50%;flex:none}
.general-period-scroll .period-week-event>.general-event{flex-direction:column;align-items:stretch;justify-content:flex-start;gap:2px}
.general-period-scroll .general-event-time{display:flex;align-items:center;gap:3px;width:auto;min-width:0;white-space:nowrap;overflow:hidden}
.general-period-scroll .general-event-time strong{font-size:10px}
.general-period-scroll .general-event-time small{font-size:9px}
.general-period-scroll .general-event-time>svg{width:10px;height:10px;margin:0}
.general-period-scroll .general-event-cues{display:flex;gap:3px;align-items:center;margin-left:auto;max-width:45%;min-width:0}
.general-period-scroll .general-event-body{gap:2px;overflow:hidden}
.general-period-scroll .general-event-body>strong,.general-period-scroll .general-event-body>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.general-period-scroll .general-group-mark{position:absolute;bottom:2px;right:3px;line-height:10px;background:var(--surface)}
.general-column-grid.general-panel-expanded{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
.general-column-grid.general-panel-expanded .general-panel:not(.is-expanded){display:none}
.general-column-grid.general-panel-expanded .general-panel.is-expanded{height:clamp(400px,calc(100dvh - 360px),840px)}
.agenda-expanded .general-column-grid .general-panel{height:auto;min-height:0}
.agenda-expanded .general-column-grid.general-panel-expanded .general-panel.is-expanded{height:auto}
@media(max-width:1000px){.general-column-grid .general-panel{height:300px}.general-panel>header .button{font-size:10px}.general-schedule .agenda-display-controls{flex-wrap:wrap;gap:10px}}
@media(max-width:700px){.general-column-grid .general-panel{height:340px}.general-column-grid .general-panel-unavailable{height:200px}.general-column-grid .general-panel>header{min-height:68px}.general-panel-controls .icon-button{width:40px;height:42px}.general-column-grid.general-panel-expanded .general-panel.is-expanded{height:clamp(400px,calc(100dvh - 280px),720px)}.agenda-expanded .general-column-grid .general-panel{height:340px}.agenda-expanded .general-column-grid .general-panel-unavailable{height:200px}.general-schedule .view-toggle button{min-height:36px;padding:6px 9px}}

/* AG28-01: the daily desktop overview fits its two rows into the real viewport.
   Compact and Fit share this overview scale; Tall/mobile retain scrolling. */
.agenda-shell #main[data-general-fit="true"]{overflow:hidden}
.agenda-shell #main[data-general-fit="true"]>.schedule-card{flex:1;min-height:0;overflow:hidden}
.agenda-shell #main[data-general-fit="true"] #schedule-region{display:flex;flex-direction:column;flex:1;min-height:0;height:auto;overflow:hidden}
.agenda-shell #main[data-general-fit="true"] #schedule-region>.general-grid{flex:1;min-height:0;height:auto;grid-template-rows:repeat(var(--general-panel-rows,2),minmax(0,1fr));align-items:stretch;gap:6px;padding:6px}
.agenda-shell #main[data-general-fit="true"] .general-column-grid .general-panel{height:auto;min-height:0}
.agenda-shell #main[data-general-fit="true"] .general-column-grid .general-calendar-scroll{flex:1;min-height:0;height:auto;max-height:none;overflow:auto}
#main[data-general-fit="true"] .general-column-grid .general-panel>header{min-height:40px;padding:4px 7px;gap:6px;flex:none}
#main[data-general-fit="true"] .general-panel>header>div:first-child{min-width:0}
#main[data-general-fit="true"] .general-panel h2{font-size:12px;line-height:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#main[data-general-fit="true"] .general-panel header p{font-size:9px;line-height:12px;margin:1px 0 0}
#main[data-general-fit="true"] .general-panel-controls{gap:4px}
#main[data-general-fit="true"] .general-panel-controls :is(.button,.icon-button){min-height:30px;height:30px;padding:4px 6px;font-size:10px}
#main[data-general-fit="true"] .general-panel-controls .icon-button{width:30px;min-width:30px}
#main[data-general-fit="true"] :is(.general-time-heading,.general-professional-heading){height:36px}
#main[data-general-fit="true"] .general-professional-heading{gap:4px;padding:3px 4px}
#main[data-general-fit="true"] .general-timeline[data-density="fit"] .general-professional-heading{flex-direction:row;justify-content:flex-start;padding:3px 4px}
#main[data-general-fit="true"] .general-timeline[data-density="fit"] .general-avatar-wrap{width:min(24px,42%);height:auto}
#main[data-general-fit="true"] .general-avatar-wrap .avatar{width:24px;height:24px;font-size:9px}
#main[data-general-fit="true"] .general-professional-name{font-size:10px;min-width:0}
#main[data-general-fit="true"] .general-professional-count{font-size:8px;min-width:11px;height:11px;line-height:10px;right:-2px;top:-2px;padding:0 1px}
#main[data-general-fit="true"] .general-capacity{padding:3px 7px;margin:0;font-size:9px;line-height:12px;flex:none}
#main[data-general-fit="true"] .general-room-status{gap:4px;padding:3px 6px;flex-wrap:wrap;overflow:visible}
#main[data-general-fit="true"] .general-room-status button{font-size:9px;padding:3px 5px}
#main[data-general-fit="true"] .general-time-tick{font-size:9px;line-height:10px;transform:translateY(-5px)}
#main[data-general-fit="true"] .general-time-tick:first-child{transform:translateY(1px)}
#main[data-general-fit="true"] .general-time-tick:last-child{transform:translateY(-11px)}
#main[data-general-fit="true"] .general-time-tick-minor{visibility:hidden}
#main[data-general-fit="true"] .agenda-closed-day{min-height:0;height:100%;padding:8px;gap:5px}
#main[data-general-fit="true"] .agenda-closed-day .agenda-closed-icon{width:26px;height:26px}
#main[data-general-fit="true"] .agenda-closed-day h3{font-size:12px;margin:0}
#main[data-general-fit="true"] .agenda-closed-day p{font-size:11px;margin:0}
#main[data-general-fit="true"] .agenda-closed-day small{font-size:10px}

/* A very short interval remains a precise, focusable bar; its summary carries
   the complete text instead of drawing clipped fragments of letters. */
.general-timed-event.general-micro-event :is(.general-event-time,.general-event-body){visibility:hidden}

.general-external-slot.general-micro-event .external-general>*{visibility:hidden}
