/* Shared by printing and its pre-print measurement. */

@page{size:A4 landscape;margin:10mm}
body:has(.print-calendar){background:#fff;color:#182f30}
body:has(.print-calendar)>:not(main){display:none!important}
body:has(.print-calendar)>main.app-workspace{display:block;width:100%!important;max-width:none!important;margin:0!important;padding:0!important}
body:has(.print-calendar)>main>*:not(.print-calendar){display:none!important}
.print-calendar{display:block!important;font-size:9pt;line-height:1.3}
.print-calendar-heading{display:flex;justify-content:space-between;gap:12px;align-items:start}.print-calendar-heading h1{font-size:16pt;margin:0 0 4px}.print-calendar-heading p,.print-calendar-note{font-size:8pt;margin:0 0 8px}
.print-calendar table{width:100%;table-layout:fixed;border-collapse:collapse}.print-calendar th,.print-calendar td{border:1px solid #b7c7c3;padding:5px;vertical-align:top}.print-calendar th{font-size:9pt;text-align:left;background:#edf3f0}.print-calendar td{height:22mm}.print-calendar thead{display:table-header-group}.print-calendar tr{break-inside:avoid}.print-calendar .print-weekend{background:#edf1f5}.print-calendar .print-day-number{font-weight:bold;margin-bottom:4px}.print-entry{border-top:1px solid #dce5e1;margin-top:4px;padding-top:4px;font-size:8pt;overflow-wrap:anywhere;break-inside:avoid}.print-entry strong{display:block}.print-entry p{margin:3px 0 0}.print-calendar{print-color-adjust:exact;-webkit-print-color-adjust:exact}


.print-calendar{font-family:Arial,Helvetica,sans-serif}
.print-calendar-heading{align-items:center;border-bottom:2px solid #176b5b;padding-bottom:10px;margin-bottom:8px}
.print-calendar-heading h1{font-size:20pt;letter-spacing:-.5px;margin:3px 0 5px}
.print-calendar-heading img{width:130px;height:auto;object-fit:contain}
.print-calendar-heading .print-eyebrow{font-size:7pt;letter-spacing:1.2px;font-weight:bold;color:#52716b;margin:0}
.print-calendar-heading p{margin:0;font-size:9pt}.print-header-divider{color:#a3b5ae;padding:0 7px}
.print-calendar-note{font-size:7pt;color:#526766;margin:0 0 10px;white-space:normal;overflow:visible;overflow-wrap:anywhere}
.print-roster-legend{display:flex;flex-wrap:wrap;gap:3pt 10pt;margin-bottom:5pt;max-width:100%}
.print-roster-legend>span{max-width:100%;break-inside:avoid;overflow-wrap:anywhere}
.print-calendar table{border-collapse:separate;border-spacing:0;border-top:1px solid #bdcdc6;border-left:1px solid #bdcdc6}
.print-calendar th,.print-calendar td{border:0;border-right:1px solid #bdcdc6;border-bottom:1px solid #bdcdc6;padding:5px}
.print-calendar th{font-size:8pt;padding:7px;background:#e7efeb;color:#355752}
.print-calendar th:nth-child(n+6){background:#e2e8ee}
.welcome-print th{background:#e7efeb}.welcome-print th.print-weekend{background:#e2e8ee}
.print-calendar td{height:21mm;background:#fff}.print-calendar td.print-weekend{background:#edf1f5}.print-calendar td.print-outside{background:#f5f7f6}.print-calendar .print-outside .print-day-number{color:#71817b}
.print-calendar .print-day-number{display:flex;justify-content:space-between;align-items:center;font-size:8pt;margin-bottom:5px}.print-day-number small{font-size:6.5pt;font-weight:normal;color:#71817b}
.print-calendar .print-entry{border:0;border-left:2px solid var(--print-edge,#788692);border-radius:3px;background:var(--print-bg,#e9ecef);color:var(--print-text,#43525f);padding:4px 5px;margin-top:4px;font-size:7pt;line-height:1.3}
.print-entry.day-shift{--print-bg:var(--schedule-day-bg);--print-edge:var(--schedule-day-edge);--print-text:var(--schedule-day-text)}
.print-entry.evening-shift{--print-bg:var(--schedule-evening-bg);--print-edge:var(--schedule-evening-edge);--print-text:var(--schedule-evening-text)}
.print-entry.night-shift{--print-bg:var(--schedule-night-bg);--print-edge:var(--schedule-night-edge);--print-text:var(--schedule-night-text)}
.print-entry.study-shift{--print-bg:var(--schedule-study-bg);--print-edge:var(--schedule-study-edge);--print-text:var(--schedule-study-text)}
.print-entry.vacation-shift{--print-bg:var(--schedule-vacation-bg);--print-edge:var(--schedule-vacation-edge);--print-text:var(--schedule-vacation-text)}
.print-entry.off-shift{--print-bg:var(--schedule-off-bg);--print-edge:var(--schedule-off-edge);--print-text:var(--schedule-off-text)}
.print-entry.zero-shift{--print-bg:var(--schedule-zero-bg);--print-edge:var(--schedule-zero-edge);--print-text:var(--schedule-zero-text)}
.print-entry.print-activity{--print-bg:var(--schedule-activity-bg);--print-edge:var(--schedule-activity-edge);--print-text:var(--schedule-activity-text)}
.print-entry.print-absence{--print-bg:#fce8e8;--print-edge:#bc5353;--print-text:#942e35}
.print-calendar .print-draft{border-left-style:dashed}.print-entry-time{font-variant-numeric:tabular-nums}


.print-calendar .print-week-group{break-inside:avoid}
.print-calendar .print-week-group td{height:auto;border-bottom:0;padding:3px 4px}
.print-calendar .print-week-dates td{padding-top:6px;padding-bottom:2px}
.print-calendar .print-week-dates .print-day-number{margin:0}
.print-calendar .print-event-lane td{vertical-align:top;padding-top:2px;padding-bottom:2px}
.print-calendar .print-event-lane .print-entry{margin:0;min-height:24px}
.print-calendar .print-spanning{text-align:center;padding-inline:8px}
.print-calendar .print-week-spacer td{height:6mm;border-bottom:1px solid #bdcdc6;padding:0}
.print-calendar .print-week-group:has(.print-week-dates + .print-week-spacer) .print-week-spacer td{height:15mm}


.print-calendar{width:277mm;max-width:none;margin-inline:auto}
.print-calendar .print-week-group{background:linear-gradient(to right,#fff 0%,#fff 71.428571%,#edf1f5 71.428571%,#edf1f5 100%)}
.print-calendar .print-week-group td,.print-calendar td.print-weekend,.print-calendar td.print-outside{background:transparent}
.print-calendar .print-week-spacer td{height:3mm}
.print-calendar .print-week-group:has(.print-week-dates + .print-week-spacer) .print-week-spacer td{height:11mm}
.print-calendar .print-event-lane .print-entry{min-height:0}

/* Independent overlap groups keep unrelated long notes out of night-shift lanes. */
.print-calendar .print-week-body{padding:0!important;border-bottom:1px solid #bdcdc6!important;border-right:1px solid #bdcdc6}
.print-week-grid{position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));min-height:17mm;padding:0 0 3mm}
.print-day-lines{position:absolute;inset:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));pointer-events:none}
.print-day-lines>div:not(:last-child){border-right:1px solid #bdcdc6}
.print-component{position:relative;grid-row:1;min-width:0;align-self:start}
.print-component .print-event-lane{display:grid;align-items:start}
.print-component .print-event-cell{min-width:0;grid-row:1;padding:2px 4px}
.print-component .print-entry{margin:0;min-height:0}
.print-start-1{grid-column-start:1}.print-span-1{grid-column-end:span 1}.print-columns-1>.print-event-lane{grid-template-columns:repeat(1,minmax(0,1fr))}
.print-start-2{grid-column-start:2}.print-span-2{grid-column-end:span 2}.print-columns-2>.print-event-lane{grid-template-columns:repeat(2,minmax(0,1fr))}
.print-start-3{grid-column-start:3}.print-span-3{grid-column-end:span 3}.print-columns-3>.print-event-lane{grid-template-columns:repeat(3,minmax(0,1fr))}
.print-start-4{grid-column-start:4}.print-span-4{grid-column-end:span 4}.print-columns-4>.print-event-lane{grid-template-columns:repeat(4,minmax(0,1fr))}
.print-start-5{grid-column-start:5}.print-span-5{grid-column-end:span 5}.print-columns-5>.print-event-lane{grid-template-columns:repeat(5,minmax(0,1fr))}
.print-start-6{grid-column-start:6}.print-span-6{grid-column-end:span 6}.print-columns-6>.print-event-lane{grid-template-columns:repeat(6,minmax(0,1fr))}
.print-start-7{grid-column-start:7}.print-span-7{grid-column-end:span 7}.print-columns-7>.print-event-lane{grid-template-columns:repeat(7,minmax(0,1fr))}

/* One shared line layer for the entire week prevents seams after print scaling. */
.print-calendar table{border-right:1px solid #bdcdc6}
.print-calendar .print-week-group{background-image:linear-gradient(to right,transparent calc(14.28571429% - .5px),#bdcdc6 calc(14.28571429% - .5px),#bdcdc6 calc(14.28571429% + .5px),transparent calc(14.28571429% + .5px)),linear-gradient(to right,transparent calc(28.57142857% - .5px),#bdcdc6 calc(28.57142857% - .5px),#bdcdc6 calc(28.57142857% + .5px),transparent calc(28.57142857% + .5px)),linear-gradient(to right,transparent calc(42.85714286% - .5px),#bdcdc6 calc(42.85714286% - .5px),#bdcdc6 calc(42.85714286% + .5px),transparent calc(42.85714286% + .5px)),linear-gradient(to right,transparent calc(57.14285714% - .5px),#bdcdc6 calc(57.14285714% - .5px),#bdcdc6 calc(57.14285714% + .5px),transparent calc(57.14285714% + .5px)),linear-gradient(to right,transparent calc(71.42857143% - .5px),#bdcdc6 calc(71.42857143% - .5px),#bdcdc6 calc(71.42857143% + .5px),transparent calc(71.42857143% + .5px)),linear-gradient(to right,transparent calc(85.71428571% - .5px),#bdcdc6 calc(85.71428571% - .5px),#bdcdc6 calc(85.71428571% + .5px),transparent calc(85.71428571% + .5px)),linear-gradient(to right,#fff 0%,#fff 71.428571%,#edf1f5 71.428571%,#edf1f5 100%)}
.print-calendar .print-week-group td,.print-calendar .print-week-body{border-right:0}
.print-calendar th:last-child{border-right:0}
/* Keep placement shading across the full day without duplicating the shared grid lines. */
.print-day-lines{display:grid}
.print-day-lines>div:not(:last-child){border-right:0}

/* Header uses the exact same line positions as the calendar body. */
.print-calendar thead{background-image:linear-gradient(to right,transparent calc(14.28571429% - .5px),#bdcdc6 calc(14.28571429% - .5px),#bdcdc6 calc(14.28571429% + .5px),transparent calc(14.28571429% + .5px)),linear-gradient(to right,transparent calc(28.57142857% - .5px),#bdcdc6 calc(28.57142857% - .5px),#bdcdc6 calc(28.57142857% + .5px),transparent calc(28.57142857% + .5px)),linear-gradient(to right,transparent calc(42.85714286% - .5px),#bdcdc6 calc(42.85714286% - .5px),#bdcdc6 calc(42.85714286% + .5px),transparent calc(42.85714286% + .5px)),linear-gradient(to right,transparent calc(57.14285714% - .5px),#bdcdc6 calc(57.14285714% - .5px),#bdcdc6 calc(57.14285714% + .5px),transparent calc(57.14285714% + .5px)),linear-gradient(to right,transparent calc(71.42857143% - .5px),#bdcdc6 calc(71.42857143% - .5px),#bdcdc6 calc(71.42857143% + .5px),transparent calc(71.42857143% + .5px)),linear-gradient(to right,transparent calc(85.71428571% - .5px),#bdcdc6 calc(85.71428571% - .5px),#bdcdc6 calc(85.71428571% + .5px),transparent calc(85.71428571% + .5px)),linear-gradient(to right,#e7efeb 0%,#e7efeb 71.428571%,#e2e8ee 71.428571%,#e2e8ee 100%)}
.print-calendar th,.print-calendar th:nth-child(n+6){background:transparent;border-right:0}

/* Department month: one student per row, automatic vertical pagination. */
.print-month-overview .print-roster-name{width:30mm}
.print-month-overview .print-roster{font-size:6pt}
.print-month-overview .print-roster thead{background:#e7efeb}
.print-month-overview .print-roster th{font-size:6pt;padding:4px 1px;border-right:1px solid #bdcdc6;background:transparent;text-align:center}
.print-month-overview .print-roster th:first-child{text-align:left;padding:5px}
.print-month-overview .print-roster tbody th{font-size:7pt;background:#fff;overflow-wrap:anywhere}
.print-roster tbody th span{display:block;font-size:6pt;font-weight:normal;margin-top:2px;color:#526766}
.print-month-overview .print-roster-body{height:auto;padding:0;background:transparent}
.roster-grid{position:relative;min-height:13mm;padding:3px 0}
.roster-day-background{position:absolute;inset:0;display:grid;pointer-events:none}
.roster-day-background>div:not(:last-child){border-right:1px solid #dce5e1}
.print-month-overview .roster-weekend{background:#edf1f5!important}
.roster-lane{position:relative;display:grid;align-items:start;padding:1px 0}
.print-month-overview .roster-entry{grid-row:1;margin:0 1px;padding:4px 0;text-align:center;font-size:5.5pt;border-left-width:1px;line-height:1.2;min-width:0}
.roster-entry small{font-size:4.8pt;letter-spacing:-.2px}
.print-start-8{grid-column-start:8}.print-span-8{grid-column-end:span 8}
.print-start-9{grid-column-start:9}.print-span-9{grid-column-end:span 9}
.print-start-10{grid-column-start:10}.print-span-10{grid-column-end:span 10}
.print-start-11{grid-column-start:11}.print-span-11{grid-column-end:span 11}
.print-start-12{grid-column-start:12}.print-span-12{grid-column-end:span 12}
.print-start-13{grid-column-start:13}.print-span-13{grid-column-end:span 13}
.print-start-14{grid-column-start:14}.print-span-14{grid-column-end:span 14}
.print-start-15{grid-column-start:15}.print-span-15{grid-column-end:span 15}
.print-start-16{grid-column-start:16}.print-span-16{grid-column-end:span 16}
.print-start-17{grid-column-start:17}.print-span-17{grid-column-end:span 17}
.print-start-18{grid-column-start:18}.print-span-18{grid-column-end:span 18}
.print-start-19{grid-column-start:19}.print-span-19{grid-column-end:span 19}
.print-start-20{grid-column-start:20}.print-span-20{grid-column-end:span 20}
.print-start-21{grid-column-start:21}.print-span-21{grid-column-end:span 21}
.print-start-22{grid-column-start:22}.print-span-22{grid-column-end:span 22}
.print-start-23{grid-column-start:23}.print-span-23{grid-column-end:span 23}
.print-start-24{grid-column-start:24}.print-span-24{grid-column-end:span 24}
.print-start-25{grid-column-start:25}.print-span-25{grid-column-end:span 25}
.print-start-26{grid-column-start:26}.print-span-26{grid-column-end:span 26}
.print-start-27{grid-column-start:27}.print-span-27{grid-column-end:span 27}
.print-start-28{grid-column-start:28}.print-span-28{grid-column-end:span 28}
.print-start-29{grid-column-start:29}.print-span-29{grid-column-end:span 29}
.print-start-30{grid-column-start:30}.print-span-30{grid-column-end:span 30}
.print-start-31{grid-column-start:31}.print-span-31{grid-column-end:span 31}
.roster-days-28>.roster-day-background,.roster-days-28>.roster-lane{grid-template-columns:repeat(28,minmax(0,1fr))}
.roster-days-7>.roster-day-background,.roster-days-7>.roster-lane{grid-template-columns:repeat(7,minmax(0,1fr))}
.roster-days-29>.roster-day-background,.roster-days-29>.roster-lane{grid-template-columns:repeat(29,minmax(0,1fr))}
.roster-days-30>.roster-day-background,.roster-days-30>.roster-lane{grid-template-columns:repeat(30,minmax(0,1fr))}
.roster-days-31>.roster-day-background,.roster-days-31>.roster-lane{grid-template-columns:repeat(31,minmax(0,1fr))}

/* Day backgrounds fill the entire student row, including tall name cells. */
.print-month-overview .print-roster-body{position:relative}
.print-month-overview .print-roster tbody>tr>th,.print-month-overview .print-roster tbody>tr>td{border-bottom:1px solid #bdcdc6;vertical-align:top}
.print-month-overview .print-roster-body>.roster-day-background{inset:0}

/* Paint row separators above the positioned weekend backgrounds. */
.print-month-overview .print-roster tbody>tr>th,.print-month-overview .print-roster tbody>tr>td{position:relative;border-bottom:0}
.print-month-overview .print-roster tbody>tr>th::after,.print-month-overview .print-roster tbody>tr>td::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:#bdcdc6;z-index:3;pointer-events:none}

/* Draw the outer frame per row, so it ends at the last student on each page. */
.print-month-overview .print-roster{border:0}
.print-month-overview .print-roster thead th{border-top:1px solid #bdcdc6}
.print-month-overview .print-roster tr>th:first-child{border-left:1px solid #bdcdc6}
.print-month-overview .print-roster thead th:last-child,.print-month-overview .print-roster tbody>tr>.print-roster-body{border-right:1px solid #bdcdc6}

/* Explicit pages keep numbering inside the printable area on every printer. */
.print-month-overview{page:auto}
.roster-print-page{height:188mm;display:flex;flex-direction:column;break-after:page;box-sizing:border-box}
.roster-print-page:last-child{break-after:auto}
.roster-print-page>*{flex-shrink:0}
.roster-page-number{margin-top:auto;padding-top:3mm;text-align:right;font:8pt Arial,Helvetica,sans-serif;color:#526766}

/* Week groups repeat with the date headings on every roster page. */
.print-month-overview .print-roster .roster-week-heading th{padding:3px 1px;font-size:6pt;background:#e4eeea}
.print-month-overview .print-roster .roster-week-heading th:nth-child(2n){background:#edf3f0}
.print-month-overview .print-roster .roster-week-heading th:first-child{text-align:left;padding:5px}
.print-month-overview .print-roster .roster-date-heading th{border-top:0}
.print-month-overview .print-roster .roster-date-heading th:first-child{border-left:0;text-align:center;padding:4px 1px}
.print-calendar .outside-placement { background-image: repeating-linear-gradient(135deg, transparent, transparent 6px, #70847c30 6px, #70847c30 8px) !important; print-color-adjust: exact; }
.print-calendar .calendar-holiday { background-color: #fff0ee !important; }
.print-calendar .holiday-label { display: block; font-size: 6pt; line-height: 1.2; color: #793a33; margin: 2px 0 4px; font-weight: bold; overflow-wrap: anywhere; }
.print-calendar .holiday-marker { display: block; width: fit-content; margin: 2px auto 0; padding: 0 2px; font-size: 5pt; background: #f2d3cd; border-radius: 2px; }
.print-calendar .calendar-holidays { display: block; font-size: 7pt; color: #793a33; margin-top: 4px; line-height: 1.4; }
.print-calendar .print-brand { flex: 0 0 auto; }
.print-calendar .product-brand { display: inline-flex; flex-direction: column; width: 130px; }
.print-calendar .product-brand .brand-logo { width: 130px; margin: 0; }
