/* Shared schedule viewport: the same hour occupies the same column on every row. */
.ag-vgrid-shell{overflow:auto;max-height:calc(100dvh - 250px);min-height:180px;border:1px solid #dbe5ea;border-radius:12px;background:#fff;isolation:isolate}
.ag-vgrid-shell:focus-visible{outline:2px solid #6d183a;outline-offset:2px}
.ag-vgrid{width:max-content;min-width:100%}
.ag-vgrid-head,.ag-vrow{display:grid;grid-template-columns:220px max-content 100px 76px;align-items:stretch}
.ag-vgrid-head{position:sticky;top:0;z-index:3;background:#f4f8fa;border-bottom:1px solid #dbe5ea;color:#334e60;font-size:13px;font-weight:700}
.ag-vgrid-head>span{padding:12px}
.ag-vgrid-head>span:first-child,.ag-vprofessional{position:sticky;left:0;z-index:2;background:#f8fafc;border-right:1px solid #dbe5ea}
.ag-vgrid-head>span:first-child{z-index:4;background:#f4f8fa}
.ag-vrow{border-bottom:1px solid #e3eaee}
.ag-vrow:last-child{border-bottom:0}
.ag-vprofessional{display:flex;align-items:center;gap:9px;padding:10px}
.ag-vavatar{display:none}
.ag-vprofessional strong{display:block;color:#12394d;font-size:14px;line-height:1.35;font-weight:700}
.ag-vprofessional small{display:block;margin-top:4px;color:#405768;font-size:12px;line-height:1.35;font-weight:400}
.ag-vslots,.ag-vhours{display:grid;grid-auto-flow:column;grid-auto-columns:126px;gap:6px;padding:6px 8px;overflow:visible}
.ag-vhours{align-items:center;text-align:center}
.ag-vslot-group{position:relative;min-width:0;display:flex}
.ag-vslot-empty{min-height:74px}
.ag-vslot{width:100%;min-width:0;min-height:74px;border:1px solid #cdd9df;border-radius:8px;padding:7px;background:#eef2f5;color:#24485c;text-align:left;display:grid;gap:4px;cursor:pointer}
.ag-vslot-time{font-size:14px;font-weight:700;color:inherit}
.ag-vslot-patients{display:block;font-size:11px;font-weight:400;line-height:1.3}
.ag-vslot strong{font-size:14px;font-weight:700;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-vslot small{font-size:12px;line-height:1.35;font-weight:400;color:inherit;padding-right:24px}
.ag-vslot.free{background:#e8f7ee!important;border-color:#8ccca5!important;color:#0b6742!important}
.ag-vslot.ag-unavailable{background:#eef1f3!important;border-color:#cfd6da!important;color:#4a5c69!important;cursor:not-allowed}
.ag-vslot-add{position:absolute;right:4px;bottom:4px;width:26px;height:26px;min-height:26px;padding:0;border:1px solid #8ccca5;border-radius:6px;background:#f0faf4;color:#0b6742;font-size:18px;cursor:pointer}
.ag-vslot-add:hover{background:#dff1e7}
.ag-vslot-add:focus-visible,.ag-vslot:focus-visible{outline:2px solid #6d183a;outline-offset:1px}
.ag-vroom,.ag-vcount{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:8px;border-left:1px solid #edf1f3;background:#fcfdfd;text-align:center}
.ag-vroom span{font-size:11px;color:#275c50}
.ag-vroom button{border:0;background:transparent;color:#3c6f84;font-size:11px;cursor:pointer;text-decoration:underline}
.ag-vcount strong{font-size:14px;color:#0d6a58}
.ag-vcount small{font-size:12px;color:#405768}
.ag-vslot.ag-status-regular{background:#e6f0fb!important;border-color:#9ebfe1!important;color:#184f77!important}
.ag-vslot.ag-status-attention{background:#fff2cf!important;border-color:#e1c56e!important;color:#745600!important}
.ag-vslot.ag-status-error{background:#ffe5e7!important;border-color:#e5a0a7!important;color:#8c2631!important}
/* Filtering hides a slot without moving later hours into its column. */
.ag-vslots>.ag-vslot-group.ag-health-hidden{display:flex!important;visibility:hidden}
.ag-vrow.ag-health-row-hidden{display:none!important}

/* Controls keep their existing inputs and event handlers. */
.ag-card:has(.ag-compact-controls){display:block;padding:14px}
.ag-card:has(.ag-compact-controls) .ag-modes{display:flex;flex-wrap:nowrap;gap:6px;margin:0 0 10px;overflow-x:auto}
.ag-card:has(.ag-compact-controls) .ag-modes button{flex:0 0 auto;min-height:34px;padding:7px 10px;font-size:12px;white-space:nowrap}
.ag-card:has(.ag-compact-controls) .ag-compact-controls{position:relative;top:auto;z-index:5;display:grid;grid-template-columns:110px minmax(160px,1fr) minmax(210px,1.6fr) 155px 150px auto;align-items:end;gap:8px;margin:0 0 8px;padding:0;background:transparent;border:0;box-shadow:none}
.ag-card .ag-compact-controls>label,.ag-card .ag-compact-controls #ag-specialty-filter-wrap{display:grid;grid-template-columns:1fr!important;gap:4px!important;min-width:0;min-height:0;grid-column:auto;margin:0!important;padding:0!important;border:0;background:transparent!important}
.ag-card .ag-compact-controls label>span,.ag-card .ag-compact-controls #ag-specialty-filter-wrap label{font-size:11px!important;line-height:1.3;color:#405768;letter-spacing:.03em;margin:0}
.ag-card .ag-compact-controls .ag-search-wrap{grid-column:auto;min-width:0;margin:0}
.ag-card .ag-compact-controls select,.ag-card .ag-compact-controls #ag-specialty-filter,.ag-card .ag-compact-controls .ag-search-wrap>input{width:100%;min-width:0;height:36px;min-height:36px!important;border-radius:8px;font-size:13px!important}
.ag-card .ag-compact-controls .ag-health-toolbar{display:contents}
.ag-card .ag-compact-controls .ag-health-toolbar label{min-width:0;gap:4px}
.ag-card .ag-compact-controls>.ag-mini{height:36px;min-height:36px;padding:6px 9px}
.ag-extra-filters{position:relative;min-width:0}
.ag-extra-filters>summary{list-style:none;min-height:36px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:3px 9px;border:1px solid #cbd5e1;border-radius:8px;background:white;color:#6d183a;font-size:12px;font-weight:700;cursor:pointer}
.ag-extra-filters>summary::-webkit-details-marker{display:none}
.ag-extra-filters>summary::after{content:'▾';position:absolute;right:8px;top:9px}
.ag-extra-filters[open]>summary::after{content:'▴'}
.ag-filter-summary{font-size:11px;font-weight:400;padding-right:12px}
.ag-extra-filter-panel{position:absolute;right:0;top:calc(100% + 6px);width:330px;max-width:calc(100vw - 48px);padding:14px;border:1px solid #dbe5ea;border-radius:10px;background:#fff;box-shadow:0 8px 24px #12394d22}
.ag-card .ag-extra-filter-panel .ag-check{display:flex;min-height:32px;margin:0;padding:0}
.ag-card .ag-extra-filter-panel .ag-units{display:flex;flex-direction:column;align-items:flex-start;gap:9px;padding:10px 0 0;margin:8px 0 0;border:0;border-top:1px solid #e3eaee}
.ag-card:has(.ag-compact-controls) .ag-info{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px;margin:6px 0}
.ag-card:has(.ag-compact-controls) .ag-health-legend{font-size:12px;gap:9px}
@media(max-width:1200px){
 .ag-card:has(.ag-compact-controls) .ag-compact-controls{grid-template-columns:110px minmax(150px,1fr) minmax(180px,1.4fr)}
 .ag-card .ag-compact-controls>.ag-mini{justify-self:start}
 .ag-vgrid-shell{max-height:calc(100dvh - 300px)}
}
@media(max-width:650px){
 .ag-card:has(.ag-compact-controls){padding:10px}
 .ag-card:has(.ag-compact-controls) .ag-compact-controls{grid-template-columns:1fr 1fr}
 .ag-card .ag-compact-controls .ag-search-wrap{grid-column:1/-1;grid-row:1}
 .ag-extra-filter-panel{right:0;left:auto}
 .ag-vgrid-head,.ag-vrow{grid-template-columns:150px max-content 90px 70px}
 .ag-vavatar{display:none}
 .ag-vprofessional strong{font-size:14px}
 .ag-vgrid-shell{max-height:65dvh}
}
@media print{
 .ag-compact-controls,.ag-extra-filters,.ag-vslot-add{display:none!important}
 .ag-vgrid-shell{overflow:visible;max-height:none}
}

.ag-vslot{font-family:Arial,Helvetica,sans-serif;font-weight:400;text-shadow:none}
.ag-vslot-time,.ag-vslot strong,.ag-vprofessional strong{text-shadow:none}
