:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#182f30;background:#f3f6f5;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{margin:0}a{color:#14665d;text-underline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.7rem,4vw,2.3rem);letter-spacing:-.04em;margin-bottom:10px}h2{font-size:1.2rem;margin-bottom:20px}h3{font-size:1rem;margin-bottom:4px}p{margin-bottom:12px}.muted{color:#5e7171}.small{font-size:.85rem}.brand{font-weight:750;letter-spacing:-.03em;text-decoration:none;color:#15594f}.login{max-width:440px;margin:10vh auto 30px;background:white;padding:36px;border:1px solid #dce5e1;border-radius:18px}.login .brand{margin-bottom:38px}.login button{width:100%}.login .small{margin-top:24px;margin-bottom:0}header{background:white;border-bottom:1px solid #dce5e1;display:flex;align-items:center;gap:40px;padding:20px max(24px,calc((100vw - 1200px)/2))}nav{display:flex;gap:24px;flex:1}nav a{color:#526766;text-decoration:none;font-size:.95rem}nav a[aria-current]{color:#15594f;font-weight:700}header form{margin:0}.workspace{max-width:1200px;margin:0 auto;padding:40px 24px}.eyebrow{text-transform:uppercase;font-size:.75rem;letter-spacing:.14em;font-weight:700;color:#52716b;margin-bottom:8px}.intro{margin-bottom:28px}.columns{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:24px;align-items:start}.panel{background:white;border:1px solid #dce5e1;border-radius:14px;padding:26px;min-width:0}.narrow{max-width:500px}label{display:block;font-size:.9rem;font-weight:600;margin-bottom:17px}input,select,textarea{font:inherit;color:inherit;background:#fff;width:100%;padding:11px 12px;border:1px solid #b7c7c3;border-radius:7px;margin-top:6px;min-width:0}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid #bfe6da;outline-offset:1px;border-color:#1a7363}button,.button{display:inline-flex;align-items:center;justify-content:center;background:#176b5b;color:white;border:1px solid transparent;border-radius:7px;padding:10px 17px;font:inherit;font-weight:600;font-size:.9rem;cursor:pointer;text-decoration:none}button:hover,.button:hover{background:#105444}.secondary{background:white;color:#355752;border-color:#b7c7c3}.secondary:hover{background:#e8f1ed}.danger{background:#a42c32}.danger:hover{background:#822029}.toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:20px}.toolbar h2{margin-bottom:2px}.weeknav{display:flex;gap:8px}.count{background:#e6f2ec;color:#285e4e;font-size:.8rem;border-radius:20px;padding:3px 9px;margin-left:5px;vertical-align:middle}.shift{display:flex;gap:20px;border-top:1px solid #e5ece8;padding:22px 0}.shift:last-child{padding-bottom:0}.date{background:#edf5f0;border-radius:8px;width:52px;min-width:52px;height:65px;display:flex;flex-direction:column;align-items:center;justify-content:center}.date strong{font-size:1.3rem}.date span{font-size:.8rem}.shiftbody{min-width:0;flex:1;overflow-wrap:anywhere}.shift p{margin-bottom:4px}.note{white-space:normal;font-size:.9rem;margin-top:8px}.actions{display:flex;gap:20px;align-items:baseline;flex-wrap:wrap;margin-top:12px;font-size:.85rem}details{font-size:.85rem}summary{color:#8c3036;cursor:pointer}details form{margin-top:12px}.check{display:flex;gap:9px;align-items:flex-start;font-weight:400}.check input{width:auto;margin-top:5px}.student{border-top:1px solid #e5ece8;padding:20px 0;overflow-wrap:anywhere}.student:last-child{padding-bottom:0}.empty{padding:32px 12px;text-align:center;color:#5e7171}.alert{padding:14px 18px;border-radius:8px;margin-bottom:24px}.error{background:#fceaea;color:#84282c}.success{background:#dff3e6;color:#21563a}footer{text-align:center;color:#667b75;font-size:.8rem;padding:28px 16px}@media(max-width:760px){header{gap:18px;padding:16px;flex-wrap:wrap}header .brand{flex:1}body>header>nav{order:3;flex-basis:100%;gap:20px}.workspace{padding:28px 16px}.columns{grid-template-columns:1fr}.panel{padding:20px}.toolbar{align-items:flex-start;flex-direction:column}.login{margin:6vh 16px 24px;max-width:none;padding:28px}.shift{gap:12px}}
/* Planning overview */
.workspace:has(.planner-toolbar){max-width:1600px;padding-top:24px}.workspace:has(.planner-toolbar) .intro{margin-bottom:20px}.workspace:has(.planner-toolbar) h1{font-size:1.8rem}.planner-toolbar,.planner-meta{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.planner-toolbar{margin-bottom:18px}.planner-toolbar h2{margin:0;font-size:1.1rem}.planner-toolbar .weeknav{align-items:center;gap:16px}.planner-toolbar .actions{margin:0}.today-link{font-size:.85rem}.planner-meta{justify-content:flex-start;margin-bottom:16px;font-size:.85rem}.planner-meta>span{background:#e7efeb;padding:7px 12px;border-radius:6px}.search-label{display:flex;align-items:center;gap:12px;margin:0 0 0 auto;font-size:.85rem}.search-label input{width:230px;margin:0;padding:8px 12px}.planner-scroll{overflow-x:auto;border:1px solid #cfdcd6;border-radius:10px;background:white}.planner{border-collapse:separate;border-spacing:0;width:100%;min-width:1180px;table-layout:fixed;font-size:.8rem}.planner th,.planner td{border-right:1px solid #e0e8e3;border-bottom:1px solid #e0e8e3;text-align:left;vertical-align:top;padding:7px}.planner thead th{position:sticky;top:0;background:#edf3ef;z-index:2;padding:12px 9px;color:#38554c}.planner th:first-child{width:185px;position:sticky;left:0;background:#fff;z-index:1;padding:12px;overflow-wrap:anywhere}.planner thead th:first-child{z-index:3;background:#edf3ef}.planner th span{display:block;font-size:.72rem;color:#67776f;font-weight:400;margin-top:3px}.planner th.is-today{background:#cfe9dc;color:#124b37}.planner td.weekend{background:#f7f9f7}.planner tr:hover>th,.planner tr:hover>td{background:#f0f7f3}.shift-chip{display:block;background:#e2f1e9;color:#214c38;border-left:3px solid #42996f;border-radius:5px;padding:6px 7px;text-decoration:none;margin-bottom:5px;overflow-wrap:anywhere}.shift-chip:hover{background:#cce8d9}.shift-chip strong{font-size:.78rem;white-space:nowrap}.shift-chip span{display:block;font-size:.72rem}.chip-note{white-space:pre-line;overflow-wrap:anywhere;color:#567262;margin-top:3px;line-height:1.35}.add-cell{display:block;text-align:center;border:1px dashed #d2dfd7;border-radius:4px;text-decoration:none;color:#6c897a;line-height:24px}.add-cell:hover{background:#dceee3;border-color:#6e9d83;color:#174d30}.planner-tools{display:grid;grid-template-columns:2fr 1fr;gap:20px;margin-top:20px;align-items:start}.planner-tools summary{font-size:.95rem;color:#214f3e;font-weight:600}.planner-tools details>p{margin-top:15px}.planner-tools fieldset{border:1px solid #dce5e1;border-radius:7px;padding:14px;margin:15px 0}.planner-tools legend{font-size:.85rem;font-weight:600}.student-checks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.student-checks .check,.day-checks .check{margin:0;font-size:.82rem}.day-checks{display:flex;gap:15px;flex-wrap:wrap}.selection-buttons{display:flex;gap:8px;margin-bottom:14px}.selection-buttons button{font-size:.75rem;padding:5px 10px}.datetime-fields{display:grid;grid-template-columns:1.2fr 1fr;gap:14px}.shift-editor{max-width:520px;margin:20px 0}.editor-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.shift-editor details{margin-top:20px}.shift-editor h2{margin-bottom:20px}dialog{border:0;border-radius:14px;padding:0;width:min(520px,calc(100vw - 28px));max-height:90vh;box-shadow:0 18px 80px #153b3b40}dialog::backdrop{background:#142d2db3}dialog .shift-editor{border:0;margin:0;width:100%}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}[hidden]{display:none!important}.student{padding:12px 0;display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:baseline}.student p,.student h3{margin:0}.student details[open]{grid-column:1/-1}.student details[open] form{max-width:460px}@media(max-width:900px){.planner-tools{grid-template-columns:1fr}.student-checks{grid-template-columns:repeat(2,minmax(0,1fr))}.search-label{margin-left:0}.planner-toolbar .weeknav{gap:10px}}@media(max-width:480px){.datetime-fields{grid-template-columns:1fr 1fr}.student-checks{grid-template-columns:1fr}.planner-meta{gap:8px}.student{grid-template-columns:1fr auto}.student>p{grid-column:1}.search-label{width:100%}.search-label input{flex:1;width:100px}}
/* Compact rows keep more students visible at once. */
.planner td{position:relative;padding:5px}.planner tbody th{padding:8px 12px}.planner .shift-chip{padding:4px 5px;margin:0 0 3px}.planner .shift-chip:last-of-type{margin-bottom:0}.planner td>.add-cell{position:static;width:100%;line-height:24px;margin-top:6px;clear:both}.planner .shift-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner td>.add-cell:only-child{line-height:34px}
.shift-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 20px}.shift-presets button{display:flex;flex-direction:column;padding:10px 5px;gap:4px;min-width:0}.shift-presets strong{font-size:.82rem}.shift-presets span{font-size:.68rem;font-weight:400}.shift-presets button[aria-pressed="true"]{background:#d8eee2;border-color:#327a59;color:#194b32}@media(max-width:420px){.shift-presets{gap:5px}.shift-presets span{font-size:.61rem}}
/* Student calendar: month on larger screens, existing weekly list on mobile. */
.student-month{display:none}.student-week{display:block}@media(min-width:1000px){.student-month{display:block}.student-week{display:none}.workspace:has(.student-month){max-width:1440px;padding-top:28px}}.month-title{font-size:1.65rem;margin-bottom:8px}.student-month .toolbar{margin-bottom:20px}.student-month .toolbar p:last-child{margin:0}.month-calendar{width:100%;table-layout:fixed;border-spacing:0;border-collapse:separate;border:1px solid #d2dfd7;border-radius:12px;overflow:hidden;background:white}.month-calendar th{padding:14px 10px;background:#eaf2ed;color:#35594a;text-align:left;font-size:.83rem}.month-calendar td{height:128px;padding:8px;vertical-align:top;border-top:1px solid #e0e8e3;border-right:1px solid #e0e8e3}.month-calendar td:last-child{border-right:0}.calendar-day{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;font-size:.85rem;margin-bottom:7px;color:#345245}.month-calendar .calendar-weekend{background:#f7faf8}.month-calendar .outside-month{background:#edf1ee}.outside-month .calendar-day{color:#73837a}.calendar-today>.calendar-day{border-radius:50%;background:#176b5b;color:white;font-weight:700}.calendar-shift{margin:0 0 7px;border-radius:6px;background:var(--schedule-day-bg);border-left:3px solid var(--schedule-day-edge);font-size:.78rem;overflow-wrap:anywhere}.calendar-shift-heading{padding:7px;color:var(--schedule-day-text);list-style:none}.calendar-shift-heading strong,.calendar-shift-heading span{display:block}.calendar-shift-heading strong{font-size:.77rem;margin-bottom:2px}.calendar-shift-heading span{font-size:.76rem}.calendar-shift .calendar-location{font-size:.71rem;margin-top:3px}.calendar-shift.evening-shift,.shift-chip.evening-shift{background:var(--schedule-evening-bg);border-color:var(--schedule-evening-edge)}.evening-shift .calendar-shift-heading,.shift-chip.evening-shift{color:var(--schedule-evening-text)}.calendar-shift.night-shift,.shift-chip.night-shift{background:var(--schedule-night-bg);border-color:var(--schedule-night-edge)}.night-shift .calendar-shift-heading,.shift-chip.night-shift{color:var(--schedule-night-text)}.calendar-shift.custom-shift,.shift-chip.custom-shift{background:var(--schedule-custom-bg);border-color:var(--schedule-custom-edge)}.custom-shift .calendar-shift-heading,.shift-chip.custom-shift{color:var(--schedule-custom-text)}.calendar-detail{padding:0 8px 8px;font-size:.74rem}.calendar-detail p{margin:7px 0 0}.calendar-hint{margin:14px 0}.month-empty{background:#e8f1eb;color:#375844}
.shift-values{border:0;padding:0;margin:0;min-width:0}.shift-values:disabled input,.shift-values:disabled select,.shift-values:disabled textarea{color:#29463a;background:#f3f6f4;opacity:1}#shift-followup{border-top:1px solid #dce5e1;margin-top:22px;padding-top:20px}#shift-followup h3{margin-top:20px}.shift-comment{border-left:3px solid #bdcfc5;padding:8px 12px;background:#f4f7f5;margin:10px 0;overflow-wrap:anywhere}.shift-comment p{margin:0 0 5px;white-space:pre-wrap}.shift-chip.is-sick,.calendar-shift.is-sick{background:#fce8e8;border-color:#bc5353}.sick-badge{display:inline-block!important;color:#942e35;font-weight:700;font-size:.75rem!important}.shift.is-sick{border-left:3px solid #bc5353;padding-left:12px}.shift-editor:has(.shift-values:disabled) .shift-presets{display:none}
.account-table-scroll{overflow-x:auto}.account-table{width:100%;border-collapse:collapse;font-size:.9rem}.account-table th{text-align:left;font-size:.8rem;color:#5e7171;padding:10px;border-bottom:1px solid #dce5e1}.account-table td{padding:13px 10px;border-bottom:1px solid #e5ece8;vertical-align:top;overflow-wrap:anywhere}.account-table th:first-child{width:40%}.account-table td:last-child{min-width:120px}.account-table details[open]{min-width:190px}.account-table details form{max-width:300px}#create-account-form>select{margin:-8px 0 17px}#create-account-form label>select{display:block;margin:6px 0 0}.student-details-editor>summary{color:#355752}#create-account-form [aria-describedby="brugernavn-help"]{margin-bottom:0}
.planner .weekly-hours{color:#285a43;font-weight:650;font-size:.73rem}.student-profile-link{font-weight:700;text-decoration:none}.student-profile-link:hover{text-decoration:underline}.profile-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.hour-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.hour-card{padding:18px}.hour-card span{display:block;font-size:.8rem;color:#526f61;min-height:40px}.hour-card strong{display:block;font-size:1.4rem;margin-top:10px}.sick-hours{background:#fff0f0;border-color:#ecd0d0}.account-explanation{margin:20px 0}.account-explanation summary{color:#33684c}.account-explanation p{max-width:900px;margin:12px 0;font-size:.88rem}.profile-weeks,.profile-shifts{margin-top:24px}.hours-table{min-width:700px}.hours-table th:first-child{width:auto}.hours-table th span{display:block}.hours-table td{white-space:nowrap}.profile-shift{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;border-top:1px solid #e1e9e4;padding:20px 0}.profile-shift>div{min-width:0;overflow-wrap:anywhere;flex:1}.profile-shift.is-sick{border-left:3px solid #bd5353;padding-left:14px}.profile-shift .button{white-space:nowrap}.shift-filter{display:flex;gap:10px;align-items:center}.shift-filter label,.shift-filter select{margin:0}.shift-filter select{width:auto;min-width:130px}.profile-pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:20px;font-size:.9rem}.profile-pagination span{flex:0 0 auto}@media(max-width:1050px){.hour-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:600px){.hour-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.hour-card{padding:14px}.hour-card strong{font-size:1.15rem}.profile-heading{align-items:flex-start;flex-direction:column}.profile-shift{flex-direction:column;gap:8px}.shift-filter{flex-wrap:wrap}.profile-pagination{flex-wrap:wrap}}
.study-label { color: var(--schedule-study-text); }
.vacation-label { color: var(--schedule-vacation-text); }
.shift-chip .study-label{color:inherit}
.calendar-shift.study-shift,.shift-chip.study-shift { background: var(--schedule-study-bg); border-left-color: var(--schedule-study-edge); }
label[hidden] { display: none !important; }

.planner .week-summary{width:140px;background:#f4f8f5;padding:12px 9px}.planner td.week-summary>span{display:block;margin-top:4px;font-size:.73rem}.planner td.week-summary>span:first-child{margin-top:0}

.student-tags{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 0}.student-tags .student-tag,.planner .student-tags .student-tag{display:inline-block;background:#e8eef8;color:#365477;border:1px solid #d4dfed;border-radius:4px;padding:2px 5px;font-size:.65rem;line-height:1.2;font-weight:500;margin:0;white-space:nowrap}.student-details-editor{margin-bottom:12px}.student-details-editor form{margin-top:12px}

.workspace:has(.profile-calendar){max-width:1600px}.profile-calendar{margin:24px 0}.profile-calendar .toolbar{flex-wrap:wrap;gap:12px}.profile-calendar-scroll{overflow:auto;border:1px solid #dce5e1;border-radius:10px}.profile-calendar .month-calendar{min-width:850px}.profile-calendar .month-calendar td{height:125px}.profile-calendar .shift-chip{margin-top:5px}.profile-calendar .add-cell{margin-top:8px}

body:has(#shift-dialog[open]){overflow:hidden}html{scrollbar-gutter:stable}.save-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:20;max-width:calc(100vw - 32px);padding:12px 20px;border-radius:9px;background:#214f3e;color:#fff;box-shadow:0 4px 20px #0002;font-size:.9rem;pointer-events:none}.shift-editor[aria-busy=true]{cursor:progress}.shift-editor button:disabled{opacity:.65;cursor:wait}.editor-shortcut{margin-top:-8px;margin-bottom:14px;font-size:.72rem}@media(max-width:600px){.editor-shortcut{display:none}}

.workspace:has(#shift-dialog){overflow-anchor:none}

.department-switch{display:flex;align-items:center;gap:12px;margin-bottom:20px}.department-switch label{margin:0}.department-switch select{width:auto;max-width:300px}.department-entry{padding:16px 0;border-bottom:1px solid #dce5e1}.department-entry details{margin-top:12px}.department-entry summary{color:#355752}

.editor-mode{display:flex;gap:8px;margin:12px 0 20px}.editor-mode [aria-pressed=true]{background:#176b5b;color:white}.activity-chip{display:block;background:var(--schedule-activity-bg);border-left:3px solid var(--schedule-activity-edge);color:var(--schedule-activity-text);border-radius:5px;padding:6px 8px;margin:6px 0;text-decoration:none;overflow-wrap:anywhere}.activity-chip strong,.activity-chip span{display:block;font-size:.75rem}.activity-chip .activity-kind{font-size:.65rem;text-transform:uppercase;color:var(--schedule-activity-text)}.activity-chip summary{color:inherit}.activity-chip p{margin:8px 0 0;font-size:.8rem}#activity-form fieldset{border:1px solid #dce5e1;border-radius:7px;margin:12px 0;padding:12px}#activity-form .student-checks{max-height:180px;overflow:auto;grid-template-columns:1fr}#activity-form .check{margin-bottom:7px}

.student-shift-notes{font-size:.74rem;line-height:1.4;overflow-wrap:anywhere}.student-shift-notes p{margin:5px 0 0}.student-shift-notes .comment-author{font-weight:600}.calendar-shift .student-shift-notes{padding:0 7px 7px}.shiftbody .student-shift-notes{margin-top:6px}

/* Compact editor: two columns on desktop, a reachable save action on small screens. */
#shift-dialog{width:min(860px,calc(100vw - 28px));max-height:92dvh}
#shift-dialog .shift-editor{max-width:none;padding:20px 24px}
#shift-dialog .editor-heading{align-items:center;gap:12px;margin-bottom:4px}
#shift-dialog .editor-heading h2{margin:0;font-size:1.2rem}
#shift-dialog .editor-shortcut{margin:0 0 8px;font-size:.68rem}
#shift-dialog .editor-mode{margin:8px 0 14px;background:#edf3ef;border-radius:8px;padding:4px;width:fit-content;gap:4px}
#shift-dialog .editor-mode button{padding:6px 22px;border:0}
#shift-dialog label{font-size:.8rem;margin-bottom:10px}
#shift-dialog input,#shift-dialog select,#shift-dialog textarea{padding:8px 10px;margin-top:4px}
#shift-dialog .shift-presets{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px;gap:6px}
#shift-dialog .shift-presets button{padding:7px 4px;gap:1px}
#shift-dialog .shift-values>p{display:none}
#shift-dialog .shift-values:has(option[value=study]:checked)>p{display:block;grid-column:1/-1;order:5;font-size:.72rem;margin:0 0 8px}
#shift-dialog .datetime-fields{gap:10px}
#shift-dialog .editor-save{position:sticky;bottom:-20px;z-index:2;background:white;border-top:1px solid #e0e8e3;padding:10px 0 0;margin-top:4px;display:flex;justify-content:flex-end;grid-column:1/-1}
#shift-dialog .editor-save button{min-width:150px}
#shift-dialog .activity-help{font-size:.74rem;margin-bottom:12px}
#shift-dialog #activity-form fieldset{margin:0 0 10px;padding:10px;min-width:0}
#shift-dialog #activity-form fieldset>p{font-size:.7rem;margin:4px 0 8px}
#shift-dialog #activity-form [data-activity-search]{margin:0 0 6px;font-size:.8rem}
#shift-dialog #activity-form .student-checks{max-height:220px}
#shift-dialog #activity-form .selection-buttons{gap:6px;margin-bottom:8px}
#shift-dialog #activity-form .selection-buttons button{font-size:.7rem;padding:5px 8px}
#shift-dialog #activity-form .check{font-size:.78rem;margin-bottom:6px}
#shift-dialog #shift-followup{margin-top:18px;padding-top:12px}
#shift-dialog #shift-followup h3{margin-top:10px}
@media(min-width:700px){
 #shift-dialog .shift-values{display:grid;grid-template-columns:1fr 1fr;column-gap:18px}
 #shift-dialog #activity-form{display:grid;grid-template-columns:1fr 1fr;column-gap:22px;align-items:start}
 #shift-dialog #activity-form>label:has([name=title]){grid-column:1;grid-row:1}
 #shift-dialog #activity-form>label:has([name=activity_date]){grid-column:1;grid-row:2}
 #shift-dialog #activity-form>.datetime-fields{grid-column:1;grid-row:3}
 #shift-dialog #activity-form>label:has([name=location]){grid-column:1;grid-row:4}
 #shift-dialog #activity-form>label:has([name=note]){grid-column:1;grid-row:5}
 #shift-dialog #activity-form>fieldset{grid-column:2;grid-row:1/6}
 #shift-dialog #activity-form>.editor-save{grid-row:6}
}
@media(max-width:699px){
 #shift-dialog .shift-editor{padding:16px}
 #shift-dialog .editor-save{bottom:-16px;padding:10px 0 0}
 #shift-dialog .editor-save button{width:100%}
 #shift-dialog #activity-form .student-checks{max-height:150px}
 #shift-dialog .shift-presets strong{font-size:.7rem}
}

#shift-dialog .shift-values>label:has([name=user_id]){grid-column:1/-1;width:100%;max-width:calc((100% - 18px)/2)}
#shift-dialog select[name=user_id]{display:block;width:100%;max-width:100%;box-sizing:border-box}
@media(max-width:699px){#shift-dialog .shift-values>label:has([name=user_id]){max-width:none}}
/* Planning filters, audit history and reversible deletion. */
.planner-meta>label{font-size:.8rem;margin-bottom:0}.planner-meta select{margin:4px 0 0;padding:8px;width:auto}.hours-missing{color:#9c4719}.history-entry{padding:18px 0;border-bottom:1px solid #dce5e1}.history-entry p{margin:5px 0}.history-entry form{margin-top:12px}.history-fields{display:grid;grid-template-columns:110px 1fr;gap:8px;font-size:.85rem}.history-fields dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.save-toast.has-undo{pointer-events:auto}.save-toast form{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 0}.save-toast .secondary{background:white}.alert.success form{margin-top:10px}.activity-repeat{margin-bottom:8px}
@media(min-width:700px){#shift-dialog #activity-form>.activity-repeat{grid-column:1;grid-row:4}#shift-dialog #activity-form>label:has([name=location]){grid-row:5}#shift-dialog #activity-form>label:has([name=note]){grid-row:6}#shift-dialog #activity-form>fieldset{grid-row:1/7}#shift-dialog #activity-form>.editor-save{grid-row:7}}
@media(min-width:700px){#shift-dialog #activity-form label{margin-bottom:6px}}

header{flex-wrap:wrap}header nav{flex-wrap:wrap}

/* Keep checkboxes legible beside long confirmation text. */
.check{cursor:pointer;min-height:32px}.check input[type=checkbox]{flex:0 0 20px;width:20px;height:20px;min-width:20px;margin:2px 0 0;padding:0;accent-color:#176b5b;cursor:pointer}.student-description,.student-mentor{font-size:.78rem;line-height:1.4;color:#5e7171;margin-top:3px;font-weight:400}.planner .student-description,.planner .student-mentor{font-size:.72rem}.student-description{color:#355752}

.publication-bar{display:flex;gap:18px;align-items:center;justify-content:space-between;background:#fff9e9;border:1px solid #e2d8b8;border-radius:10px;padding:14px 18px;margin:16px 0;flex-wrap:wrap}.publication-bar p{margin:4px 0 0}.publication-bar form{margin:0}

.session-warning{position:fixed;bottom:16px;left:16px;right:16px;z-index:100;background:#fff5d9;border:1px solid #b8a66f;padding:14px;border-radius:8px;box-shadow:0 2px 20px #0002}.session-warning button{margin-left:12px}.placement-reminder{margin-bottom:16px}.placement-reminder summary{color:#76511b}.narrow+.narrow{margin-top:18px}

.student-publication{border-top:1px solid #d5e2db;margin-top:9px;padding-top:8px}.student-publication form{margin:7px 0 0}.student-publication button{font-size:.72rem;padding:6px 9px}.publication-status{display:block;font-size:.72rem;color:#285a43}.publication-status.is-draft{color:#855817}.publication-bar .student-publication{border:0;margin:0;padding:0}.publication-bar .student-publication button{font-size:.85rem;padding:9px 14px}

/* Keep filter labels clear of dropdown borders and focus rings. */
.planner-meta>label:has(>select){display:flex;align-items:center;gap:10px;max-width:100%;white-space:nowrap}
.planner-meta>label>select{margin:0;max-width:100%}

/* Compact education and semester separators across the weekly plan. */
.planner .student-group-heading>th{position:static;width:auto;padding:8px 12px;background:#e3eeea;border-top:2px solid #bfd4ca;border-bottom:1px solid #cbdcd3;color:#24594b;font-size:.8rem;font-weight:700}.planner .student-group-heading:hover>th{background:#e3eeea}.planner .student-group-heading>th>div{position:sticky;left:12px;width:max-content;max-width:calc(100vw - 64px)}

/* Publication status of the displayed shift, not the whole month. */
.shift-chip .shift-publication-icon,.profile-shift .shift-publication-icon{display:inline-flex;float:right;align-items:center;justify-content:center;width:16px;height:16px;margin:0 0 3px 5px;color:#286447;cursor:help}.shift-publication-icon.draft,.shift-publication-icon.changed{color:#875b16}.shift-publication-icon svg{display:block;flex:none}

#shift-dialog .editor-save{gap:10px;flex-wrap:wrap}#shift-dialog .editor-save button{min-width:0}@media(max-width:480px){#shift-dialog .editor-save button{flex:1 1 145px;width:auto}}

/* Shared shift colors for staff and student calendars. Syg takes priority. */
.shift-chip.day-shift{background:var(--schedule-day-bg);border-left-color:var(--schedule-day-edge);color:var(--schedule-day-text)}.shift-chip.study-shift{color:var(--schedule-day-text)}.shift-chip:hover{filter:brightness(.97)}.shift-chip.is-sick,.calendar-shift.is-sick{background:#fce8e8;border-left-color:#bc5353}
.shift-chip span.sick-badge{margin-inline-start:6px;vertical-align:baseline;overflow:visible;white-space:nowrap}

/* Overnight segments share a connector and highlight. */
.overnight-label,.shift-chip .overnight-label,.calendar-shift-heading .overnight-label{font-size:.65rem;line-height:1.3;opacity:.85;margin-top:4px}.overnight-surface{position:relative}.overnight-connectors{position:absolute;left:0;top:0;pointer-events:none;z-index:1;overflow:hidden}.overnight-connected-start{border-top-right-radius:0;border-bottom-right-radius:0}.overnight-connected-end{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:transparent!important}.overnight-outline{stroke-width:1.5;opacity:0;transition:opacity .12s ease}.overnight-outline.is-highlighted{opacity:1}.overnight-surface [data-overnight-id]:focus-visible{outline:none}.overnight-surface [data-overnight-id]:hover{filter:none}

.overnight-connected-start:hover,.overnight-connected-end:hover{filter:none}
.overnight-summary .overnight-label,.overnight-duplicate .overnight-label{display:none!important}
.overnight-duplicate>*{visibility:hidden}
.month-calendar td>.calendar-day{display:grid;place-items:center;width:fit-content;min-width:28px;height:28px;font-size:.85rem;font-weight:400;line-height:1;letter-spacing:0;text-align:center;margin:0 0 7px;padding:0 4px;box-sizing:border-box;font-variant-numeric:lining-nums tabular-nums;flex-shrink:0}
.month-calendar td.calendar-today>.calendar-day{width:28px;min-width:28px;padding:0;border-radius:50%}
.shift-chip[data-vacation-key].overnight-summary>span{position:relative;z-index:2}
.overnight-summary .overnight-time,.overnight-summary .shift-publication-icon{visibility:hidden}
.overnight-icon-end>.shift-publication-icon{visibility:visible}
.overnight-shared-time{font-size:.78rem;font-weight:700}

.student-day-shift+.student-day-shift{border-top:1px solid #e5ece8;padding-top:12px;margin-top:12px}.student-day-shift+.activity-chip{margin-top:12px}.student-day-shift.is-sick{border-left:3px solid #bc5353;padding-left:10px}.student-day .activity-chip:last-child{margin-bottom:0}
.student-day-shift{border-radius:6px;padding:8px}.student-day-shift.is-finished{background:#f1f3f3;color:#647171}.student-day-shift.is-finished .muted,.student-day-shift.is-finished .student-shift-notes{color:#647171}.shift-progress-label{display:block;font-size:.7rem;font-weight:600;color:#647171;margin-bottom:4px}.student-day-shift.is-current:not(.is-sick){background:#e7f4ef;box-shadow:inset 3px 0 #176b5b}.is-current:not(.is-sick) .shift-progress-label{color:#176b5b}.overnight-explanation{font-size:.78rem;color:#5e7171;margin-top:3px}.student-day.is-today>.date{background:#176b5b;color:white;height:auto;min-height:65px;padding:6px 0}.student-day .today-caption{font-size:.65rem;font-weight:600}

/* Student month uses the same temporal states as the weekly list. */
.calendar-shift.is-finished{background:#f1f3f3;border-left-color:#a2adad;color:#647171}.calendar-shift.is-finished .calendar-shift-heading,.calendar-shift.is-finished .student-shift-notes{color:#647171}
.calendar-shift.is-current:not(.is-sick){box-shadow:inset 0 0 0 1px #176b5b}.calendar-shift.is-current:not(.is-sick) .shift-progress-label{color:#176b5b}
.calendar-shift.is-finished.is-sick{border-left-color:#bc5353}.calendar-shift.overnight-connected-end{border-left-color:transparent!important}
.calendar-shift.overnight-summary .calendar-shift-heading>strong,.calendar-shift.overnight-summary .calendar-shift-heading>.shift-progress-label,.calendar-shift.overnight-summary .calendar-shift-heading>.sick-badge{visibility:hidden}
.calendar-shift.overnight-summary.is-current,.calendar-shift.overnight-duplicate.is-current{box-shadow:none}
.calendar-shift-heading .shift-progress-label{font-size:.7rem}
.overnight-outline.is-current{opacity:1;stroke:#176b5b}
.calendar-shift.overnight-summary .student-shift-notes{opacity:0;pointer-events:none}.overnight-shared-notes{font-size:.75rem;line-height:1.5;text-align:center;overflow-wrap:anywhere}.overnight-shared-notes p{margin:0 0 4px}
.student-week-heading{margin-bottom:12px}.student-week-title{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:6px}.student-week-title h2{margin:0}.student-week-title .weeknav{flex:0 0 auto;gap:5px;order:initial}.student-week-title .button{padding:6px 9px;font-size:.75rem;min-height:32px}.student-week-heading p{margin:2px 0;font-size:.78rem}

.activity-chip.is-finished{background:#f1f3f3;border-left-color:#a2adad;color:#647171}.activity-chip.is-finished .activity-kind{color:#647171}.activity-chip .activity-progress-label{font-size:.7rem;font-weight:600;color:#647171;margin-bottom:4px}.activity-chip .activity-progress-label[hidden]{display:none}
/* Fluid mobile navigation and student schedule spacing. */
@media(max-width:760px){
  body>header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 16px}
  body>header .brand{min-width:0;max-width:100%;overflow-wrap:anywhere}
  body>header>form{grid-column:2;grid-row:1;justify-self:end}
  body>header>nav{grid-column:1/-1;grid-row:2;min-width:0;gap:0 20px;align-items:center}
  body>header>nav>a{display:flex;align-items:center;gap:5px;min-height:44px}
}
@media(max-width:999px){
  .workspace:has(.student-week){padding:20px clamp(12px,3vw,24px)}
  .workspace:has(.student-week) .intro{margin-bottom:16px;overflow-wrap:anywhere}
  .workspace:has(.student-week) .intro h1{font-size:clamp(1.4rem,4.5vw,1.8rem);line-height:1.25}
  .workspace:has(.student-week) .intro p:last-child{margin-bottom:0;font-size:.9rem}
  .workspace:has(.student-week) .email-reminder{padding:10px 12px;margin-bottom:16px;background:#e8f1ed;font-size:.85rem;overflow-wrap:anywhere}
  .student-week>.panel{padding:clamp(12px,3vw,20px)}
  .student-week-title .button{min-width:44px;min-height:44px}
  .student-week-title{gap:8px 12px}
  .student-week-title .weeknav{margin-left:auto;flex-wrap:wrap;max-width:100%}
  .student-day{gap:clamp(8px,2.5vw,16px);padding:18px 0}
}
/* Compact weekly cards retain the calendar's shift colours. */
.student-week .student-day-shift{background:var(--schedule-custom-bg);border-left:3px solid var(--schedule-custom-edge);color:var(--schedule-custom-text);padding:7px 9px}
.student-week .day-shift{background:var(--schedule-day-bg);border-left-color:var(--schedule-day-edge);color:var(--schedule-day-text)}
.student-week .evening-shift{background:var(--schedule-evening-bg);border-left-color:var(--schedule-evening-edge);color:var(--schedule-evening-text)}
.student-week .night-shift{background:var(--schedule-night-bg);border-left-color:var(--schedule-night-edge);color:var(--schedule-night-text)}
.student-week .study-shift{background:var(--schedule-study-bg);border-left-color:var(--schedule-study-edge);color:var(--schedule-study-text)}
.student-week .student-day-shift.is-current{box-shadow:inset 0 0 0 1px #176b5b}
.student-week .student-day-shift.is-finished{background:#f1f3f3;border-left-color:#a2adad;color:#647171}
.student-week .student-day-shift.is-sick{background:#fce8e8;border-left-color:#bc5353;color:#942e35;box-shadow:none}
.student-shift-title{display:flex;align-items:baseline;justify-content:space-between;gap:3px 8px;flex-wrap:wrap}
.student-shift-title h3{font-size:.88rem;margin:0}
.student-shift-title .shift-progress-label{margin:0;font-size:.65rem;font-weight:500}
.student-week .student-day-shift+.student-day-shift{margin-top:6px;border-top:0;padding-top:7px}
.student-week .student-day-shift+.activity-chip{margin-top:6px}
.student-week .student-shift-notes{margin-top:4px;font-size:.75rem}
.student-week .student-shift-notes p:last-child,.student-week .student-day-shift>p:last-child{margin-bottom:0}
.student-week .overnight-explanation{font-size:.72rem;margin-top:2px}
@media(max-width:999px){
  .student-week>.panel{border-radius:10px}
  .student-week .student-day{padding:12px 0;gap:10px;align-items:flex-start}
  .student-week .student-day:last-child{padding-bottom:0}
  .student-week .date{width:40px;min-width:40px;height:48px;border-radius:6px;background:transparent}
  .student-week .date strong{font-size:1.1rem;line-height:1.2}
  .student-week .date span{font-size:.7rem}
  .student-week .student-day.is-today>.date{min-height:54px;background:#176b5b}
  .student-week .student-day .today-caption{font-size:.6rem}
  .student-week .shiftbody>p{font-size:.75rem;margin:7px 0}
  .student-week-heading{margin-bottom:8px}
  .student-week-title h2{font-size:1.05rem}
  .student-week .activity-chip{padding:6px 9px;margin:6px 0;border-radius:5px}
  .student-week .activity-chip .activity-progress-label{float:right;margin:0 0 0 8px;font-size:.65rem;font-weight:500}
  .workspace:has(.student-week){padding-top:16px}
  .workspace:has(.student-week) .intro .eyebrow{display:none}
  .workspace:has(.student-week) .intro h1{font-size:1.3rem;margin-bottom:6px}
}
.department-features{margin-bottom:20px}.department-features>summary{color:#176b5b}.department-features>p{margin-top:12px}.feature-setting{border-top:1px solid #e0e8e3;padding-top:14px;margin-top:14px}.feature-toggle{display:flex;align-items:center;gap:12px;min-height:44px;margin-bottom:6px;cursor:pointer}.feature-toggle input{width:22px;height:22px;flex:0 0 22px;margin:0;accent-color:#176b5b}.feature-toggle:has(input:disabled){color:#647171;cursor:default}
/* A mobile overnight shift continues vertically into the following date. */
.student-week>.panel{position:relative}
.mobile-night-connectors{position:absolute;top:0;left:0;pointer-events:none;overflow:visible}
.student-week [data-mobile-night]{position:relative;z-index:1}
.student-night-continuation{background:var(--schedule-custom-bg);border-left:3px solid var(--schedule-custom-edge);color:var(--schedule-custom-text);border-radius:6px;padding:7px 9px;font-size:.72rem;margin-bottom:6px}
.student-night-continuation.night-shift{background:var(--schedule-night-bg);border-left-color:var(--schedule-night-edge);color:var(--schedule-night-text)}
.student-night-continuation.is-finished{background:#f1f3f3;border-left-color:#a2adad;color:#647171}
.student-night-continuation.is-sick{background:#fce8e8;border-left-color:#bc5353;color:#942e35}
.student-night-continuation:last-child{margin-bottom:0}
.student-week .mobile-night-open-bottom{border-bottom-left-radius:0;border-bottom-right-radius:0}
.student-week .mobile-night-open-top{border-top-left-radius:0;border-top-right-radius:0}
.student-week .mobile-night-open-bottom::after{content:"";position:absolute;top:100%;left:calc(-1 * var(--mobile-night-edge,3px));right:0;height:var(--mobile-night-gap,0px);box-sizing:border-box;background:inherit;border-left:inherit;pointer-events:none}
/* Vikora brand assets: retain compact mobile navigation. */
.brand-logo{display:block;width:150px;max-width:100%;height:auto}
header .brand-logo{margin:0 0 0 -4px}
.login .brand{display:flex;justify-content:center;margin-bottom:24px;line-height:1}
.login .brand-logo{width:176px;margin:0}
@media(max-width:760px){header .brand-logo{width:128px}}
.form-feedback{pointer-events:auto;max-height:60vh;overflow:auto;display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px}.form-feedback>div{min-width:0;overflow-wrap:anywhere}.form-feedback code{user-select:all;font-size:1rem}.form-feedback .secondary{flex:none}.form-feedback form{margin:8px 0 0}.form-feedback .small{display:block}
/* Shared action row follows the comments, without nesting forms. */
#shift-dialog .editor-actions{align-items:flex-start;justify-content:flex-end;gap:8px}
#shift-dialog .shift-actions{justify-content:flex-start}
.shift-actions>button[form="single-shift-form"]:not([name]){margin-left:auto}
@media(max-width:480px){.shift-actions>button[form="single-shift-form"]:not([name]){margin-left:0}}
#shift-dialog .editor-actions>form,#shift-dialog .editor-actions>details{margin:0}
#shift-dialog .editor-actions>form button,#shift-dialog .editor-actions>button,#shift-dialog .editor-actions>details>summary{min-height:42px;font-size:.8rem;padding:9px 12px}
#shift-dialog .editor-actions>details>summary{list-style:none}
#shift-dialog .editor-actions>details>summary::-webkit-details-marker{display:none}
#shift-dialog .editor-actions>details[open]{display:contents}
#shift-dialog .editor-actions>details[open]::details-content{display:contents}
#shift-dialog .editor-actions>details[open]>form{flex:1 0 100%;order:1;margin:4px 0 0;padding:14px;border:1px solid #ecd0d0;border-radius:8px;background:#fff6f6}
#shift-dialog .editor-actions>details[open]>form .check{align-items:center;margin:0 0 12px;gap:10px}
#shift-dialog .editor-actions>details[open]>form .check input{width:20px;height:20px;flex:0 0 20px;margin:0}
@media(max-width:480px){#shift-dialog .editor-actions>form,#shift-dialog .editor-actions>details,#shift-dialog .editor-actions>button{flex:1 1 calc(50% - 8px)}#shift-dialog .editor-actions>form>button,#shift-dialog .editor-actions>details>summary{width:100%}}
@media(max-width:480px){#shift-dialog .editor-actions>details[open]>summary{flex:1 1 calc(50% - 8px);width:auto}}
/* Compact shift dialog fits a normal desktop browser viewport. */
#shift-dialog #shift-followup{margin-top:10px;padding-top:10px}
.followup-heading{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-bottom:10px;font-size:.72rem}
#sick-status{font-weight:600;white-space:nowrap;background:#edf3ef;padding:3px 8px;border-radius:5px}
#shift-dialog #comment-form>button{padding:7px 12px;font-size:.8rem}
#shift-dialog .shift-comment{margin:6px 0;padding:6px 10px;font-size:.8rem}
#shift-dialog .shift-comment p{margin-bottom:3px}
#shift-dialog #shift-comment-list:not(:empty){margin-bottom:10px}
@media(min-width:700px){
 #shift-dialog .shift-editor{padding:16px 22px}
 #shift-dialog .editor-heading h2{font-size:1.1rem}
 #shift-dialog .editor-heading [data-close-editor]{padding:7px 12px}
 #shift-dialog .editor-shortcut{margin-bottom:4px}
 #shift-dialog .editor-mode{margin:4px 0 10px}
 #shift-dialog .shift-presets{margin-bottom:10px}
 #shift-dialog label{margin-bottom:8px}
 #shift-dialog input,#shift-dialog select,#shift-dialog textarea{padding:7px 9px}
 #shift-dialog .editor-actions{bottom:-16px;padding-top:8px;margin-top:10px}
 #shift-dialog #comment-form{display:flex;align-items:flex-end;gap:10px}
 #shift-dialog #comment-form>label{flex:1;min-width:0;margin:0}
 #shift-dialog #comment-form>button{flex:none;min-height:38px;margin-bottom:4px}
}
/* Keep navigation at the schedule width on every page. */
html{scrollbar-gutter:stable}
body{--page-width:1600px;--page-gutter:24px}
body>header{padding-inline:max(var(--page-gutter),calc((100% - var(--page-width))/2 + var(--page-gutter)))}
@media(max-width:760px){body{--page-gutter:16px}}

.login .remember-login{gap:10px;min-height:44px;margin-bottom:0}.login .remember-login input{width:20px;height:20px;flex:0 0 20px;margin:0}.login .remember-login+p{margin-top:2px}
/* A calm, compact entry point, with the same colors as the schedule. */
body:has(.login-card){min-height:100svh;background:#f3f6f5}
.login.login-card{width:calc(100% - 32px);max-width:432px;margin:clamp(24px,7vh,72px) auto 24px;padding:32px;border-radius:22px;border-color:#dce5e1}
.login-card h1{font-size:clamp(1.5rem,5vw,1.85rem);line-height:1.2;margin-bottom:8px}
.login-card .login-intro{font-size:.9rem;margin-bottom:26px}
.login-card form>label{font-size:.82rem;margin-bottom:16px}
.login-card input:not([type=hidden]):not([type=checkbox]){min-height:46px;border-radius:9px;background:#fff;font-size:1rem;padding:10px 12px;transition:border-color .15s,background .15s}
.login-card input:focus{background:#fff}
.login-card form>.remember-login{align-items:center;gap:12px;padding:12px 0;margin:4px 0 20px;cursor:pointer}
.login-card .remember-login input{accent-color:#176b5b}
.login-card .remember-login span{font-weight:600;line-height:1.45}
.login-card .remember-login small{display:block;color:#5e7171;font-size:.73rem;font-weight:400;margin-top:3px}
.login-card .login-submit{position:relative;min-height:48px;border-radius:10px;font-size:.95rem}
.login-card .login-submit span{position:absolute;right:18px;font-size:1.2rem;font-weight:400}
.login-card .login-recovery{text-align:center;margin:12px 0 0;font-size:.82rem}
.login-card .login-recovery a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none}
.login-card .login-recovery a:hover{text-decoration:underline}
.login-card .login-help{border-top:1px solid #e3ebe7;margin:18px 0 0;padding-top:18px;font-size:.78rem;color:#5e7171;line-height:1.6}
.login-card .login-help strong{display:block;color:#355752;font-weight:600;margin-bottom:2px}
.delete-confirmation{width:min(420px,calc(100vw - 32px));padding:24px;border:1px solid #dce5e1;border-radius:16px}
.delete-confirmation h2{margin:0 0 12px;font-size:1.15rem}
.delete-confirmation p{margin:0;color:#5e7171;font-size:.9rem;line-height:1.6}
.delete-confirmation-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}
.delete-confirmation-actions button{min-height:44px}
.has-quick-shifts{padding-bottom:80px!important}
.quick-shifts{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);width:min(680px,calc(100% - 24px));z-index:5;padding:12px 16px;background:#fff;border:1px solid #cfdcd6;border-radius:14px;box-shadow:0 8px 28px #163e3020}
body:has(#shift-dialog[open]) .quick-shifts{display:none}
.quick-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:12px;font-size:.85rem}
.quick-heading small{font-weight:400;color:#5e7171;margin-left:8px}
.quick-heading button{font-size:.75rem;padding:4px 10px}
.quick-presets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.shift-chip.off-shift,.calendar-shift.off-shift,.student-day-shift.off-shift,.quick-preset.off-shift,.month-key .key-off{background:var(--schedule-off-bg);border-left-color:var(--schedule-off-edge);color:var(--schedule-off-text)}
.shift-chip.zero-shift,.calendar-shift.zero-shift,.student-day-shift.zero-shift,.quick-preset.zero-shift,.month-key .key-zero{background:var(--schedule-zero-bg);border-left-color:var(--schedule-zero-edge);color:var(--schedule-zero-text)}
.shift-chip.vacation-shift,.calendar-shift.vacation-shift,.student-day-shift.vacation-shift,.quick-preset.vacation-shift,.month-key .key-vacation{background:var(--schedule-vacation-bg);border-left-color:var(--schedule-vacation-edge);color:var(--schedule-vacation-text)}
.quick-preset{--quick-background:var(--schedule-day-bg);display:flex;flex-direction:column;gap:2px;padding:8px 4px;border-left:3px solid var(--schedule-day-edge);background:var(--quick-background);color:var(--schedule-day-text);cursor:grab;font-size:.78rem}
.quick-preset span{font-size:.7rem;font-weight:400}
.quick-preset.evening-shift{--quick-background:var(--schedule-evening-bg);border-color:var(--schedule-evening-edge);color:var(--schedule-evening-text)}
.quick-preset.night-shift{--quick-background:var(--schedule-night-bg);border-color:var(--schedule-night-edge);color:var(--schedule-night-text)}
.quick-preset.study-shift{--quick-background:var(--schedule-study-bg);border-color:var(--schedule-study-edge);color:var(--schedule-study-text)}
.quick-preset:hover{background:var(--quick-background);filter:brightness(.97)}
.quick-preset[aria-pressed=true]{outline:2px solid #176b5b;outline-offset:1px}
.quick-shifts p{font-size:.72rem;margin:8px 0 0;color:#5e7171}
.quick-shifts .alert.error{color:#84282c;margin:0 0 10px;padding:10px;font-size:.8rem}
.quick-shifts-active:not(.is-shift-dragging) td:has([data-new-shift]):hover,.has-quick-shifts td.quick-drop-target{box-shadow:inset 0 0 0 2px #78aa98;cursor:crosshair}
.quick-shifts[aria-busy=true]{cursor:progress;opacity:.8}
.quick-heading-actions{display:flex;gap:8px;align-items:center}
.month-overview-week{margin-top:32px}
.planner.planner-month-table{width:100%;min-width:900px;table-layout:fixed;font-size:.65rem}
.rolling-calendar-hint { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; margin:10px 0; }
:is([data-rolling-month], .rolling-sticky-header) .planner.planner-month-table .month-week-heading .is-summary-month { background:#176b5b; color:#fff; }
.rolling-sticky-header { position:fixed; z-index:20; box-sizing:border-box; overflow-x:auto; overflow-y:hidden; scrollbar-width:none; border:1px solid #cfdcd6; background:white; box-shadow:0 3px 9px #183f3520; overscroll-behavior-x:contain; }
.rolling-sticky-header::-webkit-scrollbar { display:none; }
@media print { .rolling-sticky-header { display:none!important; } }
.rolling-calendar-hint [role=status]:not(:empty) { color:#176b5b; font-weight:600; }
:is([data-rolling-month], .rolling-sticky-header) { overflow-anchor:none; overscroll-behavior-x:contain; }
:is([data-rolling-month], .rolling-sticky-header) thead { cursor:grab; user-select:none; }
:is([data-rolling-month], .rolling-sticky-header).is-panning, :is([data-rolling-month], .rolling-sticky-header).is-panning thead { cursor:grabbing; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table .rolling-month-heading th { height:30px; padding:5px 8px; background:#dcece5; color:#214e41; font-size:.75rem; }
:is([data-rolling-month], .rolling-sticky-header) .rolling-month-heading :is([data-calendar-month], .sticky-month) { text-align:left; border-left:2px solid #93b5a7; }
:is([data-rolling-month], .rolling-sticky-header) .rolling-month-heading :is([data-calendar-month], .sticky-month) > span { display:inline; position:sticky; left:153px; font-size:.75rem; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table .month-week-heading th { top:30px; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table .month-week-heading th:first-child { left:auto; width:auto; text-align:center; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table .month-date-heading th { top:55px; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table .week-summary { position:sticky; right:0; z-index:3; background:#f1f6f3; border-left:1px solid #b9d0c4; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table thead .week-summary { z-index:5; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table thead .rolling-month-heading > th:first-child { z-index:5; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table [data-student-row] > th { z-index:4; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table .month-date-heading [data-calendar-date$="-01"] { border-left:2px solid #93b5a7; }
:is([data-rolling-month], .rolling-sticky-header) .rolling-month-heading :is([data-calendar-month], .sticky-month).is-summary-month { background:#176b5b; color:white; }
:is([data-rolling-month], .rolling-sticky-header) .rolling-month-heading .is-summary-month > span { color:inherit; }
:is([data-rolling-month], .rolling-sticky-header) .planner-month-table thead .week-summary { background:#e3f1eb; border-top:3px solid #176b5b; }
:is([data-rolling-month], .rolling-sticky-header) .week-summary .month-summary-label { font-size:.58rem; text-transform:uppercase; letter-spacing:.05em; margin:0 0 4px; }
:is([data-rolling-month], .rolling-sticky-header) .week-summary :is([data-summary-month], .sticky-summary-month) { display:block; color:#125749; font-size:.75rem; line-height:1.35; }
:is([data-rolling-month], .rolling-sticky-header) .week-summary small { display:block; margin-top:4px; color:#526e63; font-size:.58rem; font-weight:400; }
.planner-month-table th,.planner-month-table td{width:auto;min-width:0;max-width:none;padding:2px;text-align:center}
.planner.planner-month-table th:first-child{width:145px;min-width:0;max-width:none;padding:7px 8px;text-align:left}
.planner.planner-month-table .week-summary{width:108px;min-width:0;max-width:none;text-align:left;padding:6px}
.planner-month-table thead th{padding:7px 1px;font-size:.6rem}
.planner-month-table .month-week-heading .month-week-number{height:25px;padding:3px 1px;background:#e0ece7;color:#3d6257;font-size:.63rem;font-weight:650;border-bottom:1px solid #c8dad1;text-align:center}
.planner-month-table .month-week-heading .month-week-number:nth-child(odd){background:#e9f1ed}
.planner-month-table .month-week-heading th[rowspan]{vertical-align:middle}
.planner.planner-month-table .month-date-heading th{top:25px;width:auto;position:sticky;left:auto;padding:5px 1px;text-align:center;background:#edf3ef;z-index:2}
.planner.planner-month-table .month-date-heading th.is-today{background:#cfe9dc;color:#124b37}
.planner-month-table thead th span{font-size:.7rem;color:#294c45;font-weight:650;margin-top:1px}
.planner-month-table [data-student-row]>th>span{display:none}
.planner-month-table .student-mentor{display:block;font-size:.6rem;line-height:1.35;margin-top:2px;overflow-wrap:anywhere}
.planner-month-table .student-description{font-size:.6rem;margin-top:2px}
.planner-month-table .student-profile-link{font-size:.7rem;line-height:1.3;display:block}
.planner-month-table .student-group-heading th{padding:4px 8px!important;font-size:.65rem}
.planner-month-table .month-shift-chip{position:relative;padding:5px 0;margin:1px 0 3px;min-height:25px;border-left-width:2px;border-radius:3px;overflow:hidden;line-height:15px}
.planner-month-table .month-shift-chip strong{font-size:.6rem;letter-spacing:-.02em}
.planner-month-table .month-cell-stack{display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:25px;gap:3px;padding-top:1px}
.overnight-surface .calendar-entry-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;align-items:start}
.overnight-surface .calendar-entry-stack>*{grid-column:1;min-width:0;margin-top:0;margin-bottom:0}
.planner-month-table .month-cell-stack>a{grid-column:1;margin:0;width:100%;min-width:0;min-height:25px;box-sizing:border-box}
.planner-month-table .month-shift-chip.overnight-connected-start{border-top-right-radius:0;border-bottom-right-radius:0}
.planner-month-table .month-shift-chip.overnight-connected-end{border-top-left-radius:0;border-bottom-left-radius:0}
.planner-month-table .month-shift-chip .shift-publication-icon{position:absolute;right:1px;top:1px;float:none;width:5px;height:5px;margin:0}
.planner-month-table .shift-publication-icon svg{width:5px;height:5px}
.planner-month-table .month-shift-chip .shift-publication-icon{opacity:0}
:is(.shift-chip,.profile-shift)[data-publication-state]:not([data-publication-state=published]){background-image:repeating-linear-gradient(135deg,#182f301f 0 2px,#ffffffa6 2px 4px,transparent 4px 8px)}
:is(.shift-chip,.profile-shift)[data-publication-state]:not([data-publication-state=published]):not(.overnight-summary):not(.overnight-duplicate){outline:2px dashed currentColor;outline-offset:-2px}
.overnight-outline.is-draft-band{opacity:1;stroke-dasharray:4 3;stroke-width:2}
.overnight-outline.is-draft-band.is-highlighted{stroke-width:2.5}
.month-key .key-draft{background-image:repeating-linear-gradient(135deg,#182f301f 0 2px,#ffffffa6 2px 4px,transparent 4px 8px);outline:2px dashed currentColor;outline-offset:-2px}
.planner-month-table .month-activity-chip{padding:2px 0;margin:2px 0;min-height:20px;text-align:center;font-size:.6rem;border-left-width:2px;line-height:16px}
.planner-month-table td>.add-cell{margin-top:2px;line-height:16px;font-size:.65rem;opacity:0}
.planner-month-table td>.add-cell:only-child{line-height:24px;opacity:.35;border-color:transparent}
.planner-month-table td:hover>.add-cell,.planner-month-table td>.add-cell:focus-visible{opacity:1}
.planner-month-table .week-summary>span,.planner-month-table .weekly-hours{font-size:.63rem}
.planner-month-table .month-week-controls{margin-top:5px}
.planner-month-table .student-publication{margin-top:5px;padding-top:4px}
.planner-month-table .student-publication form{margin:0;text-align:center}
.planner-month-table .student-publication button{display:inline-block;width:auto;min-height:0;padding:4px 7px;border:0;border-radius:5px;background:#176b5b;color:#fff;font-size:.65rem;font-weight:600;line-height:1.4;white-space:nowrap;text-align:center;text-decoration:none}
.planner-month-table .student-publication button:hover{text-decoration:none;background:#125749}
.planner-month-table .student-publication button:focus-visible{outline:2px solid #176b5b;outline-offset:2px}
.planner-month-table .student-publication .publication-status,.planner-month-table .student-publication .small{font-size:.65rem;line-height:1.4}
.month-key{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:.75rem;color:#526766;margin-bottom:14px}
.month-key span{display:inline-flex;gap:5px;align-items:center}
.month-key[hidden],.month-key span[hidden],.placement-legend[hidden]{display:none}
.month-key b{padding:2px 5px;border-radius:3px;background:var(--schedule-day-bg);color:var(--schedule-day-text);font-size:.65rem}
.month-key .key-evening{background:var(--schedule-evening-bg);color:var(--schedule-evening-text)}.month-key .key-night{background:var(--schedule-night-bg);color:var(--schedule-night-text)}.month-key .key-study{background:var(--schedule-study-bg);color:var(--schedule-study-text)}.month-key .key-activity{background:var(--schedule-activity-bg);color:var(--schedule-activity-text)}
.month-key .key-custom{background:var(--schedule-custom-bg);color:var(--schedule-custom-text)}.month-key .key-absence{background:#fce8e8;color:#942e35}
.month-week-controls{margin-top:12px}
.month-week-controls>summary{color:#14665d;font-size:.75rem}
.month-week-control{margin-top:12px;padding-top:10px;border-top:1px solid #dce5e1}
.overview-switch{display:flex;gap:4px;padding:4px;background:#e7efeb;border-radius:10px;width:fit-content;margin-bottom:16px}
.overview-switch .button{min-width:76px;padding:7px 14px}
.month-overview-week>.planner-toolbar{padding-top:16px;border-top:1px solid #dce5e1}
.month-overview-week>.planner-toolbar h2{display:flex;align-items:baseline;gap:12px}
.quick-shifts.is-collapsed{left:auto;right:16px;transform:none;width:auto;padding:0;border:0;border-radius:10px}
.quick-shifts.is-collapsed>.quick-heading,.quick-shifts.is-collapsed>.quick-presets,.quick-shifts.is-collapsed>[data-quick-hint]{display:none}
.quick-launcher{min-height:44px;background:#fff;color:#176b5b;border:1px solid #b7c7c3;border-radius:10px;font-size:.8rem;padding:10px 14px}
.quick-launcher:hover{background:#edf5f0}
.shift-chip.draggable-draft{cursor:grab}
.shift-chip.draggable-draft:active{cursor:grabbing}
@media(max-width:480px){.quick-shifts{padding:10px}.quick-presets{gap:5px}.quick-preset{font-size:.7rem}.quick-shifts p{font-size:.68rem}}
.quick-preset.off-shift{--quick-background:var(--schedule-off-bg)}
.quick-preset.zero-shift{--quick-background:var(--schedule-zero-bg)}
.quick-preset.vacation-shift{--quick-background:var(--schedule-vacation-bg)}
@media(min-width:700px){
 .shift-presets,#shift-dialog .shift-presets{grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
 .shift-presets button,#shift-dialog .shift-presets button{padding:8px 4px;gap:3px;justify-content:center}
 .shift-presets strong,#shift-dialog .shift-presets strong{font-size:.8rem;line-height:1.3;font-weight:700}
 .shift-presets span,#shift-dialog .shift-presets span{font-size:.72rem;line-height:1.35;font-weight:500;color:#355752;white-space:normal;text-wrap:balance}
}
@media(min-width:1200px){
 .workspace.has-quick-shifts{width:calc(100% - 168px);margin-right:168px}
 .quick-shifts:not(.is-collapsed){left:auto;right:16px;transform:none;width:144px;padding:10px;max-height:calc(100dvh - 32px);overflow-y:auto}
 .quick-heading{flex-direction:column;align-items:stretch;gap:6px;font-size:.75rem}
 .quick-heading small{display:block;margin-left:0;font-size:.65rem}
 .quick-heading-actions{gap:4px;flex-wrap:wrap}
 .quick-heading button{font-size:.6rem;padding:3px 5px}
 .quick-presets{grid-template-columns:1fr;gap:5px}
 .quick-preset{padding:5px 4px;gap:0;font-size:.72rem}
 .quick-preset span{font-size:.6rem}
 .quick-shifts p{font-size:.62rem;line-height:1.4}
}
@media(max-width:1199px){.has-quick-shifts{padding-bottom:240px!important}}
/* One full-width writing area, with existing shift text shown as history. */
#shift-dialog .shift-values>label:has([name=location]){grid-column:1/-1}
#shift-dialog .shift-values>label:has([name=user_id]){max-width:none}
[data-vacation-hint]{display:none}
.workspace:has(.profile-heading)>.intro{margin-bottom:14px}
.workspace:has(.profile-heading)>.intro h1{font-size:1.8rem}
.profile-heading{gap:12px;margin-bottom:16px;align-items:center}
.profile-heading p{margin:4px 0 0;font-size:.75rem}
.profile-heading .button{padding:7px 12px;font-size:.75rem}
.hour-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.hour-card{padding:12px 14px;border-radius:10px}
.hour-card span{font-size:.72rem;line-height:1.35;min-height:0}
.hour-card strong{font-size:1.25rem;line-height:1.3;margin-top:8px}
.hour-card small{display:block;font-size:.66rem;line-height:1.4;margin-top:4px}
.hour-card .study-hours{display:block;color:#355752;font-size:.8rem;font-weight:600;margin-top:2px}
.account-explanation{margin:12px 0;font-size:.75rem}
body>.workspace.app-workspace .hour-card{padding:12px 14px;border-radius:10px}
.profile-account-period{margin:8px 0 0;font-size:.75rem}
.planner .monthly-weekly-average{display:block;margin-top:3px;font-size:.68rem;line-height:1.4;color:#526766}
.monthly-weekly-average small{display:block;margin-top:3px;font-size:.62rem}
.profile-detail-section{margin-top:10px;border:1px solid #d6e2df;border-radius:10px;background:#fff}
.profile-detail-section>summary{padding:13px 16px;color:#285e54;font-weight:600}
.profile-list-range{margin:0;padding:0 16px 12px;font-size:.8rem}
.planning-balance{margin:12px 0}
.planning-balance>summary{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.planning-balance>summary strong{margin-left:8px}
.planning-balance>summary>span:first-child::before{content:'▸';margin-right:8px}
.planning-balance[open]>summary>span:first-child::before{content:'▾'}
.planning-period-content{padding:0 16px 16px}
.planning-period-content button{font-size:.75rem;padding:7px 10px;white-space:nowrap}
.profile-detail-section>.panel{margin:0;border:0;border-top:1px solid #e4ece8;border-radius:0 0 10px 10px}
.workspace:has(.profile-heading) .publication-bar{padding:12px 14px;gap:12px;font-size:.8rem}
.workspace:has(.profile-heading) .publication-bar p{margin:3px 0 0;font-size:.72rem}
.workspace:has(.profile-heading) .publication-bar button{padding:7px 12px;font-size:.75rem}
@media(min-width:1200px){.hour-cards{grid-template-columns:repeat(7,minmax(0,1fr))}}
@media(max-width:600px){.hour-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-heading{align-items:flex-start}.hour-card{padding:10px 12px}}
#shift-dialog .shift-values:has([name=vacation_until]:enabled){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px}
#shift-dialog .shift-values:has([name=vacation_until]:enabled) .datetime-fields:has([name=ends_at_date]){display:none}
#shift-dialog .shift-values:has([name=vacation_until]:enabled) .datetime-fields:has([name=starts_at_date]){display:contents}
#shift-dialog .shift-values:has([name=vacation_until]:enabled) [data-vacation-period]{grid-column:2;min-width:0}
#shift-dialog .shift-values:has([name=vacation_until]:enabled) input[type=date]{width:100%;min-width:0}
#shift-dialog .shift-values:has([name=vacation_until]:enabled) [data-vacation-hint]{display:block;grid-column:1/-1;margin:-2px 0 12px;font-size:.75rem;line-height:1.4}
#shift-dialog .shift-note-section details{margin:0}
#shift-dialog .shift-note-section summary{color:#14665d;font-size:.78rem;padding:6px 0}
#shift-dialog .shift-note-section details>label{margin-top:8px}
#shift-dialog .shift-note-section .shift-comment{margin:8px 0 0}
#shift-dialog .shift-note-section .small{margin:0 0 4px;font-size:.72rem}
#shift-dialog #comment-form{display:block}
#shift-dialog #comment-form>button{display:block;margin:8px 0 0 auto}
#shift-dialog #comment-form>label{margin:0}
#shift-dialog textarea[name=note],#shift-dialog textarea[name=comment]{min-height:60px;width:100%;margin-bottom:0}
@media(max-width:480px){.login.login-card{padding:24px;margin-top:24px;border-radius:18px}.login-card .brand{margin-bottom:20px}.login-card .login-intro{margin-bottom:22px}}

/* Shared muted palette across calendar cards, mobile cards, tools and keys. */
:root{--schedule-day-bg:#e1edda;--schedule-day-edge:#63844a;--schedule-day-text:#36512b;--schedule-evening-bg:#fff0d5;--schedule-evening-edge:#b58327;--schedule-evening-text:#77531a;--schedule-night-bg:#ceceea;--schedule-night-edge:#7272a9;--schedule-night-text:#363668;--schedule-study-bg:#f1dce9;--schedule-study-edge:#a36691;--schedule-study-text:#713b61;--schedule-activity-bg:#e0f1fc;--schedule-activity-edge:#4b90b9;--schedule-activity-text:#245775;--schedule-custom-bg:#e9ecef;--schedule-custom-edge:#788692;--schedule-custom-text:#43525f;--schedule-off-bg:#f3f4ed;--schedule-off-edge:#8b9573;--schedule-off-text:#535d40;--schedule-zero-bg:#eee4d9;--schedule-zero-edge:#a18b70;--schedule-zero-text:#6f5942;--schedule-vacation-bg:#b9dfd8;--schedule-vacation-edge:#458c80;--schedule-vacation-text:#245c53}
.shift-chip.study-shift,.study-shift .calendar-shift-heading{color:var(--schedule-study-text)}
.custom-date-picker input[type=date]::-webkit-calendar-picker-indicator{pointer-events:none}
.danish-date-field{display:block;position:relative;margin-top:4px;min-width:0}
.danish-date-field>input[type=date]{margin:0!important;color:transparent!important;caret-color:transparent}
.danish-date-field>input[type=date]::-webkit-datetime-edit{visibility:hidden;opacity:0}
.danish-date-field>input[type=date]::-webkit-datetime-edit-fields-wrapper{visibility:hidden}
.danish-date-field>input[type=date]::-webkit-datetime-edit-day-field:focus,.danish-date-field>input[type=date]::-webkit-datetime-edit-month-field:focus,.danish-date-field>input[type=date]::-webkit-datetime-edit-year-field:focus{color:transparent;background:transparent}
.danish-date-value{position:absolute;z-index:1;left:3px;right:36px;top:2px;bottom:2px;display:flex;align-items:center;padding-left:9px;border-radius:4px;background:#fff;pointer-events:none;color:#182f30;font-size:.85rem;font-weight:400;line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums}
.danish-date-field:has(input:disabled) .danish-date-value{color:#647171;background:#f3f6f4}
dialog.date-picker{position:fixed;inset:auto;margin:0;width:min(320px,calc(100vw - 16px));max-height:calc(100dvh - 16px);padding:12px;background:#fff;color:#182f30;border:1px solid #cfdcd6;border-radius:12px;box-shadow:0 8px 28px #163e3026;font-size:.8rem;overflow:auto}
.date-picker::backdrop{background:transparent}
.notification-stack{position:fixed;inset:16px 16px auto auto;display:flex;flex-direction:column;gap:10px;width:min(410px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow-y:auto;padding:4px;margin:0;border:0;background:transparent;z-index:10000;pointer-events:none;color:#182f30}
.notification-stack::backdrop{background:transparent;pointer-events:none}
.notification-stack .notification{--notice-accent:#176b5b;--notice-tint:#f5faf7;--notice-icon-bg:#e0f0e7;--notice-icon:'\2713';position:relative;inset:auto;transform:none;display:block;width:100%;max-width:none;max-height:none;overflow:visible;margin:0;padding:18px 38px 18px 20px;background:linear-gradient(135deg,var(--notice-tint),#fff 65%);color:#28443c;border:1px solid #dce7e1;border-left:4px solid var(--notice-accent);border-radius:14px;box-shadow:0 6px 24px #153b3b20;font-size:.8rem;line-height:1.5;pointer-events:auto;overflow-wrap:anywhere;box-sizing:border-box}
.notification-stack .notification[hidden]{display:none}
.notification-stack .notification-error{--notice-accent:#b83c49;--notice-tint:#fff7f7;--notice-icon-bg:#f8e3e6;--notice-icon:'!'}
.notification-stack .notification-warning{--notice-accent:#916418;--notice-tint:#fffaf1;--notice-icon-bg:#f7ebce;--notice-icon:'!'}
.notification-stack .notification-info{--notice-accent:#326d93;--notice-tint:#f4f8fc;--notice-icon-bg:#e1edf7;--notice-icon:'i'}
.notification-heading{display:flex;align-items:center;gap:8px;margin-bottom:6px;color:var(--notice-accent);font-size:.88rem}
.notification-heading::before{content:var(--notice-icon);display:inline-grid;place-items:center;width:24px;height:24px;flex-shrink:0;border-radius:50%;background:var(--notice-icon-bg);color:var(--notice-accent);font-size:.8rem}
.notification-timer-track{position:absolute;bottom:0;left:0;right:0;height:3px;border-radius:0 0 12px 10px;overflow:hidden;background:#e8eeeb}
.notification-timer-bar{height:100%;width:100%;background:var(--notice-accent);opacity:.65;transform-origin:left center}
.notification.is-paused .notification-timer-bar{opacity:1}
.notification-content{min-width:0}
.notification-content p{margin:4px 0;font-size:inherit}
.notification-content h2{font-size:.9rem;margin:6px 0}
.notification-content .small{display:block;font-size:.72rem;color:#64786f;line-height:1.5}
.notification-content code{font-size:1rem;font-weight:650;user-select:all}
.notification-stack .notification-close{position:absolute;right:7px;top:7px;width:26px;height:26px;padding:0;margin:0;border:0;border-radius:5px;background:transparent;color:#64766e;font-size:1.2rem;line-height:1}
.notification-stack .notification-close:hover{background:#edf3ef;color:#182f30}
.notification-stack .notification form{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin:14px 0 0}
.notification-stack .notification-content :is(button,.button){display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-size:.75rem;margin:12px 0 0;padding:8px 14px;min-height:36px;border:1px solid #bdd3c9;border-radius:8px;background:#eaf3ee;color:#205e4d;font-weight:650}
.notification-stack .notification-content form :is(button,.button){margin:0}
.notification-stack .notification-content :is(button,.button):hover{background:#dcece3;border-color:#83ae9b}
.notification-stack .notification :is(button,.button):focus-visible{outline:2px solid var(--notice-accent);outline-offset:3px}
.activation-dialog{width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 32px);padding:24px;border:1px solid #cfdcd6;border-radius:14px;background:#fff;color:#182f30}
.activation-dialog>h2{font-size:1.2rem;margin-bottom:14px}
.activation-dialog .form-feedback{position:static;inset:auto;transform:none;width:auto;max-width:none;padding:0;margin:0;background:transparent;color:inherit;box-shadow:none;font-size:.85rem;line-height:1.55}
.activation-dialog .form-feedback h2,.activation-dialog #activation-code h2{font-size:.95rem;margin-bottom:10px}
.activation-dialog [data-temporary-code]{display:block;padding:12px 14px;border:1px solid #c8ded3;border-radius:8px;background:#edf6f1;color:#15594f;font-size:1.1rem;font-weight:700;letter-spacing:.04em;overflow-wrap:anywhere;user-select:all}
.activation-dialog .small{font-size:.75rem;line-height:1.5}
.activation-dialog-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:18px}
.activation-dialog-actions button{padding:8px 12px;font-size:.8rem}
.date-picker-header{display:flex;align-items:center;gap:5px;margin-bottom:10px}
.date-picker button{min-width:0;width:auto;margin:0;border:0;background:transparent;color:#355752;padding:5px;border-radius:6px;font:inherit;cursor:pointer}
.date-picker-header>button{flex:0 0 28px;font-size:1.3rem;line-height:1}
.date-picker-header select{margin:0;padding:5px 3px;border:1px solid #dce5e1;border-radius:6px;background:#fff;color:#244f38;font:inherit;min-width:0;width:auto;flex:1}
.date-picker-header select:last-of-type{flex:0 0 72px}
.date-picker-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;text-align:center}
.date-picker-grid>span{padding:4px 0;color:#61766e;font-size:.7rem;font-weight:600}
.date-picker-grid button{height:32px;font-variant-numeric:tabular-nums}
.date-picker button:hover:not(:disabled){background:#edf4f0}
.date-picker-grid .outside{color:#87968f}
.date-picker-grid [aria-current=date]{box-shadow:inset 0 0 0 1px #176b5b}
.date-picker-grid button.selected,.date-picker-grid button.selected:hover{background:#176b5b;color:#fff}
.date-picker button:focus-visible,.date-picker select:focus-visible{outline:2px solid #176b5b;outline-offset:1px}
.date-picker button:disabled{opacity:.35;cursor:default}
.date-picker-footer{display:flex;justify-content:space-between;border-top:1px solid #e1e9e4;margin-top:10px;padding-top:8px}
[data-student-management][data-enhanced=yes]{display:block}
.student-admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.student-admin-toolbar h2{margin:0}
.student-admin-toolbar button{padding:8px 12px;font-size:.8rem}
[data-student-management] .student-admin-edit{padding:5px 10px;font-size:.75rem;margin-bottom:8px}
.account-activation{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;padding-top:8px;border-top:1px solid #e5ece8}
.account-activation-status{display:inline-flex;align-items:center;gap:5px;padding:3px 7px;border-radius:5px;background:#fff0d5;color:#77531a;font-size:.68rem;line-height:1.4;font-weight:500}
.account-activation-status::before{content:'';width:5px;height:5px;border-radius:50%;background:#b58327;flex-shrink:0}
.account-activation form{margin:0}
.account-activation-status{white-space:nowrap}
@media(min-width:1000px){
    [data-student-management][data-account-kind="students"] .account-table th{width:calc((100% - 450px)/3)}
    [data-student-management][data-account-kind="students"] .account-table th:last-child{width:450px}
    [data-student-management][data-account-kind="students"] .account-activation{flex-wrap:nowrap}
    [data-student-management][data-account-kind="students"] .account-activation>*{flex-shrink:0}
}
.account-role-badge{display:inline-block;padding:3px 8px;border-radius:5px;background:#e7efeb;color:#355752;font-size:.72rem;font-weight:500}
.student-admin-dialog .staff-role-choice{grid-column:1/-1;margin:0 0 8px}
.student-admin-dialog label:has(>input[name=also_mentor]){grid-column:1/-1}
.account-activation button.secondary{padding:5px 10px;font-size:.75rem;line-height:1.5;white-space:nowrap}
[data-student-management] .student-admin-delete{display:block;padding:2px 0;border:0;background:transparent;color:#942e35;font-size:.75rem;font-weight:400}
[data-student-management] .student-admin-delete:hover{text-decoration:underline}
.student-admin-dialog.is-delete{width:min(460px,calc(100vw - 24px))}
.student-admin-dialog.is-delete form{display:block}
.student-admin-dialog.is-delete form>p{font-size:.85rem;line-height:1.6;margin-bottom:18px}
[data-student-management] .account-table{font-size:.82rem}
[data-student-management] .account-table td{padding:10px}
.student-admin-dialog{width:min(620px,calc(100vw - 24px));padding:20px;max-height:calc(100dvh - 32px);background:#fff;color:#182f30;border:1px solid #cfdcd6;border-radius:14px}
.student-admin-dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.student-admin-dialog-heading h2{margin:0;font-size:1.15rem}
.student-admin-dialog-heading button{padding:6px 10px;font-size:.8rem}
.student-admin-dialog form{margin:0;max-width:none;font-size:.82rem}
.student-admin-dialog label{margin-bottom:10px}
.student-admin-dialog input,.student-admin-dialog select{padding:8px 10px;margin-top:4px}
.student-admin-dialog .small{font-size:.73rem;line-height:1.45;margin-bottom:12px}
.student-admin-dialog form>button{display:block;margin:14px 0 0 auto;padding:8px 14px}
@media(min-width:600px){.student-admin-dialog form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:14px}.student-admin-dialog form>p,.student-admin-dialog form>.datetime-fields,.student-admin-dialog form>button,.student-admin-dialog form>label:has([name=mentor_id]){grid-column:1/-1}.student-admin-dialog form>button{justify-self:end}}
@media(max-width:480px){.student-admin-dialog{padding:16px}.student-admin-toolbar{align-items:flex-start;flex-wrap:wrap}}
.shift-presets [data-shift-preset][data-type=duty][data-start="07:00"]{background:var(--schedule-day-bg);border-color:var(--schedule-day-edge);color:var(--schedule-day-text)}
.shift-presets [data-shift-preset][data-type=duty][data-start="15:00"]{background:var(--schedule-evening-bg);border-color:var(--schedule-evening-edge);color:var(--schedule-evening-text)}
.shift-presets [data-shift-preset][data-type=duty][data-start="23:00"]{background:var(--schedule-night-bg);border-color:var(--schedule-night-edge);color:var(--schedule-night-text)}
.shift-presets [data-shift-preset][data-type=study]{background:var(--schedule-study-bg);border-color:var(--schedule-study-edge);color:var(--schedule-study-text)}
.shift-presets [data-shift-preset][data-type=off]{background:var(--schedule-off-bg);border-color:var(--schedule-off-edge);color:var(--schedule-off-text)}
.shift-presets [data-shift-preset][data-type=zero]{background:var(--schedule-zero-bg);border-color:var(--schedule-zero-edge);color:var(--schedule-zero-text)}
.shift-presets [data-shift-preset][data-type=vacation]{background:var(--schedule-vacation-bg);border-color:var(--schedule-vacation-edge);color:var(--schedule-vacation-text)}
.shift-presets [data-shift-preset][aria-pressed=true]{outline:2px solid currentColor;outline-offset:1px}
:is(.student-week .student-day-shift,.calendar-shift,.activity-chip).is-finished:not(.is-sick){background:#f1f3f3;border-left-color:#a2adad;color:#647171}
:is(.shift-chip,.calendar-shift,.student-week .student-day-shift).is-sick{background:#fce8e8;border-left-color:#bc5353;color:#942e35}

/* Readable scheduling history */
.history-heading,.history-entry-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.history-heading h2{margin:0}.history-panel .history-filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:14px 0 18px;border-bottom:1px solid #dce5e1}.history-filters label{margin:0;font-size:.78rem;min-width:180px}.history-filters select{margin:5px 0 0;padding:8px 10px}.history-filters button{padding:8px 12px;font-size:.78rem}.history-filters a{font-size:.78rem;padding-bottom:8px}.history-panel .history-entry{padding:16px 0;font-size:.85rem}.history-entry-heading>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}.history-entry-heading time{font-size:.73rem;color:#5e7171;white-space:nowrap}.history-event{background:#e7f0ed;color:#355e56;border-radius:5px;padding:3px 7px;font-size:.73rem}.history-period{font-weight:600}.history-panel .history-fields{background:#f5f8f7;border-radius:8px;padding:12px;margin:10px 0 0;grid-template-columns:100px minmax(0,1fr);font-size:.78rem;gap:10px}.history-before,.history-after{display:block}.history-before{color:#64716e}.history-panel .history-entry p{overflow-wrap:anywhere}.history-panel .history-entry button{font-size:.75rem;padding:6px 10px}@media(max-width:600px){.history-filters label{flex:1;min-width:140px}.history-panel .history-fields{grid-template-columns:70px minmax(0,1fr)}.history-entry-heading{align-items:flex-start}}

/* Personal account settings */
.account-settings{display:grid;gap:18px}.account-settings .panel{padding:22px}.account-overview{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}.account-identity{display:flex;align-items:center;gap:14px;min-width:0}.account-identity>div{min-width:0}.account-identity h2{margin:0 0 5px;font-size:1.12rem;overflow-wrap:anywhere}.account-avatar{display:grid;place-items:center;width:48px;height:48px;flex:0 0 48px;border-radius:14px;background:#e0eeea;color:#176b5b;font-weight:700;font-size:1.2rem}.account-facts{display:flex;gap:36px;margin:0;flex-wrap:wrap}.account-facts dt{font-size:.72rem;color:#5e7171}.account-facts dd{margin:3px 0 0;font-size:.85rem;font-weight:600;overflow-wrap:anywhere}.account-security-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:stretch}.account-card-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}.account-card-heading h2{font-size:1rem;margin:0}.account-security-card{display:flex;flex-direction:column}.account-security-card>form{display:flex;flex-direction:column;flex:1}.account-settings .small{font-size:.78rem}.account-settings label{font-size:.8rem;margin-bottom:14px}.account-settings input:not([type=checkbox]){padding:9px 11px}.account-settings button{font-size:.78rem;padding:8px 12px}.account-form-actions{margin-top:auto;padding-top:4px}.account-current-email{margin:0 0 16px;padding:10px 12px;background:#f3f7f5;border-radius:8px}.account-current-email span,.account-current-email strong{display:block}.account-current-email strong{font-size:.83rem;font-weight:500;overflow-wrap:anywhere;margin-top:2px}.account-email-status{font-size:.68rem;padding:3px 7px;border-radius:5px;white-space:nowrap}.account-email-status.is-verified{background:#e7efeb;color:#355752}.account-email-status.is-pending{background:#fff0d5;color:#77531a}.account-settings .department-features{max-width:none;margin:0}.account-settings .department-features h2{font-size:1rem;margin-bottom:8px}.account-settings .feature-setting{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:18px;margin-top:12px;padding-top:12px}.account-settings .feature-toggle{min-height:30px;margin:0 0 4px}.account-settings .feature-toggle input{width:18px;height:18px;flex-basis:18px}.account-settings .feature-setting>p{grid-column:1;margin:0}.account-settings .feature-setting>button{grid-column:2;grid-row:1 / span 2;align-self:center}.account-settings .feature-setting>p:last-child:not(:first-of-type){margin-top:8px}@media(max-width:700px){.account-security-grid{grid-template-columns:1fr}.account-settings .panel{padding:18px}.account-facts{gap:18px}.account-settings .feature-setting{grid-template-columns:1fr}.account-settings .feature-setting>button{grid-column:1;grid-row:auto;justify-self:start;margin-top:12px}}

/* Consistent student and user administration columns */
[data-student-management] .account-table{table-layout:fixed;min-width:620px}[data-student-management] .account-table th{width:25%}[data-student-management] .account-table th:last-child,[data-student-management] .account-table td:last-child{text-align:right}[data-student-management] .student-admin-delete{margin-left:auto}[data-student-management] .account-activation{justify-content:flex-end}[data-student-management] .account-table details form{text-align:left;margin-left:auto}.account-placement-date{display:block}.account-placement-date+.account-placement-date{margin-top:3px}

/* A more compact personal month calendar on desktop. */
@media(min-width:1000px){
.student-month .toolbar{margin-bottom:14px;gap:16px}
.student-month .month-title{font-size:1.35rem;margin-bottom:3px}
.student-month .toolbar .eyebrow{margin-bottom:4px}
.student-month .weeknav .button{padding:8px 12px;font-size:.8rem}
.student-month .month-calendar th{padding:9px 8px;font-size:.78rem}
.student-month .month-calendar td{height:100px;padding:6px}
.student-month .month-calendar td>.calendar-day{margin-bottom:4px}
.student-month .calendar-shift{margin-bottom:4px}
.student-month .calendar-shift-heading{padding:5px 6px}
.student-month .calendar-shift-heading strong{margin-bottom:1px}
.student-month .calendar-shift .student-shift-notes{padding:0 6px 5px}
.student-month .student-shift-notes p{margin-top:3px}
.student-month .calendar-hint{margin:10px 0;font-size:.78rem}
}

/* Shared frame for every signed-in page; calendars keep their own cell layouts. */
body>.workspace.app-workspace{
 max-width:var(--page-width);width:100%;margin:0 auto;
 padding:24px var(--page-gutter) 40px;
}
body>.workspace.app-workspace>.intro{
 margin-bottom:22px;overflow-wrap:anywhere;
}
body>.workspace.app-workspace>.intro h1{
 font-size:clamp(1.5rem,3vw,1.8rem);line-height:1.25;margin-bottom:10px;
}
body>.workspace.app-workspace>.intro .eyebrow{
 display:block;font-size:.75rem;margin-bottom:8px;
}
body>.workspace.app-workspace>.intro p:last-child:not(.eyebrow){
 margin-bottom:0;font-size:.9rem;
}
body>.workspace.app-workspace :where(.panel){padding:22px;border-radius:14px}
@media(max-width:760px){
 body>.workspace.app-workspace{padding-top:20px;padding-bottom:28px}
 body>.workspace.app-workspace>.intro{margin-bottom:18px}
 body>.workspace.app-workspace :where(.panel){padding:18px}
}
/* Reserve the quick-shift rail only when it cannot fit beside the shared frame. */
@media(min-width:1200px) and (max-width:1935px){
 body>.workspace.app-workspace.has-quick-shifts{width:calc(100% - 168px);margin-right:168px}
}

/* Activity details open above the calendar instead of changing its row height. */
.activity-details-dialog{width:min(480px,calc(100% - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:22px;border:1px solid #cfdcd6;border-radius:14px;color:#182f30;background:#fff;box-shadow:0 16px 48px #182f3026}.activity-details-dialog::backdrop{background:#182f3066}.activity-details-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.activity-details-heading h2{font-size:1.1rem;margin:0;overflow-wrap:anywhere}.activity-details-heading button{padding:6px 12px;font-size:.78rem;flex-shrink:0}.activity-details-dialog dl{display:grid;grid-template-columns:80px minmax(0,1fr);gap:12px;margin:20px 0 0;font-size:.85rem}.activity-details-dialog dt{color:#5e7171}.activity-details-dialog dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.activity-chip [data-student-activity]{cursor:pointer}

.activity-chip summary[data-student-activity]{list-style:none}.activity-chip summary[data-student-activity]::-webkit-details-marker{display:none}.activity-chip .activity-more{display:block;margin-top:6px;font-size:.72rem;text-decoration:underline;text-underline-offset:2px;color:inherit}

/* Discreet weekend shading shared by every calendar. */
:root{--weekend-bg:#edf1f5;--weekend-heading-bg:#e2e8ee;--weekend-outside-bg:#e4e9ef}
.planner td.weekend,.month-calendar td.calendar-weekend{background:var(--weekend-bg)}
.planner th.weekend:not(.is-today),.month-calendar thead th:nth-child(n+6){background:var(--weekend-heading-bg)}
.month-calendar td.calendar-weekend.outside-month{background:var(--weekend-outside-bg)}
.student-week .student-day.is-weekend{background:var(--weekend-bg);border-radius:8px}
.student-week .student-day.is-weekend:not(.is-today)>.date{background:var(--weekend-heading-bg);color:#42596b}

/* Quiet pointer focus, clear keyboard focus for the mentor filter. */
#my-students-filter{accent-color:#176b5b;cursor:pointer}
#my-students-filter:focus:not(:focus-visible){outline:none}
#my-students-filter:focus-visible{outline:2px solid #176b5b;outline-offset:3px}

.print-calendar{display:none}


/* Polished print calendar: continuous rules and familiar shift colours. */




/* Background follows the day columns even underneath a spanning shift. */


/* Week number beside Monday, without adding width or height to the calendar. */
.month-calendar td:has(>.calendar-week-label){position:relative}
.calendar-week-label{position:absolute;top:11px;right:8px;display:inline-block;padding:2px 6px;border-radius:5px;background:#e7efeb;color:#526f65;font-size:.65rem;font-weight:500;line-height:1.4;white-space:nowrap}
@media(min-width:1000px){.student-month .calendar-week-label{top:9px;right:6px}}

.month-print-action{margin:0 0 14px;text-align:right}.month-print-action button{font-size:.78rem;padding:7px 11px}

/* A clear month toolbar on the individual student profile. */
.profile-month-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:10px}.profile-month-navigation{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.profile-month-navigation h2{font-size:1.1rem;margin:0;min-width:145px;text-align:center}.profile-month-toolbar .button,.profile-month-toolbar button{font-size:.78rem;padding:7px 11px;min-height:34px}.profile-month-navigation>.button{width:34px;padding:6px}.profile-current-month{font-size:.78rem;margin-left:4px}.profile-calendar-hint{font-size:.75rem;margin:0 0 14px}@media(max-width:600px){.profile-month-navigation{gap:8px}.profile-month-navigation h2{min-width:0;font-size:1rem}.profile-month-toolbar{gap:10px}.profile-current-month{margin-left:0}}

/* Keep notes and the end status icon above a continuous draft hatch. */
.shift-chip.overnight-summary>span,.shift-chip.overnight-summary>.chip-note,.shift-chip.overnight-icon-end>.shift-publication-icon{position:relative;z-index:2}

/* The SVG owns the full band; original day cards supply only content and hit areas. */
.overnight-surface .overnight-painted-background{background:transparent!important;border-left-color:transparent!important;box-shadow:none!important}
.welcome-dialog{width:min(680px,calc(100vw - 32px))}
.welcome-dialog textarea{width:100%;resize:vertical;line-height:1.6;font-weight:400}
.welcome-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.account-calendar .calendar-steps{padding:0;margin:20px 0 14px;display:grid;grid-template-columns:1fr 1fr;gap:16px;list-style:none}
.calendar-steps>li{min-width:0;padding:18px;border:1px solid #dce6e3;border-radius:12px;background:#f5f8f7}
.calendar-step-heading{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.calendar-step-heading>span{display:grid;place-items:center;width:28px;height:28px;flex-shrink:0;border-radius:50%;background:#dfefea;color:#176b5b;font-size:.8rem;font-weight:700}
.account-calendar .calendar-step-heading label,.account-calendar .calendar-step-heading h3{margin:0;font-size:.9rem;font-weight:650}
.calendar-steps li>.button{margin-top:14px;display:inline-flex;align-items:center;gap:16px}
.calendar-switch{display:inline-grid;grid-template-columns:repeat(2,max-content);align-self:flex-start;justify-self:start;width:fit-content;min-width:0;box-sizing:border-box;gap:4px;max-width:100%;padding:4px;margin:8px 0 20px;border:1px solid #dce6e3;border-radius:10px;background:#f0f5f3}
.calendar-switch label{position:relative;min-width:0;margin:0;cursor:pointer}
.calendar-switch input{position:absolute;opacity:0;width:1px;height:1px}
.calendar-switch span{display:flex;align-items:center;justify-content:center;gap:8px;box-sizing:border-box;min-height:40px;padding:10px 14px;border-radius:7px;font-size:.8rem;font-weight:600;line-height:20px;white-space:nowrap;color:#47635e;transition:background .15s,color .15s,box-shadow .15s}
.calendar-switch svg{width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.calendar-switch label:hover span{background:#e4eeea;color:#195f52}
.calendar-switch input:checked+span{background:#fff;color:#176b5b;box-shadow:0 1px 4px #153b3b1a,inset 0 0 0 1px #d4e3dc}
.calendar-switch input:checked+span svg{stroke-width:2}
@media(max-width:480px){.calendar-switch{width:100%;grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-switch span{padding:9px 6px;gap:6px;font-size:.75rem}}
@media(max-width:360px){.calendar-switch svg{display:none}}
.calendar-switch input:focus-visible+span{outline:2px solid #176b5b;outline-offset:2px}
.account-calendar:has(.calendar-switch input[value="google"]:checked) [data-calendar-provider="iphone"],.account-calendar:has(.calendar-switch input[value="iphone"]:checked) [data-calendar-provider="google"]{display:none}
.calendar-apple-setup{padding:18px;margin:6px 0 14px;border:1px solid #dce6e3;border-radius:12px;background:#f5f8f7}
.calendar-apple-setup h3{margin:0;font-size:.9rem}
.calendar-provider .button{display:inline-flex;align-items:center;gap:12px}
.calendar-provider p{margin:8px 0 0}
.calendar-manual-steps{padding-left:20px;font-size:.8rem;color:#47635e;line-height:1.7}
.calendar-manual-steps li+li{margin-top:8px}
.account-calendar .calendar-copy-status{margin:8px 0 0;color:#176b5b;font-size:.75rem}
.calendar-copy-status:empty{display:none}
.calendar-privacy{margin-bottom:16px}
.account-calendar details{padding:13px 0;border-top:1px solid #dce6e3}
.account-calendar details summary{cursor:pointer;font-size:.8rem;font-weight:600;color:#315a51}
.account-calendar details>p{max-width:85ch;margin:12px 0 0}
.account-calendar details:last-child{padding-bottom:0}
.calendar-phone-guides{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:18px}
.calendar-phone-guides h3{font-size:.85rem;margin:0 0 10px}
.calendar-phone-guides ol{padding-left:20px;margin:0 0 12px;font-size:.8rem;color:#47635e;line-height:1.7}
.calendar-phone-guides li+li{margin-top:8px}
.calendar-copy-row{display:flex;gap:10px;align-items:center;margin-top:8px}
.calendar-copy-row input{min-width:0;flex:1;font-size:.75rem;background:white}
.calendar-copy-row button{flex-shrink:0}
.calendar-manage{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.calendar-manage form{margin:0}
@media(max-width:800px){.account-calendar .calendar-steps,.calendar-phone-guides{grid-template-columns:1fr}}
@media(max-width:420px){.calendar-copy-row{flex-direction:column;align-items:stretch}.calendar-copy-row input{width:100%}}

.template-settings{border-top:1px solid var(--line,#d6e2df);padding:14px 0}.template-settings summary{display:flex;align-items:center;gap:12px;cursor:pointer}.template-settings summary .muted{margin-left:auto}.template-badge{display:inline-flex;min-width:46px;justify-content:center;padding:7px;border-radius:5px;font-size:12px}.template-form{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:16px;margin-top:20px}.template-help{grid-column:1/-1}.template-form .check{align-self:center}@media(max-width:700px){.template-form{grid-template-columns:1fr 1fr}.template-settings summary{flex-wrap:wrap}.template-settings summary .muted{margin-left:0}}

.template-settings>summary{color:var(--ink,#163742)}.template-settings>summary::marker{color:inherit}.template-form>button{align-self:end}.template-badge.day-shift{background:#e1edd8;color:#35542b}.template-badge.evening-shift{background:#fff0d6;color:#84500e}.template-badge.night-shift{background:#cecae8;color:#333565}.template-badge.study-shift{background:#f0dcec;color:#803064}.template-badge.off-shift{background:#f3f3eb;color:#515744}.template-badge.zero-shift{background:#eee4d8;color:#71563a}.template-badge.vacation-shift{background:#badfd8;color:#185d51}.template-badge.custom-shift{background:#e7ecef;color:#355262}



/* Print menu */
.print-options-dialog{width:min(660px,calc(100vw - 32px));max-height:90vh;box-sizing:border-box;border:1px solid #d4e1dc;border-radius:20px;padding:0;color:#163742;background:#fff;overflow:hidden;box-shadow:0 24px 80px #102e3430}
.print-options-dialog[open]{display:flex;flex-direction:column}
.print-options-dialog::backdrop{background:rgb(15 40 36 / 42%);backdrop-filter:blur(3px)}
.print-options-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:25px 28px 20px;background:#f2f7f5;border-bottom:1px solid #e0eae5;flex-shrink:0}
.print-options-heading .eyebrow{margin:0 0 8px;font-size:10px;letter-spacing:1.5px}.print-options-heading h2{margin:0;font-size:24px;letter-spacing:-.5px}.print-options-heading .muted{margin:7px 0 0;font-size:13px}
.print-options-heading .print-close{border:0;background:transparent;font-size:25px;line-height:1;padding:6px 10px;color:#526d65;min-height:36px}
.print-options-body{padding:24px 28px;overflow:auto;min-height:0}
.print-content-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.print-option-card{display:flex;align-items:flex-start;gap:11px;margin:0;padding:15px;border:1px solid #dce6e1;border-radius:12px;cursor:pointer;background:#fff;transition:background .15s,border-color .15s}
.print-option-card:has(input:checked){background:#f0f7f3;border-color:#a8cabe}.print-option-card strong{display:block;font-size:13px;font-weight:600}.print-option-card small{display:block;font-size:12px;line-height:1.5;color:#647870;margin-top:5px}
.print-options-dialog input[type=checkbox]{appearance:none;-webkit-appearance:none;display:inline-grid;place-content:center;flex:0 0 18px;width:18px;height:18px;min-height:0;margin:1px 0 0;padding:0;border:1.5px solid #b3c7bd;border-radius:5px;background:#fff;box-shadow:none;cursor:pointer}
.print-options-dialog input[type=checkbox]:checked{background:#176b5b;border-color:#176b5b}.print-options-dialog input[type=checkbox]:checked::after{content:'';width:8px;height:4px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:translateY(-1px) rotate(-45deg)}
.print-options-dialog input[type=checkbox]:focus{outline:none;box-shadow:none}.print-options-dialog input[type=checkbox]:focus-visible{outline:2px solid #176b5b;outline-offset:3px}
.print-publication-hint{font-size:12px;color:#647870;margin:12px 0 0;line-height:1.5}
.print-student-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:26px 0 12px}.print-student-heading h3{margin:0;font-size:15px}.print-student-heading>span{font-size:11px;font-weight:600;color:#176b5b;background:#edf5f0;border-radius:20px;padding:5px 10px}
.print-selection-actions{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 14px}.print-selection-actions .secondary{background:#f5f8f6;border:1px solid transparent;color:#355e50;font-size:12px;padding:7px 11px;min-height:32px}.print-selection-actions .secondary:hover{background:#e8f1ec;border-color:#c5dacf}
.print-search{display:block;margin:0}.print-search>input{margin:0;background:#fafcfb;font-size:13px;min-height:42px;border-color:#dce6e1;border-radius:9px}
.print-student-list{max-height:245px;overflow:auto;overscroll-behavior:contain;border:1px solid #e0e8e3;border-radius:11px;margin-top:12px;scrollbar-width:thin;scrollbar-color:#b9cec3 transparent}
.print-student-list>label{display:flex;align-items:center;gap:12px;padding:11px 14px;margin:0;border-bottom:1px solid #edf2ef;cursor:pointer;min-height:42px;box-sizing:border-box}.print-student-list>label:last-child{border-bottom:0}.print-student-list>label:hover{background:#f3f8f5}.print-student-list>label[hidden]{display:none}.print-student-name{font-size:13px}.print-student-list small{margin-left:auto;font-size:10px;color:#577967;white-space:nowrap}
.print-options-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;border-top:1px solid #e0e8e3;padding:17px 28px;background:#f8faf9;flex-shrink:0}.print-options-footer>span{font-size:11px;color:#6b7e74}.print-options-footer>button{white-space:nowrap;border-radius:9px;padding:12px 18px;font-size:13px}
.print-search .sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:600px){.print-options-dialog{max-height:94dvh;width:calc(100vw - 20px);border-radius:16px}.print-options-heading{padding:20px}.print-options-body{padding:18px 20px}.print-content-options{grid-template-columns:1fr}.print-option-card{padding:12px}.print-options-heading h2{font-size:21px}.print-options-footer{padding:14px 20px;flex-wrap:wrap;gap:9px}.print-options-footer>button{width:100%}.print-options-footer>span{width:100%;text-align:center}.print-student-list{max-height:210px}}

@media screen{
    html:has(.print-options-dialog[open]),body:has(.print-options-dialog[open]){overflow:hidden;overscroll-behavior:none}
}
.print-options-dialog,.print-options-body{overscroll-behavior:contain}
.print-student-name{min-width:0;overflow-wrap:anywhere}
.print-student-education{color:#647870;font-size:12px;font-weight:400}

/* Shift wishes: separate requests from the published schedule. */
.request-layout{display:grid;grid-template-columns:minmax(300px,420px) minmax(0,1fr);gap:24px;align-items:start}.request-layout-staff{grid-template-columns:minmax(0,1000px);justify-content:center}.request-compose,.request-inbox{min-width:0}.request-compose h2,.request-inbox h2{margin:0 0 10px}.request-compose>p.muted{margin-bottom:24px}.request-choices{border:0;padding:0;margin:22px 0}.request-choices legend{font-weight:650;margin-bottom:10px}.request-choice{display:flex;align-items:center;gap:12px;border:1px solid #d4e2df;border-radius:10px;padding:12px 14px;margin:0 0 8px;background:#fff;cursor:pointer}.request-choice:hover{background:#f3f8f6}.request-choice:has(input:checked){border-color:#186e60;background:#edf6f2;box-shadow:inset 0 0 0 1px #186e60}.request-choice:focus-within{outline:2px solid #186e60;outline-offset:3px}.request-choice input{width:18px;height:18px;flex:0 0 18px;margin:0;accent-color:#186e60}.request-choice strong,.request-choice small{display:block}.request-choice small{font-weight:400;color:#55716b;margin-top:3px}.request-send{width:100%;margin-top:6px}.request-section-heading,.request-card-heading{display:flex;gap:14px;align-items:center;justify-content:space-between}.request-section-heading .eyebrow{margin-top:0}.request-status{display:inline-flex;align-items:center;white-space:nowrap;border-radius:20px;padding:5px 10px;font-size:.75rem;font-weight:650}.request-status.pending{background:#fff2d9;color:#775312}.request-status.approved{background:#e5f2ea;color:#226247}.request-status.rejected{background:#f5e9e9;color:#8a4247}.request-filters{display:flex;flex-wrap:wrap;gap:6px;margin:22px 0;padding-bottom:18px;border-bottom:1px solid #dce7e3}.request-filters a{display:flex;gap:7px;align-items:center;border-radius:8px;padding:8px 10px;text-decoration:none;color:#44635c;font-size:.85rem}.request-filters a[aria-current=page]{background:#e7f1ed;color:#145d51;font-weight:700}.request-filters a:hover{background:#f0f5f3}.request-filters span{font-size:.75rem}.request-list{display:grid;gap:14px}.request-card{border:1px solid #dce7e3;border-radius:12px;padding:18px;overflow-wrap:anywhere}.request-date-tile{flex:0 0 56px;background:#f0f5f3;border-radius:9px;text-align:center;padding:9px 4px}.request-date-tile strong{display:block;font-size:1.4rem;line-height:1.2}.request-date-tile span{font-size:.7rem;color:#55716b}.request-card-title{flex:1;min-width:0}.request-card-title h3{font-size:1rem;margin:3px 0}.request-card-title a{font-weight:650;text-decoration:none}.request-card-title time{font-size:.8rem;color:#55716b}.request-note{white-space:pre-wrap;margin:16px 0}.request-response{background:#f1f6f3;border-radius:8px;padding:12px}.request-response strong,.request-response span{display:block}.request-response strong{font-size:.8rem;margin-bottom:5px}.request-response span{white-space:pre-wrap}.request-decision{border-top:1px solid #e2ebe7;margin-top:16px;padding-top:4px}.request-decision textarea{margin-bottom:12px}.request-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.request-inbox>nav.request-actions{margin-top:18px}.request-withdraw{margin-top:14px}.request-empty{text-align:center;padding:35px 10px}.request-notice{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 22px;margin-bottom:22px;border:1px solid #c8dfd5;background:#edf6f1;border-radius:14px}.request-notice p{margin:5px 0 0;color:#4d6a61;font-size:.9rem}.request-notice .button{flex-shrink:0}.request-count{display:inline-block;min-width:20px;text-align:center;padding:2px 6px;border-radius:12px;background:#186e60;color:white;font-size:.75rem}.planner .request-student-link{display:block;font-size:.73rem;color:#80590e;margin-top:7px;text-decoration:underline}.request-day-link{display:block;clear:both;font-size:.75rem;text-decoration:none;color:#54766b;padding:5px 3px}.request-day-link:hover{color:#145d51;text-decoration:underline}
@media(max-width:800px){.request-layout{grid-template-columns:minmax(0,1fr)}.request-notice{align-items:flex-start;flex-direction:column}.request-card{padding:14px}.request-card-heading{flex-wrap:wrap}.request-card-heading>.request-status{margin-left:70px}.request-section-heading{align-items:flex-start;flex-wrap:wrap}}
@media print{.request-notice,.request-day-link,.request-student-link,.request-count{display:none!important}}
.request-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.request-choice{margin:0}.request-choice:last-child{grid-column:1/-1}.request-choice span{min-width:0}.request-choice small{line-height:1.4}
@media(max-width:800px){.request-card-heading{display:grid;grid-template-columns:56px minmax(0,1fr);gap:10px 14px}.request-card-heading>.request-status{grid-column:2;margin-left:0;justify-self:start}.request-date-tile{align-self:start}}
/* Requests remain separate from actual shifts and overnight layout. */
.calendar-request{display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;position:relative;clear:both;margin:5px 0;padding:7px 8px;border:1px dotted #a46e19;border-left:3px solid #b77c22;border-radius:6px;background:#fff5df;color:#745019;text-decoration:none;font-size:.8rem;line-height:1.35;overflow-wrap:anywhere}.calendar-request:hover{background:#ffecc2;border-color:#805819}.calendar-request:focus-visible{outline:2px solid #186e60;outline-offset:2px}.calendar-request strong{font-size:inherit}.calendar-request .calendar-request-label{font-size:.68rem;font-weight:600}.calendar-request small{flex-basis:100%;font-size:.68rem}.calendar-request-symbol{font-size:1rem;line-height:1}.planner .calendar-request-compact{justify-content:center;gap:2px;padding:4px 1px;font-size:.65rem;border-left-width:2px;min-width:0}.planner .calendar-request-compact .calendar-request-symbol{font-size:.75rem}.planner .calendar-request-compact .calendar-request-label{flex-basis:100%;text-align:center;font-size:.55rem}.calendar-request-legend{display:flex;align-items:center;gap:7px;margin:8px 0;color:#745019;font-size:.8rem}.calendar-request-legend::before{content:'♡';display:inline-flex;align-items:center;justify-content:center;width:22px;height:20px;border:1px dotted #a46e19;border-radius:4px;background:#fff5df}
@media print{.calendar-request,.calendar-request-legend{display:none!important}}
.request-dialog{box-sizing:border-box;width:min(580px,calc(100vw - 32px));max-height:calc(100dvh - 48px);overflow:auto;padding:26px;border:1px solid #cfdfd8;border-radius:18px;color:#183c40;background:#fff;box-shadow:0 22px 80px #183c4033}.request-dialog::backdrop{background:#163b4266;backdrop-filter:blur(2px)}.request-dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.request-dialog-heading h2{margin:0;font-size:1.3rem}.request-dialog-heading .eyebrow{margin-top:0}.request-dialog-note{white-space:pre-wrap;overflow-wrap:anywhere;padding:16px;background:#fff7e7;border-radius:10px;border-left:3px solid #b77c22}.request-dialog-preview{font-size:.9rem;line-height:1.6;color:#526c65}.request-dialog-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.request-dialog textarea{box-sizing:border-box;width:100%}html:has(.request-dialog[open]),body:has(.request-dialog[open]){overflow:hidden!important;overscroll-behavior:none}.request-dialog form[aria-busy=true]{opacity:.7}@media(max-width:600px){.request-dialog{padding:20px}.request-dialog-actions button{flex:1 1 auto}}@media print{.request-dialog{display:none!important}}
/* Large student calendar for choosing days, using published data only. */
.wish-calendar-panel{max-width:1320px;margin:0 auto 24px}.wish-calendar-intro h2{margin:0}.wish-calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:24px 0 12px}.wish-calendar-toolbar h3{margin:0;font-size:1.25rem}.wish-calendar-toolbar nav{display:flex;gap:8px}.wish-calendar-legend{display:flex;flex-wrap:wrap;gap:12px 24px;font-size:.8rem;color:#527165}.wish-calendar{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:5px}.wish-calendar th{text-align:left;padding:8px;font-size:.85rem;color:#4d6e64}.wish-calendar abbr{text-decoration:none}.wish-calendar td{vertical-align:top;padding:0;border-radius:10px;background:#f5f8f6;overflow-wrap:anywhere}.wish-day-button,.wish-day-content{box-sizing:border-box;display:flex;flex-direction:column;min-height:145px;padding:12px;border:1px solid #d7e4dd;border-radius:10px}.wish-day-button{height:100%;color:#245b4c;text-decoration:none;background:#fff;transition:background .15s,border-color .15s}.wish-day-button:hover{background:#edf6f1;border-color:#186e60}.wish-day-button:focus-visible{outline:3px solid #186e60;outline-offset:1px}.wish-day-button time,.wish-day-content>time{font-weight:650;font-size:.9rem;margin-bottom:9px}.wish-day-plus{font-size:1.8rem;text-align:center;line-height:1.3;margin:auto 0 0}.wish-day-prompt{text-align:center;font-size:.75rem;margin-bottom:8px}.wish-today .wish-day-button,.wish-today .wish-day-content{border-color:#186e60;box-shadow:inset 0 0 0 1px #186e60}.wish-outside{opacity:.5}.wish-occupied .wish-day-content{background:#f0f4f2}.wish-published-shift{display:block;padding:7px;border-radius:6px;background:#e0ece6;color:#275345;font-size:.78rem;margin-bottom:5px}.wish-published-shift small{display:block;font-size:.7rem;margin-top:3px}.wish-existing{display:block;border:1px dotted #b77c22;border-radius:6px;background:#fff3d9;color:#765116;padding:7px;font-size:.78rem;text-decoration:none}.wish-existing small{display:block;margin-top:3px;font-size:.68rem}.wish-existing.approved{background:#e4f2e9;color:#285d43;border-color:#6c9b7d}.wish-existing.rejected{background:#f5eaea;color:#8c4c50;border-color:#b98989}.wish-date-unavailable{font-size:.7rem;color:#75877f}.wish-shift-short{display:none}.wish-compose-fallback{max-width:580px;margin:0 auto 24px}.student-wish-dialog .request-choices{margin-top:20px}.wish-compose-body>p{margin-bottom:20px}
@media(max-width:700px){.wish-calendar-panel{padding:12px}.wish-calendar-toolbar{align-items:flex-start;flex-direction:column}.wish-calendar-toolbar nav{width:100%;justify-content:space-between}.wish-calendar{border-spacing:2px}.wish-calendar th{padding:6px 2px;text-align:center;font-size:.7rem}.wish-day-button,.wish-day-content{padding:5px 3px;min-height:110px;border-radius:6px}.wish-day-button time,.wish-day-content>time{font-size:.75rem}.wish-day-prompt,.wish-date-unavailable{display:none}.wish-day-plus{margin:auto 0;font-size:1.4rem}.wish-shift-full{display:none}.wish-shift-short{display:inline}.wish-published-shift,.wish-existing{padding:4px 2px;font-size:.65rem}.wish-existing small{font-size:.58rem}.wish-published-shift small{font-size:.58rem}.wish-calendar-legend{gap:8px;font-size:.7rem}.wish-calendar-intro h2{font-size:1.1rem}.wish-calendar-intro p{font-size:.85rem}}
.request-status.planned{background:#edf0f8;color:#455775}.request-status.withdrawn{background:#eef0ef;color:#64716b}.withdrawn-wish-marker{display:block;color:#805312;font-size:.67rem;line-height:1.25;margin:2px 0;white-space:normal}.month-shift-chip .withdrawn-wish-marker{position:absolute;left:1px;top:0;font-size:.7rem;margin:0;z-index:2}.month-shift-chip .withdrawn-wish-marker>span{display:none}.request-withdrawal-hint{padding:14px;border-left:3px solid #bd8c36;border-radius:8px;background:#fff4dd;color:#79531a}.shift-chip[data-request-withdrawn]{outline:1px dotted #a77c30;outline-offset:-1px}
@media print{.withdrawn-wish-marker,.request-withdrawal-hint{display:none!important}}
.request-status.unfulfilled,.wish-existing.unfulfilled{background:#f5e9e9;color:#8a4247}
.student-wish-badge{display:inline-flex;align-items:center;gap:5px;margin-top:5px;padding:2px 7px;border-radius:6px;background:#ffffffb8;color:#195f52;font-size:.72rem;font-weight:600;text-decoration:none}.student-wish-badge:hover{background:#fff;text-decoration:underline}.student-wish-badge:focus-visible{outline:2px solid #186e60;outline-offset:2px}
.wish-calendar-panel{box-shadow:0 5px 24px #173e3210}.wish-calendar-intro h2{font-size:1.35rem;letter-spacing:-.025em}.wish-calendar-intro .muted{margin:8px 0 0;max-width:740px;line-height:1.6}
.wish-expectation{display:flex;align-items:flex-start;gap:13px;margin:22px 0 26px;padding:16px 18px;border:1px solid #ebdfc3;border-radius:12px;background:#fff9ec;color:#6a5428}.wish-expectation>span{display:grid;place-items:center;flex:0 0 32px;height:32px;border-radius:50%;background:#f6ecd3;font-size:1.3rem}.wish-expectation strong{display:block;font-size:.88rem}.wish-expectation p{margin:4px 0 0;max-width:850px;font-size:.8rem;line-height:1.6}
.wish-calendar-panel .wish-calendar-toolbar{padding-top:20px;border-top:1px solid #e2ebe6}.wish-calendar-panel .wish-calendar-toolbar h3{font-size:1.3rem}.wish-calendar-panel .wish-calendar-legend{margin:14px 0 18px}.wish-calendar-legend>span{padding:4px 9px;border-radius:6px;background:#f1f6f3}.wish-calendar-legend>span:last-child{background:#fff3d9;color:#765116}
.wish-calendar-panel .wish-day-button{border-style:dashed;border-color:#9abbb0;background:#fcfefd}.wish-calendar-panel .wish-day-button:hover{border-style:solid;background:#edf6f1;box-shadow:inset 0 0 0 1px #8ab4a5}.wish-calendar-panel .wish-day-plus{display:grid;place-items:center;align-self:center;width:32px;height:32px;border-radius:50%;background:#e7f2ec;font-size:1.5rem}.wish-calendar-panel .wish-day-prompt{font-weight:600;margin-top:6px}.wish-calendar-panel .wish-occupied .wish-day-content{background:#f5f8f6;border-color:#e2ebe6}.wish-calendar-panel .wish-published-shift{border-left:3px solid #84ab99;background:#e6f0ea}.wish-calendar-footer{margin:16px 0 0;color:#647b72;font-size:.78rem}.wish-submit-note{padding:12px 14px;border-radius:8px;background:#fff9ec;color:#6a5428;font-size:.8rem;line-height:1.55;margin:14px 0 0}
.student-request-history{max-width:1320px;margin:0 auto;grid-template-columns:minmax(0,1fr)}.student-request-history .request-inbox{padding:26px}.student-request-history .request-card{padding:16px 18px}.student-request-history .request-card>p:last-child{margin-bottom:0}.student-request-history .request-date-tile{background:#edf4f0}.student-request-history .request-filters{margin-top:18px}.student-request-history .request-list{gap:10px}
@media(max-width:700px){.wish-expectation{padding:12px;gap:10px;margin:18px 0}.wish-expectation p{font-size:.76rem}.wish-calendar-panel .wish-calendar-toolbar{padding-top:14px}.wish-calendar-panel .wish-day-plus{width:26px;height:26px;font-size:1.25rem}.wish-calendar-legend>span{padding:3px 5px}.student-request-history .request-inbox{padding:16px}.student-request-history .request-card{padding:14px 12px}}
.wish-calendar-panel .wish-published-shift.day-shift{background:var(--schedule-day-bg);border-color:var(--schedule-day-edge);color:var(--schedule-day-text)}
.wish-calendar-panel .wish-published-shift.evening-shift{background:var(--schedule-evening-bg);border-color:var(--schedule-evening-edge);color:var(--schedule-evening-text)}
.wish-calendar-panel .wish-published-shift.night-shift{background:var(--schedule-night-bg);border-color:var(--schedule-night-edge);color:var(--schedule-night-text)}
.wish-calendar-panel .wish-published-shift.study-shift{background:var(--schedule-study-bg);border-color:var(--schedule-study-edge);color:var(--schedule-study-text)}
.wish-calendar-panel .wish-published-shift.off-shift{background:var(--schedule-off-bg);border-color:var(--schedule-off-edge);color:var(--schedule-off-text)}
.wish-calendar-panel .wish-published-shift.zero-shift{background:var(--schedule-zero-bg);border-color:var(--schedule-zero-edge);color:var(--schedule-zero-text)}
.wish-calendar-panel .wish-published-shift.vacation-shift{background:var(--schedule-vacation-bg);border-color:var(--schedule-vacation-edge);color:var(--schedule-vacation-text)}
.wish-calendar-panel .wish-published-shift.custom-shift{background:var(--schedule-custom-bg);border-color:var(--schedule-custom-edge);color:var(--schedule-custom-text)}
.wish-calendar-panel .wish-published-shift.is-sick{background:#fce8e8;border-color:#c45a62;color:#942e35}
.wish-grid-create{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:72px;margin-top:5px;border:1px dashed #a4c4b8;border-radius:8px;background:#f5faf7;color:#226654;font-size:.75rem;text-align:center;text-decoration:none}.wish-grid-create>span{font-size:1.4rem;line-height:1}.wish-grid-create:hover{background:#e6f2eb;border-color:#176b5b}.wish-grid-create:focus-visible{outline:2px solid #176b5b;outline-offset:2px}.wish-calendar-panel .month-calendar td{height:145px}.wish-calendar-panel .month-calendar .wish-existing{margin-top:5px}
@media(max-width:700px){.wish-calendar-panel{overflow-x:auto}.wish-calendar-panel .month-calendar{min-width:620px}}
.wish-calendar-panel{position:relative}
@media(min-width:1000px){.workspace:has(.wish-calendar-panel){max-width:1440px;padding-top:28px}}
.wish-calendar-panel{max-width:none;margin:0 0 24px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.student-request-history{max-width:none}.wish-calendar-panel .month-calendar td{height:128px}.wish-calendar-panel .wish-existing.calendar-shift{background:#fff3d9;border:1px dotted #b77c22;border-left:3px solid #b77c22;color:#765116}.wish-calendar-panel .wish-existing.approved{background:#e4f2e9;color:#285d43;border-color:#6c9b7d}.wish-calendar-panel .wish-existing.rejected,.wish-calendar-panel .wish-existing.unfulfilled{background:#f5eaea;color:#8c4c50;border-color:#b98989}.wish-calendar-panel .wish-existing .calendar-shift-heading{color:inherit}
.student-wish-details{box-sizing:border-box;width:min(580px,calc(100% - 32px));padding:24px;max-height:85dvh;overflow:auto}.student-wish-details .request-card{border:0;padding:8px 0 0}.student-wish-details .request-withdraw{margin-top:20px}.student-wish-details .request-card-heading{flex-wrap:wrap}body:has(.student-wish-details[open]){overflow:hidden}
@media(max-width:700px){
 .wish-calendar-panel{overflow:visible}.wish-calendar-panel .month-calendar{display:block;min-width:0;width:100%;border:0;background:transparent;overflow:visible}.wish-calendar-panel .month-calendar thead{display:none}.wish-calendar-panel .month-calendar tbody,.wish-calendar-panel .month-calendar tr{display:block}.wish-calendar-panel .month-calendar td{display:block;box-sizing:border-box;width:100%;height:auto;min-height:100px;margin-bottom:10px;padding:12px;border:1px solid #d2dfd7;border-radius:10px;background:#fff}.wish-calendar-panel .month-calendar td.outside-month{display:none}.wish-calendar-panel .month-calendar td.calendar-weekend{background:#edf2f4}.wish-calendar-panel .month-calendar td::before{content:attr(data-day-name);float:right;font-size:.8rem;font-weight:600;color:#527066}.wish-calendar-panel .calendar-week-label{position:static;display:inline-block;margin-left:8px;vertical-align:top}.wish-calendar-panel .month-calendar .calendar-day{display:inline-flex;font-size:.95rem;font-weight:650;margin-bottom:10px}.wish-calendar-panel .calendar-shift{padding:10px 12px;margin:0 0 6px}.wish-calendar-panel .calendar-shift-heading strong{font-size:.85rem}.wish-calendar-panel .calendar-shift-heading span{font-size:.8rem}.wish-calendar-panel .wish-existing{display:block;min-height:44px;text-decoration:none}.wish-calendar-panel .wish-grid-create{min-height:48px;flex-direction:row;gap:8px;font-size:.85rem}.wish-calendar-panel .wish-calendar-toolbar nav a{min-height:44px;display:inline-flex;align-items:center;justify-content:center}.wish-calendar-panel .wish-calendar-toolbar nav a:nth-child(2){flex:1}.wish-calendar-panel .wish-calendar-legend{flex-wrap:wrap}.wish-calendar-panel .wish-calendar-intro h2{font-size:1.2rem}
 .student-request-history .request-section-heading{align-items:flex-start;gap:8px}.student-request-history .request-card-heading,.student-wish-details .request-card-heading{display:grid;grid-template-columns:48px minmax(0,1fr);gap:10px}.student-request-history .request-date-tile,.student-wish-details .request-date-tile{width:48px;box-sizing:border-box}.student-request-history .request-card-heading>.request-status,.student-wish-details .request-card-heading>.request-status{grid-column:2;justify-self:start}.student-request-history .request-filters a{min-height:44px;box-sizing:border-box;align-items:center}.student-request-history .request-withdraw button,.student-wish-details .request-withdraw button{width:100%;min-height:44px}
 .student-wish-dialog,.student-wish-details{width:calc(100% - 20px);max-width:none;max-height:calc(100dvh - 24px);box-sizing:border-box;padding:18px}.student-wish-dialog .request-dialog-heading,.student-wish-details .request-dialog-heading{gap:10px}.student-wish-dialog .request-dialog-heading h2,.student-wish-details .request-dialog-heading h2{font-size:1.1rem}.student-wish-dialog input,.student-wish-dialog textarea{font-size:16px}.student-wish-dialog .request-choice{min-height:48px;box-sizing:border-box}.student-wish-dialog button,.student-wish-details button{min-height:44px}.student-wish-dialog .request-choices{margin:16px 0}
}
.wish-mobile-day-open{display:none}.wish-mobile-day-dialog{box-sizing:border-box;width:calc(100% - 24px);max-width:520px;max-height:85dvh;overflow:auto;padding:20px}.wish-mobile-day-dialog h2{font-size:1.1rem;text-transform:capitalize}.wish-mobile-day-body .calendar-shift{padding:12px;margin-bottom:10px}.wish-mobile-day-body .calendar-shift-heading strong{font-size:.9rem}.wish-mobile-day-body .wish-existing{background:#fff3d9;color:#765116}.wish-mobile-day-body .wish-grid-create{min-height:48px}body:has(.wish-mobile-day-dialog[open]){overflow:hidden}
@media(max-width:700px){
 .wish-calendar-panel .month-calendar{display:table;table-layout:fixed;border:1px solid #d2dfd7;border-collapse:separate;border-spacing:0;border-radius:10px;overflow:hidden;background:#fff}.wish-calendar-panel .month-calendar thead{display:table-header-group}.wish-calendar-panel .month-calendar tbody{display:table-row-group}.wish-calendar-panel .month-calendar tr{display:table-row}.wish-calendar-panel .month-calendar th{padding:10px 0;text-align:center;font-size:0}.wish-calendar-panel .month-calendar th::first-letter{font-size:.75rem}.wish-calendar-panel .month-calendar td,.wish-calendar-panel .month-calendar td.outside-month{display:table-cell;position:relative;width:auto;height:90px;min-height:0;margin:0;padding:5px 2px;border:0;border-top:1px solid #e0e8e3;border-right:1px solid #e0e8e3;border-radius:0;vertical-align:top}.wish-calendar-panel .month-calendar td:last-child{border-right:0}.wish-calendar-panel .month-calendar td::before{display:none}.wish-calendar-panel .month-calendar td.outside-month{background:#edf1ee;opacity:.55}.wish-calendar-panel .month-calendar .calendar-day{display:flex;width:24px;min-width:24px;height:24px;margin:0 auto 4px;font-size:.72rem;justify-content:center}.wish-calendar-panel .calendar-week-label{display:none}
 .wish-calendar-panel .month-calendar .calendar-shift{padding:4px 1px;margin:3px 0;min-height:22px;border-left-width:2px;border-radius:3px;text-align:center}.wish-calendar-panel .month-calendar .calendar-shift>*{display:none}.wish-calendar-panel .month-calendar .calendar-shift::before{content:attr(data-mobile-label);display:block;font-size:.62rem;font-weight:650;line-height:16px;white-space:nowrap}.wish-calendar-panel .month-calendar .wish-grid-create{font-size:0;min-height:30px;border:0;margin:2px 0;background:transparent}.wish-calendar-panel .month-calendar .wish-grid-create>span{font-size:1.2rem}.wish-calendar-panel .month-calendar .wish-mobile-day-open{display:block;position:absolute;inset:0;z-index:3;width:100%;height:100%;padding:0;min-width:0;border:0;border-radius:0;background:transparent;color:inherit}.wish-calendar-panel .month-calendar .wish-mobile-day-open:focus-visible{outline:2px solid #176b5b;outline-offset:-2px}.wish-calendar-panel .month-calendar .wish-mobile-day-open:hover{background:#176b5b0b}.wish-calendar-panel .month-calendar td.outside-month .wish-mobile-day-open{display:none}
}
@media(max-width:700px){.wish-calendar-panel .month-calendar .calendar-shift.overnight-summary::before,.wish-calendar-panel .month-calendar .calendar-shift.overnight-duplicate::before{visibility:hidden}.wish-calendar-panel .month-calendar [data-overnight-part=start]:not(.overnight-summary)::before{content:attr(data-mobile-label) ' →'}.wish-calendar-panel .month-calendar [data-overnight-part=continuation]:not(.overnight-duplicate)::before{content:'← ' attr(data-mobile-label)}}
@media(max-width:700px){.wish-calendar-panel .month-calendar a.wish-existing{position:relative;z-index:2;min-height:30px;cursor:pointer}.wish-calendar-panel .month-calendar a.wish-grid-create{position:relative;z-index:2;min-height:36px}.wish-calendar-panel .month-calendar a.wish-existing:focus-visible{outline:2px solid #176b5b;outline-offset:1px}}
.wish-calendar-panel .wish-existing.overnight-painted-background{border-color:transparent!important}
@media(min-width:701px){.wish-calendar-panel .month-calendar .wish-existing.calendar-shift{margin-top:0;padding:0;border-top-width:0;border-bottom-width:0;border-right-width:0;outline:1px dotted #b77c22;outline-offset:-1px}.wish-calendar-panel .wish-existing .calendar-shift-heading>.shift-progress-label{margin-bottom:0}.wish-calendar-panel .wish-existing.overnight-painted-background{outline:0}}
/* Placement limits remain visible without obscuring existing shifts. */
.month-calendar td.outside-placement,
.planner td.outside-placement,
.student-day.outside-placement {
    background-color: #edf0ef;
    background-image: repeating-linear-gradient(135deg, transparent, transparent 6px, #70847c12 6px, #70847c12 8px) !important;
}
.placement-day-label { display: block; color: #61756e; font-size: .7rem; line-height: 1.3; margin: .25rem 0; }
@media (max-width: 600px) {
    .month-calendar .placement-day-label { font-size: .56rem; overflow-wrap: anywhere; }
}
.placement-legend-swatch { display: inline-block; width: 1rem; height: 1rem; vertical-align: middle; border: 1px solid #bdccc5; border-radius: 3px; background: repeating-linear-gradient(135deg, #edf0ef, #edf0ef 4px, #d8dfdc 4px, #d8dfdc 6px); }
@media print { .placement-legend, .placement-day-label { display: none !important; } }
/* Holidays colour the day, while shifts retain their own type colours. */
.month-calendar td.calendar-holiday,
.planner td.calendar-holiday,
.planner th.calendar-holiday,
.student-day.calendar-holiday { background-color: #fff0ee !important; }
.holiday-label { display: block; color: #93463e; font-size: .7rem; font-weight: 600; line-height: 1.3; margin: 2px 0 6px; overflow-wrap: anywhere; }
.calendar-holiday > .calendar-day { color: #93463e; font-weight: 700; }
.calendar-holiday > .calendar-day[aria-current="date"] { color: #fff; }
.planner .holiday-label { white-space: normal; }
.holiday-marker, .planner .holiday-marker { display: inline-block; padding: 1px 3px; border-radius: 3px; background: #f2d3cd; color: #793a33; font-size: .6rem; margin: 2px 0 0; }
.calendar-holidays { display: block; color: #93463e; font-size: .75rem; line-height: 1.6; }
.holiday-overview:has(:not(:empty)) { margin: 8px 0; }
.holiday-overview:empty { display: none; }
/* Let every explanation wrap instead of hiding it in a fixed-height scroller. */
.calendar-legend-rolling{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;margin-bottom:10px;min-width:0}
.calendar-legend-rolling>.month-key{margin:0;overflow:visible;align-content:start;flex-wrap:wrap;gap:6px 14px}
.calendar-legend-rolling>.month-key>span{max-width:100%;white-space:normal;overflow-wrap:anywhere}
.calendar-legend-rolling>.month-key>span>b{flex-shrink:0}
.month-key .placement-legend-swatch{flex-shrink:0}
.calendar-legend-rolling>.holiday-overview{margin:0;overflow:visible;line-height:1.4;overflow-wrap:anywhere}
.calendar-legend-rolling>[hidden],.calendar-legend-rolling>.holiday-overview:empty{display:none}
.calendar-legend-rolling{align-content:start;overflow-anchor:none}
.calendar-legend-measure{position:fixed!important;left:0;top:0;visibility:hidden!important;pointer-events:none;min-height:0!important;margin:0!important;z-index:-1}
@media print{.calendar-legend-rolling{min-height:0!important}.calendar-legend-measure{display:none!important}}
/* Compact planning controls leave the calendar visible without a long preamble. */
body>.workspace.app-workspace:has(.month-overview-nav){padding-top:14px}
body>.workspace.app-workspace:has(.month-overview-nav)>.intro{margin-bottom:10px}
body>.workspace.app-workspace:has(.month-overview-nav)>.intro .eyebrow{display:none}
body>.workspace.app-workspace:has(.month-overview-nav)>.intro h1{font-size:1.5rem;margin:0}
.workspace:has(.month-overview-nav)>.calendar-request-legend{display:none}
.workspace:has(.month-overview-nav)>.placement-reminder{padding:8px 12px;margin:0 0 10px;border-radius:8px}
.month-overview-nav{justify-content:flex-start;gap:8px;margin-bottom:10px}
.month-overview-nav .weeknav{margin-right:auto;gap:10px}
.month-overview-nav .planner-print{font-size:.78rem;padding:7px 11px;margin:0}
.month-overview-nav{padding:10px 12px;background:#fff;border:1px solid #d7e4df;border-radius:12px;align-items:center}
.month-overview-nav .weeknav{gap:0;align-items:stretch}
.month-overview-nav .weeknav>.button{display:grid;place-items:center;min-width:36px;padding:6px;border-color:#d9e6e0;background:#f5f9f7;border-radius:8px 0 0 8px}
.month-overview-nav .weeknav>.period-dial+.button{border-radius:0 8px 8px 0}
.period-dial{display:flex;flex-direction:column;justify-content:center;text-align:center;min-width:145px;padding:5px 14px;border-block:1px solid #d9e6e0;background:#f5f9f7;cursor:ns-resize;user-select:none}
.period-dial:hover,.period-dial:focus-visible{background:#eaf4ef}
.month-overview-nav .period-dial h2{font-size:.95rem}
.period-dial .small{font-size:.7rem}
.month-overview-nav .period-today{align-self:center;margin-left:12px;font-size:.8rem;text-decoration:none;color:#397268;padding:6px 8px;border-radius:6px}
.month-overview-nav .period-today:hover{background:#edf5f1}
.planner-view-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.month-overview-nav .overview-switch{margin:0}
.planner-view-actions .planner-print,.planner-view-actions .overview-switch .button{box-sizing:border-box;min-height:38px;display:inline-flex;align-items:center;justify-content:center}
.workspace:has(.month-overview-nav) .planner-meta{padding:8px 10px;background:#eaf1ee;border-radius:8px}
.calendar-use-help summary{list-style:none}
.calendar-use-help summary::before{content:'?';display:inline-grid;place-items:center;width:15px;height:15px;margin-right:6px;border:1px solid #bacdc5;border-radius:50%;font-size:10px}
.workspace:has(.month-overview-nav) .planner-meta{gap:8px 12px;margin-bottom:6px}
.workspace:has(.month-overview-nav) .planner-meta>span{padding:5px 9px}
.planner-meta>label{display:flex;align-items:center;min-height:36px;line-height:1.5}
.planner-meta>.check input[type=checkbox]{margin:0}
.planner-meta input[type=search],.planner-meta select{height:36px;margin-top:0;padding-top:7px;padding-bottom:7px}
.planner-meta>span{display:inline-flex;align-items:center;gap:4px;min-height:36px}
.calendar-use-help{margin:4px 0 8px;font-size:.75rem;color:#526766}
.calendar-use-help summary{cursor:pointer;width:fit-content;color:inherit}
.calendar-use-help p{margin:6px 0;max-width:70rem}
.rolling-calendar-hint{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:80;max-width:calc(100vw - 32px);width:max-content;margin:0;pointer-events:none}
.rolling-calendar-hint [role=status]:not(:empty){display:flex;align-items:center;gap:10px;padding:11px 16px;border:1px solid #c4ddd5;border-radius:14px;background:#f7fcfa;box-shadow:0 4px 18px #183e3026;line-height:1.4}
.rolling-calendar-hint[data-state=loading] [role=status]:not(:empty)::before{content:'';flex:0 0 16px;width:16px;height:16px;box-sizing:border-box;border:2px solid #c4ddd5;border-top-color:#176b5b;border-radius:50%;animation:calendar-loading-spin .8s linear infinite}
.rolling-calendar-hint[data-state=error] [role=status]:not(:empty){background:#fff8eb;border-color:#e3c998;color:#765319}
@keyframes calendar-loading-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.rolling-calendar-hint[data-state=loading] [role=status]:not(:empty)::before{animation:none}}
@media print{.rolling-calendar-hint{display:none!important}}
.rolling-calendar-hint:has([role=status]:empty){display:none}
@media(max-width:700px){
 .month-overview-nav .weeknav{width:100%;flex-wrap:wrap}
 .workspace:has(.month-overview-nav) .planner-meta .search-label{width:100%;margin:0}
}
@media (max-width: 600px) { .month-calendar .holiday-label { font-size: .55rem; line-height: 1.25; } }
.staff-role-choice { border: 0; padding: 0; margin: 0 0 20px; min-width: 0; }
.staff-role-choice legend { padding: 0; margin-bottom: 8px; font-size: .9rem; font-weight: 600; }
.staff-role-options { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
.staff-role-option { display: flex; align-items: flex-start; gap: 10px; margin: 0; padding: 14px; border: 1px solid #cbdad5; border-radius: 10px; background: #fff; cursor: pointer; }
.staff-role-option input { width: 18px; height: 18px; flex: 0 0 18px; margin: 2px 0 0; accent-color: #176b5b; }
.staff-role-option span { min-width: 0; }
.student-admin-dialog .staff-role-option { margin-bottom: 0; }
.staff-role-option strong { display: block; font-size: .85rem; overflow-wrap: anywhere; }
.staff-role-option small { display: block; margin-top: 4px; color: #5e7171; font-size: .75rem; font-weight: 400; line-height: 1.45; }
.staff-role-option:has(input:checked) { border-color: #176b5b; background: #edf6f1; box-shadow: inset 0 0 0 1px #176b5b; }
.staff-role-option:has(input:focus-visible) { outline: 3px solid #bfe6da; outline-offset: 2px; }
.staff-role-choice:disabled .staff-role-option { cursor: default; opacity: .7; }
@media(max-width:480px) { .staff-role-options { grid-template-columns: minmax(0,1fr); } }
/* Planner inbox: scan compact rows and open only the request being reviewed. */
.planner-request-inbox { grid-template-columns: minmax(0,1200px); }
.request-student-filter { display: flex; align-items: end; gap: 12px; margin-top: 20px; }
.request-student-filter label { width: min(100%,340px); margin: 0; }
.request-student-filter button { flex-shrink: 0; }
.planner-request-inbox .request-list { gap: 0; border-top: 1px solid #dce7e3; }
.request-review { border-bottom: 1px solid #dce7e3; }
.request-review-summary { display: grid; grid-template-columns: 100px minmax(0,1fr) minmax(0,1fr) 150px 20px; align-items: center; gap: 16px; padding: 15px 8px; color: #182f30; list-style: none; border-radius: 6px; }
.request-review-summary::-webkit-details-marker { display: none; }
.request-review-summary:hover { background: #f4f8f6; }
.request-review-summary:focus-visible { outline: 2px solid #176b5b; outline-offset: -2px; }
.request-review-summary small { display: block; color: #5e7171; font-size: .75rem; font-weight: 400; margin-top: 3px; }
.request-review-student,.request-review-shift { min-width: 0; overflow-wrap: anywhere; }
.request-review-summary .request-status { justify-self: start; white-space: normal; }
.request-review-summary .request-review-note { color: #775312; }
.request-review-chevron { color: #627a71; transition: transform .16s ease; }
.request-review[open] .request-review-chevron { transform: rotate(180deg); }
.request-review[open] > summary { background: #edf5f1; }
.request-review-body { padding: 18px; background: #f8faf9; border-radius: 0 0 8px 8px; overflow-wrap: anywhere; }
.request-plan-link { display: inline-block; margin-bottom: 12px; }
.request-review-body .request-decision { max-width: 720px; }
.request-review-body .request-decision textarea { margin-bottom: 0; }
@media(max-width:700px) {
 .planner-request-inbox .request-inbox { padding: 16px; }
 .request-student-filter { flex-wrap: wrap; }
 .request-student-filter label { width: 100%; }
 .request-review-summary { grid-template-columns: minmax(0,1fr) auto 20px; gap: 8px; padding: 14px 4px; }
 .request-review-student { grid-column: 1 / 3; grid-row: 1; }
 .request-review-summary > time { grid-column: 2; grid-row: 2; font-size: .75rem; text-align: right; }
 .request-review-shift { grid-column: 1; grid-row: 2; }
 .request-review-summary .request-status { grid-column: 1 / 3; grid-row: 3; }
 .request-review-chevron { grid-column: 3; grid-row: 1 / 4; }
 .request-review-body { padding: 14px 10px; }
 .request-review-body .request-actions button { width: 100%; min-height: 44px; }
}
@media(prefers-reduced-motion:reduce) { .request-review-chevron { transition: none; } }
.product-brand { display: inline-flex; flex-direction: column; align-items: stretch; max-width: 100%; vertical-align: middle; flex-shrink: 0; }
.product-brand .brand-logo { margin: 0; }
body > header { padding-block: 10px; }
.header-identity { display: flex; align-items: center; flex-shrink: 0; }
header a.brand { display: block; width: 150px; line-height: 1; flex: 0 0 auto; }
header .brand .product-brand { width: 100%; margin: 0; }
.header-department { display: flex; flex-direction: column; gap: 2px; min-width: 0; max-width: 240px; margin-right: -20px; }
.header-department-label { color: #647d76; font-size: .62rem; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; }
header .brand-department { display: block; min-width: 0; color: #42635c; font-size: .82rem; font-weight: 600; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media(max-width:760px) {
 body>header { row-gap: 4px; }
 .header-identity { display: contents; }
 body>header a.brand { grid-column: 1; grid-row: 1; width: 128px; }
 .header-department { grid-column: 1 / -1; grid-row: 2; flex-direction: row; align-items: baseline; gap: 8px; max-width: 100%; margin: 0; padding-top: 6px; }
 body>header .brand-department { font-size: .78rem; }
 body>header>nav { grid-row: 3; }
}
.quick-shifts .quick-heading { position: relative; padding-right: 24px; }
.quick-shifts .quick-close { position: absolute; top: -4px; right: -4px; display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; border: 0; border-radius: 5px; background: transparent; color: #5e7171; font-size: 22px; font-weight: 400; line-height: 1; }
.quick-shifts .quick-close:hover { color: #176b5b; background: #e8f1ed; }
.department-settings .settings-navigation { display: flex; flex-wrap: wrap; gap: 5px; padding: 5px; margin: 0 0 20px; width: fit-content; max-width: 100%; background: #e9f0ec; border-radius: 10px; }
.settings-navigation a { padding: 9px 16px; border-radius: 7px; color: #426359; font-size: .88rem; }
.settings-navigation a[aria-current] { background: #fff; color: #176b5b; box-shadow: 0 1px 4px #163e3012; }
.settings-navigation a:hover { background: #f6f9f7; }
.department-settings > .panel { margin-top: 0; }
.department-settings .template-settings { padding: 0; }
.department-settings .template-settings > summary { padding: 10px 0; min-height: 54px; gap: 12px; }
.department-settings .template-settings > summary > strong { min-width: 0; overflow-wrap: anywhere; }
.department-settings .template-chevron { flex: 0 0 20px; color: #627a71; margin-inline: 4px; transition: transform .16s ease; }
.department-settings .template-settings[open] .template-chevron { transform: rotate(180deg); color: #176b5b; }
@media(prefers-reduced-motion:reduce) { .department-settings .template-chevron { transition: none; } }
.department-settings .template-settings[open] { padding-bottom: 12px; }
.department-settings .template-settings[open] > summary { color: #176b5b; }
.department-settings .template-form { background: #f5f8f6; border: 1px solid #e0e9e4; border-radius: 10px; padding: 18px; margin: 0 0 4px; gap: 12px; }
.department-settings .template-form label { margin-bottom: 0; }
.department-settings .template-help { margin-bottom: 0; }
@media(max-width:600px) { .settings-navigation a { padding: 8px 10px; font-size: .8rem; } .department-settings .template-form { padding: 12px; } }
@media(max-width:700px) {
 .department-settings .template-settings > summary { display: grid; grid-template-columns: 46px minmax(0,1fr) 20px; column-gap: 12px; row-gap: 2px; }
 .department-settings .template-badge { grid-column: 1; grid-row: 1 / span 2; }
 .department-settings .template-settings > summary > strong { grid-column: 2; grid-row: 1; }
 .department-settings .template-settings > summary > .muted { grid-column: 2; grid-row: 2; margin: 0; }
 .department-settings .template-chevron { grid-column: 3; grid-row: 1 / span 2; margin: 0; }
}

/* Additional template colours; snapshots use these classes on screen and print. */
.blue-shift,.key-blue{--template-bg:#dce8fa;--template-edge:#5c83b5;--template-text:#28496e;--print-bg:#dce8fa;--print-edge:#5c83b5;--print-text:#28496e}
.orange-shift,.key-orange{--template-bg:#fbe2ca;--template-edge:#bf834b;--template-text:#79471e;--print-bg:#fbe2ca;--print-edge:#bf834b;--print-text:#79471e}
.olive-shift,.key-olive{--template-bg:#e5e9c8;--template-edge:#909e48;--template-text:#505a21;--print-bg:#e5e9c8;--print-edge:#909e48;--print-text:#505a21}
.petrol-shift,.key-petrol{--template-bg:#d0e4e9;--template-edge:#558896;--template-text:#285361;--print-bg:#d0e4e9;--print-edge:#558896;--print-text:#285361}
.plum-shift,.key-plum{--template-bg:#e8d6e8;--template-edge:#986498;--template-text:#633563;--print-bg:#e8d6e8;--print-edge:#986498;--print-text:#633563}
.brown-shift,.key-brown{--template-bg:#e4d8cf;--template-edge:#9a7960;--template-text:#614631;--print-bg:#e4d8cf;--print-edge:#9a7960;--print-text:#614631}
.indigo-shift,.key-indigo{--template-bg:#dce0f4;--template-edge:#7886ba;--template-text:#414d81;--print-bg:#dce0f4;--print-edge:#7886ba;--print-text:#414d81}
.mint-shift,.key-mint{--template-bg:#dcf1df;--template-edge:#70a77a;--template-text:#38623f;--print-bg:#dcf1df;--print-edge:#70a77a;--print-text:#38623f}
:is(.shift-chip,.calendar-shift,.student-day-shift,.quick-preset,.template-badge,[data-shift-preset]):is(.blue-shift,.orange-shift,.olive-shift,.petrol-shift,.plum-shift,.brown-shift,.indigo-shift,.mint-shift):not(.is-sick):not(.is-finished){background:var(--template-bg);color:var(--template-text);border-color:var(--template-edge)}
.month-key :is(.key-blue,.key-orange,.key-olive,.key-petrol,.key-plum,.key-brown,.key-indigo,.key-mint){background:var(--template-bg);color:var(--template-text);border-color:var(--template-edge)}

/* Small, shared helpers for planning and operation flows. */
.workspace > .settings-navigation{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.workspace > .settings-navigation a{padding:8px 12px;border-radius:7px}.workspace > .settings-navigation a[aria-current=page]{background:#e4f0eb;font-weight:600}
.shift-change-badge{position:relative;z-index:2;display:inline-flex;align-items:center;gap:4px;width:auto;min-height:24px;padding:2px 6px;margin:4px 0 0;border:1px solid #b48640;border-radius:5px;background:#fff8e7;color:#795116;font-family:inherit;font-size:.68rem;line-height:1.3;font-weight:600;cursor:pointer}.shift-change-badge:hover{background:#ffefca}.shift-change-badge svg{flex-shrink:0}.student-day-shift>.shift-change-badge{float:right;margin:0 0 4px 8px}.calendar-shift.overnight-connected-end .shift-change-badge{visibility:hidden}.shift-change-dialog{box-sizing:border-box;width:calc(100% - 32px);max-width:440px;max-height:85dvh;overflow:auto;padding:24px;border:1px solid #d3e2df;border-radius:12px;color:#17383b}.shift-change-dialog::backdrop{background:#102c3066}.shift-change-dialog h2{margin-top:0;font-size:1.15rem}.shift-change-dialog dl{padding:12px;background:#f2f7f5;border-radius:8px}.shift-change-dialog dt{font-weight:700;margin-top:8px}.shift-change-dialog dt:first-child{margin-top:0}.shift-change-dialog dd{margin:4px 0 0;overflow-wrap:anywhere}.shift-change-dialog>button{display:block;margin-left:auto}@media print{.shift-change-badge,.shift-change-dialog{display:none!important}}
.planning-help{margin:0 0 1rem;padding:.8rem 1rem;border:1px solid #d3e2df;border-radius:10px;background:#fff}.planning-help summary{cursor:pointer;font-weight:600}.planning-help li{margin:.65rem 0}.publication-preview{max-width:34rem;width:calc(100% - 2rem);border:1px solid #d3e2df;border-radius:12px;padding:1.5rem}.publication-preview button{margin:.5rem .5rem 0 0}.publication-preview::backdrop{background:#102c3066}:focus-visible{outline:2px solid #176f61;outline-offset:3px}@media print{.planning-help{display:none}}

[data-student-management] .student-admin-access{display:block;width:auto;margin:4px 0 6px auto;padding:4px 0;border:0;background:transparent;color:#355e56;font-size:.75rem;font-weight:500;line-height:1.4}[data-student-management] .student-admin-access:hover{text-decoration:underline}.student-admin-dialog.is-access{max-width:440px}.student-admin-dialog.is-access .access-explanation{font-size:.9rem;line-height:1.6}.student-admin-dialog.is-access form>button{margin-top:20px}
@media(max-width:700px) {
 [data-account-kind="students"] .account-table { display: block; min-width: 0; }
 [data-account-kind="students"] .account-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
 [data-account-kind="students"] .account-table tbody { display: grid; gap: 14px; }
 [data-account-kind="students"] .account-table tr { display: grid; min-width: 0; padding: 14px; border: 1px solid #dce5e1; border-radius: 10px; }
 [data-account-kind="students"] .account-table td { display: block; min-width: 0; padding: 6px 0; border: 0; text-align: left; }
 [data-account-kind="students"] .account-table td:first-child > a { font-size: .95rem; font-weight: 650; }
 [data-account-kind="students"] .account-table td:nth-child(2)::before { content: 'Brugernavn'; }
 [data-account-kind="students"] .account-table td:nth-child(3)::before { content: 'Praktikperiode'; }
 [data-account-kind="students"] .account-table td:nth-child(2)::before,[data-account-kind="students"] .account-table td:nth-child(3)::before { display: block; font-size: .72rem; color: #5e7171; margin-bottom: 3px; }
 [data-account-kind="students"] .account-table td:last-child { border-top: 1px solid #e5ece8; margin-top: 8px; padding-top: 12px; text-align: left; }
 [data-account-kind="students"] .student-admin-access,[data-account-kind="students"] .student-admin-delete { margin-left: 0; min-height: 44px; text-align: left; }
 [data-account-kind="students"] .student-admin-edit { min-height: 44px; }
 [data-account-kind="students"] .account-activation { justify-content: flex-start; }
 [data-account-kind="students"] .account-table details[open] { min-width: 0; }
}
.completed-placement .account-table{min-width:620px;table-layout:auto}.completed-placement .account-table th:first-child{width:auto}.completed-placement .account-table td{overflow-wrap:normal}.completed-placement .account-table td:first-child,.completed-placement .account-table td:nth-child(2){white-space:nowrap}.completed-placement details{margin-top:16px}.completed-placement summary{cursor:pointer;font-weight:600;padding:8px 0}

/* Archived placements use the shared calendar with a read-only overview. */
.completed-placement .archive-back{display:inline-block;margin-bottom:24px;font-size:.85rem;text-decoration:none}
.archive-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.archive-heading h2{font-size:1.8rem;margin:4px 0 8px}.archive-heading p{margin:0 0 8px}
.archive-status{padding:7px 12px;border-radius:20px;background:#edf4f1;color:#48665f;font-size:.78rem;white-space:nowrap}
.archive-facts{display:flex;flex-wrap:wrap;gap:18px 48px;margin:20px 0 24px}
.archive-facts dt{font-size:.75rem;color:#6a807c;margin-bottom:5px}.archive-facts dd{margin:0;font-size:.9rem;font-weight:600}
.archive-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.archive-metrics>div{background:#f3f7f5;border:1px solid #e1eae6;border-radius:10px;padding:16px 20px}
.archive-metrics strong{display:block;font-size:1.55rem;line-height:1.3;color:#176b5b}.archive-metrics span{display:block;font-size:.8rem;color:#5d746e;margin-top:5px}
.archive-caption{font-size:.76rem;color:#6a807c;margin:12px 0 24px}
.archive-tabs{display:flex;gap:6px;border-bottom:1px solid #dce5e1;overflow-x:auto}
.archive-tabs a{display:flex;align-items:center;gap:8px;white-space:nowrap;padding:12px 14px;text-decoration:none;color:#627a73;border-bottom:2px solid transparent;font-size:.87rem}
.archive-tabs a[aria-current]{color:#176b5b;border-color:#176b5b;font-weight:700}.archive-tabs a:hover{background:#f5f8f7}
.archive-tabs a>span{background:#eef3f1;border-radius:10px;padding:1px 7px;font-size:.73rem}
.archive-content{padding-top:24px}.archive-section-heading h3{margin:0 0 5px}.archive-section-heading p{margin:0 0 20px;font-size:.82rem}
.archive-message{border-bottom:1px solid #e3ebe7;padding:16px 0}.archive-message>div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px}.archive-message p{margin:8px 0;font-size:.88rem}
.archive-empty{padding:28px 16px;background:#f5f8f6;border-radius:10px;color:#6a807c}
.completed-placement .archive-calendar{display:block;min-width:0}.archive-calendar .toolbar{gap:12px;flex-wrap:wrap;margin-bottom:14px}.archive-calendar .toolbar h3{margin:0;font-size:1.15rem}
.archive-calendar-scroll{overflow-x:auto;border-radius:10px}.archive-calendar .month-calendar{min-width:780px}.archive-calendar .month-calendar td{height:115px}
.archive-calendar .student-shift-notes{font-size:.73rem}.archive-calendar .calendar-shift-heading{cursor:default}
@media(max-width:600px){.archive-heading{flex-direction:column}.archive-heading h2{font-size:1.5rem}.archive-facts{gap:16px 24px}.archive-metrics{gap:7px}.archive-metrics>div{padding:12px 9px}.archive-metrics strong{font-size:1.15rem}.archive-metrics span{font-size:.7rem}.archive-tabs a{padding:11px 9px}.archive-content{padding-top:18px}}
.completed-placement .archive-heading{padding:0;border:0;background:none}.archive-calendar>.archive-calendar-scroll{display:block;position:relative}
.student-filters a{display:inline-flex;align-items:center;gap:7px}.student-filter-count{display:inline-flex;align-items:center;justify-content:center;min-width:21px;height:21px;padding:0 6px;border-radius:12px;background:#eaf0ed;color:#526d64;font-size:.72rem;font-variant-numeric:tabular-nums}.student-filters a[aria-current] .student-filter-count{background:#d1e5dd;color:#176b5b}

.quick-drag-preview{position:fixed;left:0;top:0;z-index:10001;pointer-events:none;padding:6px 10px;border:1px solid #176b5b;border-radius:6px;background:#edf6f1;color:#176b5b;font-size:.75rem;font-weight:700;white-space:nowrap;will-change:transform}.is-shift-dragging,.quick-preset,.draggable-draft{user-select:none}.is-shift-dragging{cursor:grabbing}
/* Published changes: a quiet badge beside the shift, separate from its edit link. */
.shift-change-badge{background:#edf5f7;color:#285e70;border:1px solid #c9dfe5;border-radius:999px;padding:3px 7px;gap:4px;font-size:.68rem;line-height:1.2;box-shadow:none}
.shift-change-badge:hover{background:#dcecf0;color:#174859}.shift-change-badge:focus-visible{outline:2px solid #176b5b;outline-offset:2px}
.staff-shift-wrap{position:relative;min-width:0}.staff-shift-wrap:has(>.shift-change-badge)>.shift-chip{padding-right:16px}
.staff-shift-wrap>.shift-change-badge{position:absolute;right:0;top:-3px;width:14px;height:14px;min-height:0;padding:1px;margin:0;font-size:0;gap:0;z-index:1;justify-content:center}
.staff-shift-wrap>.shift-change-badge svg{width:12px;height:12px}
.shift-change-dialog{max-width:490px;padding:24px;border-radius:16px;box-shadow:0 18px 60px #123b3b24}
.shift-change-eyebrow{display:block;color:#397080;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px}
.shift-change-dialog h2{margin:0;font-size:1.15rem}.shift-change-dialog>p{font-size:.85rem;line-height:1.5}
.shift-change-dialog dl{display:grid;grid-template-columns:40px 1fr;gap:12px;margin:18px 0;padding:16px;background:#f3f7f7;border:1px solid #e0e9e9;border-radius:10px}
.shift-change-dialog dt,.shift-change-dialog dd{margin:0;font-size:.85rem;line-height:1.5}.shift-change-dialog dt{color:#536d70}.shift-change-dialog dd:last-child{font-weight:650;color:#176b5b}
.staff-shift-wrap>.shift-chip{margin-top:0;margin-bottom:0}.planner-month-table .staff-shift-wrap>.month-shift-chip{width:100%;min-width:0;min-height:25px;box-sizing:border-box}
/* Secondary location line, kept visually separate from the shift time. */
.shift-location,.shift-chip .shift-location{display:grid;grid-template-columns:13px auto minmax(0,1fr);align-items:baseline;column-gap:5px;max-width:100%;margin-top:5px;font-size:.75rem;line-height:1.45;font-weight:400;color:inherit}
.shift-location>svg{align-self:start;margin-top:2px;opacity:.7;flex-shrink:0}
.shift-location .shift-location-label{display:inline;font-size:.68rem;font-weight:400;opacity:.8;white-space:nowrap}
.shift-location .shift-location-value{display:inline;min-width:0;font-size:.75rem;font-weight:550;overflow-wrap:anywhere;white-space:normal}
/* Ended staff shifts retain their type colours and draft/absence markings. */
.staff-shift-wrap>.shift-chip.is-past-planned{opacity:.65}
.staff-shift-wrap>.shift-chip.is-past-planned:hover{filter:none;opacity:.85}

.staff-shift-wrap>.shift-chip.is-past-planned.is-sick{opacity:.9;box-shadow:none}
.planner-scroll.is-panning tbody{pointer-events:none}
@media screen{.planner-scroll .pan-offscreen-row{visibility:hidden}}
/* Today remains easy to follow through the entire staff timetable. */
.planner thead th.is-today,.planner.planner-month-table .month-date-heading th.is-today{background:#176b5b;color:#fff;box-shadow:inset 0 -3px 0 #0b463b}
.planner thead th.is-today>span{color:#fff;font-weight:800}
.planner tbody td.is-today{background-color:#e3f1eb;box-shadow:inset 2px 0 0 #80b6a5,inset -2px 0 0 #80b6a5}
/* Student mobile overview: get to the actual shifts sooner. */
@media(max-width:999px){
 body>header.student-header{padding:10px 16px;row-gap:2px}
 body>header.student-header a.brand{width:112px}
 body>header.student-header .header-department{padding-top:2px;gap:6px}
 body>header.student-header>nav{padding-top:4px;gap:18px}
 body>header.student-header>form button{padding:7px 12px;min-height:36px}
 body>.workspace.app-workspace:has(.student-week){padding:14px 12px 20px}
 body>.workspace.app-workspace:has(.student-week) .intro{margin-bottom:8px}
 body>.workspace.app-workspace:has(.student-week) .intro .eyebrow{display:none}
 body>.workspace.app-workspace:has(.student-week) .intro h1{font-size:1.25rem;line-height:1.2;margin:0}
 body>.workspace.app-workspace:has(.student-week) .request-notice{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;margin:0 0 10px;padding:0;border:0;background:none;border-radius:0}
 body>.workspace.app-workspace:has(.student-week) .request-notice>div{display:none}
 body>.workspace.app-workspace:has(.student-week) .request-notice>a{padding:6px 10px;min-height:32px;font-size:.75rem;border-radius:8px;background:#e8f3ef;border-color:#d0e4dc}
 body>.workspace.app-workspace .student-week>.panel{padding:12px;border-radius:12px}
 .student-week-heading{margin-bottom:6px;padding-bottom:10px;border-bottom:1px solid #dfebe6}
 .student-week-title{margin-bottom:4px;gap:6px}
 .student-week-title h2{font-size:1rem}
 .student-week-title .weeknav{gap:4px}
 .student-week-title .button{padding:6px 8px;min-height:36px;min-width:36px;font-size:.72rem}
 .student-week-heading>p{display:inline;font-size:.7rem;line-height:1.5}
 .student-week-heading>p+p::before{content:' · ';color:#8aa19a}
 .student-week .student-day{padding:10px 0;gap:8px}
 .student-week .student-day:first-of-type{border-top:0;padding-top:4px}
 .student-week .student-day>.date{width:34px;min-width:34px;padding:4px 0}
 .student-week .student-day>.date strong{font-size:1rem}
 .student-week .student-day-empty{padding:5px 0;align-items:center;border-radius:6px}
 .student-week .student-day-empty>.date{min-height:0;height:auto;display:flex;align-items:baseline;justify-content:center;gap:3px;width:52px;min-width:52px;padding:4px 0;background:none}
 .student-week .student-day-empty>.date strong{font-size:.83rem}
 .student-week .student-day-empty .shiftbody>p{margin:0;font-size:.7rem}
 body:has(.student-week)>footer{padding:18px 12px;margin-top:0}
}
@media(max-width:999px){
 body>.workspace.app-workspace:has(.student-week):has(.request-notice){display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;align-items:center}
 body>.workspace.app-workspace:has(.student-week):has(.request-notice)>*{grid-column:1/-1}
 body>.workspace.app-workspace:has(.student-week):has(.request-notice)>.intro{grid-column:1;grid-row:1;margin:0 0 10px}
 body>.workspace.app-workspace:has(.student-week):has(.request-notice)>.request-notice{grid-column:2;grid-row:1}
}
.quick-pending-shift{position:absolute;bottom:2px;left:2px;right:2px;z-index:2;pointer-events:none;margin:0;padding:3px 2px;border:1px dashed #78a496;border-radius:4px;background:#eef6f2;color:#376e5d;font-size:.58rem;text-align:center;white-space:nowrap}
.planner-month-table td:has(.quick-pending-shift){position:relative}
html:has(.publication-preview[open]),body:has(.publication-preview[open]){overflow:hidden;overscroll-behavior:none}
.draft-delete-zone{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:10000;box-sizing:border-box;width:min(360px,calc(100vw - 32px));padding:18px 24px;border:2px dashed #b45454;border-radius:12px;background:#fff5f4;color:#873b3b;text-align:center;box-shadow:0 6px 24px #0002}
.draft-delete-zone[hidden]{display:none}
.is-selected-shift{outline:3px solid #217fbd!important;outline-offset:-1px;box-shadow:0 0 0 2px #fff!important}
.is-shift-dragging .is-selected-shift{opacity:.45}
td.selection-landing-cell{position:relative;box-shadow:inset 0 0 0 2px #217fbd;background-color:#eaf5fc!important}
.selection-landing{position:absolute;inset:3px 2px auto;min-height:24px;z-index:4;pointer-events:none}
.selection-landing>.selection-landing-chip{position:absolute;left:0;width:100%;height:24px}
.selection-landing-continuation{visibility:hidden}
.selection-landing .selection-landing-band.is-landing-blocked{border-color:#b83c49;background:#ffe8eb;color:#922d38}
.selection-landing .selection-landing-band.is-landing-warning{border-color:#b17b22;background:#fff3d5;color:#805410}
.selection-landing-chip{display:block;box-sizing:border-box;min-height:24px;padding:3px 1px;border:2px dashed #217fbd;border-radius:4px;background:#e4f3ff;color:#165f8f;font-size:.65rem;font-weight:700;line-height:14px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
td.selection-landing-invalid{box-shadow:inset 0 0 0 2px #b83c49;background-color:#fff1f2!important}
.selection-landing-invalid .selection-landing-chip{border-color:#b83c49;background:#ffe8eb;color:#922d38}
.selection-overlap-blocker{outline:2px solid #b83c49!important;outline-offset:1px}
.quick-drag-preview{max-width:min(360px,calc(100vw - 24px));white-space:normal;line-height:1.45}
.quick-drag-preview.is-conflict{border-color:#b83c49;background:#fff1f2;color:#922d38}
.planner-save-status{position:fixed;left:18px;bottom:18px;z-index:12;min-width:118px;box-sizing:border-box;padding:8px 12px;border:1px solid #d3e3dc;border-radius:20px;background:#f7fbf9;color:#426b5d;font-size:.75rem;box-shadow:0 2px 10px #143d3210;pointer-events:none}
.planner-save-status::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:#4d9274;margin-right:8px}
.planner-save-status[data-state=saving]::before{background:#b1812f}
.planner-save-status[data-state=error]{color:#983d45}.planner-save-status[data-state=error]::before{background:#b84c54}
@media screen{th.planner-pointed{background:#d3e9e1!important;color:#12584c!important}td.planner-pointed{box-shadow:inset 0 0 0 2px #80b4a6}}
.shift-context-menu{position:fixed;z-index:10010;min-width:180px;padding:6px;background:#fff;border:1px solid #cfdfd8;border-radius:12px;box-shadow:0 8px 28px #173f3929}
.shift-context-menu button{display:block;width:100%;margin:0;padding:9px 12px;text-align:left;border:0;border-radius:7px;background:transparent;color:#244c42;font-size:.85rem}
.shift-context-menu button:hover,.shift-context-menu button:focus-visible{background:#edf5f1;outline:2px solid #80b4a6;outline-offset:-2px}
.shift-context-menu button.is-danger{color:#a43845}
@keyframes shift-saved-flash{0%,35%{box-shadow:0 0 0 3px #42a789}100%{box-shadow:0 0 0 3px transparent}}
.shift-just-saved{animation:shift-saved-flash 1.2s ease-out}
.editor-extras{margin:16px 0 0;padding-top:12px;border-top:1px solid #dfebe5}.editor-extras>summary{cursor:pointer;font-size:.85rem;font-weight:600;color:#426b5d}.editor-extras[open]>summary{margin-bottom:12px}
#shift-dialog .shift-values>.shift-presets,#shift-dialog .shift-values>.editor-extras{grid-column:1/-1}
.shift-editor .shift-values>label:first-of-type{font-weight:650}.shift-editor .datetime-fields{padding:10px 12px;background:#f4f8f6;border-radius:9px}
.shift-editor .shift-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;border-top:1px solid #dce7e1;padding-top:18px}
.editor-secondary-actions,.editor-primary-actions{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px}.editor-primary-actions{margin-left:auto}.editor-secondary-actions button,.editor-secondary-actions summary{font-size:.8rem}.editor-primary-actions .publish-action{border-color:#176b5b}
.editor-secondary-actions>details,.editor-secondary-actions>form{margin:0}.editor-secondary-actions .check input{width:20px;height:20px;flex:0 0 20px;margin:0}
.planner-save-status{width:150px}
@media(prefers-reduced-motion:reduce){.shift-just-saved{animation:none;outline:2px solid #42a789}}
@media print{.planner-save-status,.shift-context-menu{display:none!important}.planner-pointed{box-shadow:none!important}.shift-just-saved{animation:none;outline:none}}
.quick-drag-preview{white-space:pre-line}
.quick-drag-preview.is-warning{border-color:#b17b22;background:#fff8e8;color:#805410}
td.selection-landing-warning{box-shadow:inset 0 0 0 2px #b17b22;background-color:#fff8e8!important}
.selection-landing-warning .selection-landing-chip{border-color:#b17b22;background:#fff3d5;color:#805410}
.selection-overlap-warning{outline:2px solid #b17b22!important;outline-offset:1px}
@media print{.selection-landing{display:none!important}td.selection-landing-cell{box-shadow:none!important}}
.shift-selection-box{position:fixed;z-index:10002;border:1px solid #217fbd;background:#217fbd26;pointer-events:none;box-sizing:border-box}
.shift-selection-toolbar{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:90;display:flex;align-items:center;flex-wrap:wrap;gap:10px;width:max-content;max-width:calc(100vw - 32px);box-sizing:border-box;padding:12px 16px;border:1px solid #b8cec3;border-radius:14px;background:#fff;box-shadow:0 6px 28px #163e3030;font-size:.85rem}
.shift-selection-toolbar strong{margin-right:8px}
.shift-selection-toolbar button{padding:8px 12px;font-size:.8rem}
.shift-selection-toolbar[hidden],.shift-selection-box[hidden]{display:none}
.workspace[data-shift-selection] .quick-shifts{visibility:hidden}
.is-selecting-shifts{user-select:none;cursor:crosshair}
.selection-move-dialog{box-sizing:border-box;width:min(460px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;padding:24px;border:1px solid #cfdfd8;border-radius:16px;background:#fff;color:#183c40;box-shadow:0 12px 48px #183c4033}
.selection-move-dialog::backdrop{background:#163b4266}
.selection-move-dialog h2{margin-top:0;font-size:1.2rem}
.selection-move-dialog p{line-height:1.5}
.selection-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.empty-state{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px;margin:18px 0;border:1px dashed #bccfc7;border-radius:14px;background:#f8fbfa;color:#355d52}
.empty-state[hidden]{display:none}
.empty-state strong{font-size:1rem}
.empty-state button[hidden]{display:none}
.rolling-calendar-hint button{pointer-events:auto;align-self:center;white-space:nowrap}
.rolling-calendar-hint button[hidden]{display:none}
.history-group{margin:16px 0;border:1px solid #d5e2dc;border-radius:12px;padding:16px 20px}
.history-group>summary{cursor:pointer;color:#245d50}
.history-group>summary>span{display:block;margin:4px 0 0 18px;font-size:.8rem;color:#60756e}
.history-open{display:inline-block;margin-bottom:12px;font-size:.85rem}
@media(max-width:700px){.empty-state{align-items:flex-start;flex-direction:column;gap:12px}.history-group{padding:14px}.rolling-calendar-hint[data-state=error]{flex-wrap:nowrap}}
@media print{.empty-state{display:none!important}}
/* Student calendar: an uncluttered week first, month only when selected. */
@media screen{
 .student-schedule-view[data-student-view=week] .student-month{display:none}
 .student-schedule-view[data-student-view=week] .student-week{display:block}
 .student-schedule-view[data-student-view=month] .student-month{display:block}
 .student-schedule-view[data-student-view=month] .student-week{display:none}
 .workspace:has(.student-schedule-view[data-student-view=week]){max-width:960px}
}
.student-view-switch{display:flex;gap:4px;width:fit-content;padding:4px;border:1px solid #d2dfd8;background:#eaf1ed;border-radius:10px;margin:0 0 14px auto}
.student-view-switch a{padding:6px 18px;text-decoration:none;color:#46675c;border-radius:7px;font-size:.85rem}
.student-view-switch a[aria-current]{background:#fff;color:#15594f;font-weight:700;box-shadow:0 1px 3px #183c4017}
.student-month-day-open{display:none}
.student-month-day-dialog{box-sizing:border-box;width:calc(100% - 24px);max-width:480px;max-height:85dvh;padding:20px;overflow:auto;color:#17383b}
.student-month-day-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}
.student-month-day-heading h2{margin:0;font-size:1.05rem;text-transform:capitalize}
.student-month-day-heading button{min-height:42px}
.student-month-day-body .calendar-shift,.student-month-day-body .activity-chip{padding:12px;margin:0 0 10px;overflow-wrap:anywhere}
.student-month-day-body .calendar-shift-heading strong{font-size:.95rem}
.student-month-day-body .calendar-shift-heading span{font-size:.8rem}
.student-month-day-body .student-shift-notes{font-size:.85rem;line-height:1.5}
body:has(.student-month-day-dialog[open]){overflow:hidden}
@media screen and (max-width:700px){
 .student-schedule-view .student-month .toolbar{display:flex;flex-wrap:wrap;gap:12px}
 .student-schedule-view .student-month .month-title{font-size:1.35rem}
 .student-schedule-view .student-month .weeknav{display:flex;width:100%;gap:6px}
 .student-schedule-view .student-month .weeknav a{display:flex;align-items:center;justify-content:center;min-height:42px;min-width:42px;box-sizing:border-box;padding:8px;font-size:.76rem}
 .student-schedule-view .student-month .weeknav a:nth-child(2){flex:1}
 .student-schedule-view .student-month [data-print-calendar]{display:none}
 .student-schedule-view .student-month .month-calendar{width:100%;min-width:0;table-layout:fixed;border-radius:12px}
 .student-schedule-view .student-month .month-calendar th{padding:10px 0;text-align:center;font-size:0}
 .student-schedule-view .student-month .month-calendar th::first-letter{font-size:.75rem}
 .student-schedule-view .student-month .month-calendar td{position:relative;height:86px;padding:5px 2px;vertical-align:top}
 .student-schedule-view .student-month .calendar-day{display:flex;width:26px;min-width:26px;height:26px;margin:0 auto 4px;padding:0;font-size:.72rem}
 .student-schedule-view .student-month .calendar-week-label,.student-schedule-view .student-month .placement-day-label,.student-schedule-view .student-month .holiday-label{display:none}
 .student-schedule-view .student-month .month-calendar .calendar-shift,.student-schedule-view .student-month .month-calendar .activity-chip,.student-schedule-view .student-month .month-calendar .calendar-request{box-sizing:border-box;display:block;min-width:0;min-height:24px;margin:3px 0;padding:4px 1px;border-radius:4px;border-left-width:2px;text-align:center;font-size:.62rem}
 .student-schedule-view .student-month .month-calendar :is(.calendar-shift,.activity-chip,.calendar-request)>*{display:none}
 .student-schedule-view .student-month .month-calendar .calendar-shift::before{content:attr(data-mobile-label);display:block;font-size:.62rem;font-weight:650;line-height:16px;white-space:nowrap}
 .student-schedule-view .student-month .month-calendar .activity-chip::before{content:'A';font-weight:650}
 .student-schedule-view .student-month .month-calendar .calendar-request::before{content:'♥';font-weight:650}
 .student-schedule-view .student-month .request-day-link{display:none}
 .student-schedule-view .student-month .student-month-day-open{display:block;position:absolute;inset:0;z-index:5;width:100%;height:100%;padding:0;min-width:0;border:0;border-radius:0;background:transparent}
 .student-schedule-view .student-month .student-month-day-open:focus-visible{outline-offset:-3px}
 .student-schedule-view .student-month .student-month-day-open:active{background:#176b5b0b}
 .student-schedule-view .student-month .overnight-connectors{display:none}
 .student-schedule-view .student-month .month-calendar [data-overnight-part=start]::before{content:attr(data-mobile-label) ' →'}
 .student-schedule-view .student-month .month-calendar [data-overnight-part=continuation]::before{content:'← ' attr(data-mobile-label)}
}
.student-day-events{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-items:start}
.student-day-events:has(.student-day-activities){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.student-day-duty,.student-day-activities{min-width:0}
.student-week .student-day:has(.student-day-timeline){display:block}
.student-week .student-day:has(.student-day-timeline)>.date{display:flex;flex-direction:row;align-items:center;gap:6px;width:fit-content;min-width:0;min-height:0;height:auto;padding:4px 8px;margin-bottom:14px;border-radius:6px}
.student-day-timeline{position:relative;margin:12px 0 14px 44px}
.student-day-timeline.is-ready{display:grid;grid-template-columns:repeat(var(--timeline-lanes),minmax(0,1fr));grid-auto-rows:0}
.student-time-tick{position:relative;grid-column:1/-1;align-self:start;height:0;border-top:1px solid #dce7e3;pointer-events:none}
.student-time-tick time{position:absolute;right:calc(100% + 7px);top:-8px;font-size:.65rem;line-height:16px;font-variant-numeric:tabular-nums;color:#526c6b;white-space:nowrap}
.student-timeline-lanes{display:contents}
.student-timeline-event{position:relative;display:flex;box-sizing:border-box;padding:0 3px;min-width:0}
.student-week .student-timeline-event>.student-day-shift,.student-week .student-timeline-event>.activity-chip{box-sizing:border-box;flex:1;min-width:0;min-height:0;margin:0;padding:5px 7px;border-radius:5px;overflow-wrap:anywhere}
.student-timeline-event .student-shift-title{clear:both;flex-wrap:wrap}
.student-timeline-event .student-shift-title h3{font-size:.85rem;white-space:nowrap}
.student-timeline-event .activity-chip summary{padding:0}
.student-timeline-event .activity-kind,.student-timeline-event .activity-more,.student-timeline-event .activity-progress-label{display:none}
.student-timeline-event .activity-chip strong{font-size:.78rem;line-height:1.2;overflow-wrap:anywhere}
.student-timeline-event .activity-time{display:block;font-size:.7rem;line-height:1.3;white-space:nowrap}
.student-untimed-events{display:grid;gap:8px;margin-bottom:12px}
.student-day-timeline:not(.is-ready){height:auto;margin-left:0}
.student-day-timeline:not(.is-ready) .student-time-tick{display:none}
.student-day-timeline:not(.is-ready) .student-timeline-lanes,.student-day-timeline:not(.is-ready) .student-timeline-event{position:static;width:auto;height:auto}
/* A compact, touch-friendly week with the same hierarchy on every day. */
@media screen and (max-width:600px){
 body>.workspace.app-workspace .student-week>.panel{padding:12px 8px 8px;border-radius:18px;background:#f7faf9;border-color:#dce8e3;box-shadow:0 3px 16px #173c3606}
 .student-week .student-week-heading{padding:2px 4px 14px;margin-bottom:8px;border-bottom:0}
 .student-week .student-week-title{gap:8px;margin-bottom:8px}
 .student-week .student-week-title h2{font-size:1.12rem;letter-spacing:-.025em}
 .student-week .student-week-title .weeknav{gap:5px}
 .student-week .student-week-title .button{min-height:42px;min-width:42px;padding:8px;font-size:.75rem;border-color:#d6e3de;background:#fff;box-shadow:0 1px 2px #163b3305}
 .student-week .student-week-heading>p{color:#607970;font-size:.7rem}
 .student-schedule-view .student-view-switch{padding:3px;border-color:#d6e3de;background:#e8f0ec;border-radius:12px;margin-bottom:12px}
 .student-schedule-view .student-view-switch a{display:flex;align-items:center;justify-content:center;min-height:40px;min-width:70px;box-sizing:border-box;padding:8px 16px;border-radius:9px}
 .student-week .student-day,.student-week .student-day:first-of-type{display:block;padding:10px 8px;margin:0 0 8px;border:1px solid #e2eae6;border-radius:12px;background:#fff}
 .student-week .student-day:last-child{margin-bottom:0;padding-bottom:10px}
 .student-week .student-day.is-weekend{background:#f1f5f7;border-color:#e0e7eb}
 .student-week .student-day>.date,.student-week .student-day:has(.student-day-timeline)>.date{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;width:auto;min-width:0;min-height:0;height:auto;padding:0;margin:0 0 12px;background:none;color:#294f46;border-radius:0}
 .student-week .student-day>.date strong{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:#edf3f0;font-size:.94rem;font-variant-numeric:tabular-nums}
 .student-week .student-day>.date>span{font-size:.76rem;font-weight:600}
 .student-week .student-day.is-today>.date{background:none;color:#176b5b;min-height:0;height:auto;padding:0}
 .student-week .student-day>.date .today-caption{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 .student-week .student-day.is-weekend>.date strong{background:#e2eaf0;color:#42596b}
 .student-week .student-day.is-weekend:not(.is-today)>.date{background:none;color:#42596b}
 .student-week .student-day.is-today>.date strong{background:#dcefe5;color:#176b5b}
 .student-week .student-day.is-today>.date>span:not(.today-caption){font-weight:700}
 .student-week .student-day-shift.is-current[data-study="1"]{box-shadow:none}
 .student-week .student-day-shift.is-current[data-study="1"]:not(.is-sick) .shift-progress-label{display:none}
 .student-week .student-day-timeline{margin:14px 0 8px 38px}
 .student-week .student-time-tick{border-color:#e6eeea}
 .student-week .student-time-tick time{font-size:.62rem;color:#637b73;font-weight:500}
 .student-week .student-timeline-event{padding:0 2px}
 .student-week .student-timeline-event>.student-day-shift,.student-week .student-timeline-event>.activity-chip{padding:7px 8px;border-radius:7px}
 .student-week .student-timeline-event .student-shift-title h3{font-size:.83rem;letter-spacing:-.015em}
 .student-week .student-timeline-event .activity-chip strong{font-size:.76rem;line-height:1.3}
 .student-week .student-timeline-event .activity-time{margin-top:2px;font-variant-numeric:tabular-nums}
 .student-week .student-shift-notes{font-size:.75rem;line-height:1.5}
 .student-week .student-untimed-events{margin:0 2px 0 40px}
 .student-week .student-day.student-day-empty{display:flex;align-items:center;gap:10px;padding:8px}
 .student-week .student-day.student-day-empty>.date{margin:0;flex-shrink:0}
 .student-week .student-day-empty .shiftbody>p{font-size:.68rem;line-height:1.4;margin:0;color:#697e77}
}
.student-day-events .activity-chip{margin-top:0;overflow-wrap:anywhere}
.student-day-events .activity-time{font-weight:700;font-size:.85rem;white-space:nowrap}
.student-day-events .student-shift-title{flex-wrap:wrap;clear:both}
.student-day-events .student-shift-title h3,.student-day-events .shift-progress-label{white-space:nowrap}
.activity-chip .shift-publication-icon{float:right;display:inline-flex;width:14px;height:14px;margin:0 0 2px 4px}
.month-activity-chip .shift-publication-icon{display:none}
.activity-chip[data-publication-state]:not([data-publication-state=published]){background-image:repeating-linear-gradient(135deg,#182f301f 0 2px,#ffffffa6 2px 4px,transparent 4px 8px);outline:2px dashed currentColor;outline-offset:-2px}
@media print{.student-view-switch{display:none!important}}
/* Shared controls keep compact calendar tools compact. */
:root{--ui-radius:8px;--ui-dialog-radius:14px;--ui-border:#cfddd7;--ui-focus:#176f61;--ui-action-gap:10px}
body dialog[open],body #shift-dialog{border-color:var(--ui-border);border-radius:var(--ui-dialog-radius);box-shadow:0 16px 48px #183c4029}
body dialog[open]::backdrop{background:#183c4066}
body :is(button,.button,input,select,textarea){border-radius:var(--ui-radius)}
body :is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--ui-focus);outline-offset:3px}
body .overnight-surface [data-overnight-id]:focus-visible{outline:2px solid var(--ui-focus);outline-offset:2px}
body :is(.editor-primary-actions,.editor-secondary-actions,.selection-dialog-actions,.delete-confirmation-actions,.account-form-actions){gap:var(--ui-action-gap);align-items:center}
body :is(.editor-primary-actions,.editor-secondary-actions,.selection-dialog-actions,.delete-confirmation-actions,.account-form-actions) :is(button,.button){min-height:38px;padding:8px 14px;line-height:1.4}
body :is(.account-settings,.student-admin-dialog) label{line-height:1.4}
@media screen{
 .is-shift-dragging .is-drag-companion{opacity:.55;outline:2px dashed #247ca3;outline-offset:1px}
 .is-shift-dragging .is-drag-anchor{opacity:1;outline:3px solid #14668d;outline-offset:2px;box-shadow:0 0 0 4px #fff;position:relative;z-index:3}
 .selection-landing-chip.is-landing-anchor{outline:2px solid currentColor;outline-offset:1px;font-weight:800}
}
html:has(.selection-move-dialog[open]),body:has(.selection-move-dialog[open]){overflow:hidden;overscroll-behavior:none}
@media(max-width:600px){.shift-selection-toolbar{justify-content:center}.shift-selection-toolbar strong{flex-basis:100%;text-align:center}}
@media print{.shift-selection-toolbar,.shift-selection-box,.selection-move-dialog{display:none!important}.is-selected-shift{outline:none!important;box-shadow:none!important}}
.shift-chip.is-deleting{opacity:.4;cursor:progress;pointer-events:none}
.draft-delete-zone strong,.draft-delete-zone span{display:block}
.draft-delete-zone span{margin-top:6px;font-size:.75rem}
.draft-delete-zone.is-target{border-style:solid;background:#8e3434;color:#fff}
.workspace:has(.draft-delete-zone:not([hidden])) .quick-shifts{visibility:hidden}
@media print{.draft-delete-zone{display:none!important}}
.quick-feedback{display:grid;margin-top:8px}
.quick-shifts .quick-feedback>p{grid-area:1/1;margin:0;min-height:4.2em}
.quick-shifts [data-quick-pending]{font-weight:600;color:#176b5b;visibility:hidden}
.quick-shifts[aria-busy=true]{opacity:1}
.quick-shifts[aria-busy=true] [data-quick-pending]{visibility:visible}
.quick-shifts[aria-busy=true] [data-quick-hint]{visibility:hidden}
.quick-shifts.is-collapsed>.quick-feedback{display:none}
.planner-month-table .calendar-request-compact{margin:0 0 3px;border-radius:3px}
.shift-chip .approved-wish-marker{display:inline-flex;align-items:center;gap:3px;margin-right:3px;font-size:.65rem;line-height:1;vertical-align:baseline}
.approved-wish-marker svg{flex:none}
.month-shift-chip .approved-wish-marker>span{display:none}
.planner-month-table .month-shift-chip:has(.approved-wish-marker){padding-left:11px}
.month-shift-chip .approved-wish-marker{position:absolute;left:2px;top:50%;transform:translateY(-50%);margin:0;color:inherit;padding:0}
.month-shift-chip .approved-wish-marker svg{width:9px;height:9px}
.calendar-request-symbol{display:inline-flex;align-items:center}
.calendar-request.day-shift{--wish-bg:var(--schedule-day-bg);--wish-text:var(--schedule-day-text);--wish-edge:var(--schedule-day-edge)}
.calendar-request.evening-shift{--wish-bg:var(--schedule-evening-bg);--wish-text:var(--schedule-evening-text);--wish-edge:var(--schedule-evening-edge)}
.calendar-request.night-shift{--wish-bg:var(--schedule-night-bg);--wish-text:var(--schedule-night-text);--wish-edge:var(--schedule-night-edge)}
.calendar-request.study-shift{--wish-bg:var(--schedule-study-bg);--wish-text:var(--schedule-study-text);--wish-edge:var(--schedule-study-edge)}
.calendar-request.off-shift{--wish-bg:var(--schedule-off-bg);--wish-text:var(--schedule-off-text);--wish-edge:var(--schedule-off-edge)}
.calendar-request.zero-shift{--wish-bg:var(--schedule-zero-bg);--wish-text:var(--schedule-zero-text);--wish-edge:var(--schedule-zero-edge)}
.calendar-request.vacation-shift{--wish-bg:var(--schedule-vacation-bg);--wish-text:var(--schedule-vacation-text);--wish-edge:var(--schedule-vacation-edge)}
.calendar-request.custom-shift{--wish-bg:var(--schedule-custom-bg);--wish-text:var(--schedule-custom-text);--wish-edge:var(--schedule-custom-edge)}
.calendar-request,.calendar-request:hover{background:var(--template-bg,var(--wish-bg,#fff5df));color:var(--template-text,var(--wish-text,#745019));border-color:var(--template-edge,var(--wish-edge,#b77c22))}
.calendar-request:hover{box-shadow:inset 0 0 0 1px var(--template-edge,var(--wish-edge,#b77c22))}
.calendar-request .calendar-request-label{display:inline-flex;justify-content:center;align-items:center;gap:3px}
.planner .calendar-request-compact>strong{display:block;flex-basis:100%;min-width:0;box-sizing:border-box;padding-left:7px;font-size:.6rem;line-height:14px;white-space:nowrap}
.planner .calendar-request-compact .calendar-request-label{font-size:.5rem;white-space:nowrap;gap:0}
.calendar-request-compact .calendar-request-symbol{position:absolute;left:1px;top:7px}
.calendar-request-compact .calendar-request-symbol svg{width:7px;height:7px}
.shift-request-origin{margin:10px 0 16px;padding:12px 14px;border:1px solid #cbded6;border-left:3px solid #438675;border-radius:8px;background:#f1f7f4;font-size:.8rem;line-height:1.5}
.shift-request-origin-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 12px}
.shift-request-origin-heading>strong{display:inline-flex;align-items:center;gap:7px;color:#215f52}
.shift-request-origin-heading>strong svg{width:16px;height:16px}
.shift-request-origin-heading>span{font-size:.72rem;color:#41655c}
.shift-request-origin p{margin:5px 0 0}
.shift-request-origin [data-origin-summary]{font-weight:600}
.shift-request-origin details{margin-top:8px}
.shift-request-origin summary{font-size:.75rem;color:#28695c}
.shift-request-origin details>div{padding-top:8px}
.shift-request-origin details p{white-space:pre-wrap;overflow-wrap:anywhere;margin:3px 0 10px}
.shift-request-origin details a{font-size:.75rem}
.template-time-hint{padding:8px 10px;border-left:3px solid #a78346;background:#faf5e9;color:#6f562f;font-size:.8rem;border-radius:4px;margin:10px 0}
.compact-shift-markers{position:absolute;top:-5px;right:1px;display:flex;align-items:center;gap:2px;max-width:calc(100% - 2px);z-index:2;line-height:1;pointer-events:none}
.compact-shift-markers:empty{display:none}
.compact-shift-markers>.approved-wish-marker,.compact-shift-markers>.adapted-time-marker,.compact-shift-markers>.shift-change-badge{position:static;display:flex;align-items:center;justify-content:center;flex:0 1 14px;min-width:0;width:14px;height:14px;min-height:0;padding:1px;margin:0;border:0;border-radius:3px;box-sizing:border-box;background:#f5faff;box-shadow:0 0 0 1px #c7ddeb;font-size:0;gap:0}
.compact-shift-markers>.approved-wish-marker{color:#8b632e;background:#fff9ed;box-shadow:0 0 0 1px #e3d4ba}
.compact-shift-markers>.adapted-time-marker{color:#086bad;background:#e8f5ff}
.compact-shift-markers>*>svg{width:100%;height:100%;min-width:0;flex:1}
.compact-shift-markers>button{pointer-events:auto;cursor:help}
.compact-shift-markers>[data-shift-change]{cursor:pointer}
.compact-shift-markers>button:focus-visible{outline:2px solid #176da5;outline-offset:2px}
.shift-marker-help{position:fixed;inset:auto;margin:0;z-index:100;width:290px;max-width:calc(100vw - 16px);padding:12px 14px;border:1px solid #c9dce8;border-radius:10px;background:#fff;color:#29454c;box-shadow:0 5px 20px #143c3026;font-size:.78rem;line-height:1.5;box-sizing:border-box}
.shift-marker-help p{margin:0}
.shift-marker-help p+p{margin-top:10px;padding-top:10px;border-top:1px solid #e3ebef}
.shift-marker-help strong,.shift-marker-help span{display:block}
.shift-marker-help strong{margin-bottom:2px;color:#205c80}
.wish-origin-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 14px;width:14px;height:14px;padding:1px;box-sizing:border-box;border:0;border-radius:3px;color:#8b632e;background:#fff9ed;box-shadow:0 0 0 1px #e3d4ba;line-height:1}
.wish-origin-icon>svg{width:100%;height:100%;flex:1;min-width:0}
.calendar-request>.wish-origin-icon{position:absolute;top:-5px;right:1px;z-index:2}
.planner .calendar-request-compact>strong{padding-left:0}
.student-wish-badge{color:#785828;background:transparent;padding:2px 0;gap:6px}
.student-wish-badge:hover{background:transparent}
.student-wish-badge .wish-origin-icon{margin:1px}
.template-time-hint{border-left-color:#3887b8;background:#eef7fd;color:#245f85}
/* System administration: consistent navigation and compact department tools. */
.admin-tabs{display:flex;gap:.35rem;flex-wrap:wrap;border-bottom:1px solid #cddcda;margin:0 0 1rem;padding:0 0 .65rem}.admin-tabs a{display:block;padding:.6rem .9rem;border-radius:8px;color:#335c56;text-decoration:none;font-weight:600}.admin-tabs a:hover{background:#e5eeeb}.admin-tabs a[aria-current=page]{background:#176b5b;color:#fff}.admin-search{align-items:end;flex-wrap:wrap}.admin-search label:first-child{flex:1;min-width:190px}.admin-department{gap:1rem}.admin-department h3{margin-bottom:.25rem}.admin-department .admin-actions{align-items:center;flex-wrap:wrap}.admin-stats article{position:relative}.admin-stats article>a{font-size:.8rem}.admin-access-page{max-width:1000px}@media(max-width:640px){.admin-tabs{gap:.15rem}.admin-tabs a{padding:.5rem .65rem;font-size:.85rem}.admin-detail-heading{align-items:flex-start;gap:.65rem}.admin-department .admin-actions{width:100%}.admin-department .admin-actions a{flex:1;text-align:center}}
.restore-columns{display:grid;grid-template-columns:minmax(0,2fr) minmax(250px,1fr);gap:20px;align-items:start}.restore-columns .panel{min-width:0}.admin-restore label{margin:16px 0}.admin-restore code{overflow-wrap:anywhere}.restore-warning{padding:14px;background:#fff0db;color:#764c11;border-radius:8px}.restore-result{border-left:4px solid #176b5b;overflow-wrap:anywhere}.restore-table{overflow:auto}.restore-table table{width:100%;border-collapse:collapse;font-size:.82rem}.restore-table th,.restore-table td{padding:9px 7px;text-align:left;border-bottom:1px solid #dce6e2}.restore-table thead{background:#eef4f1}.restore-cancel{margin-top:12px}@media(max-width:760px){.restore-columns{grid-template-columns:1fr}.admin-restore .admin-heading{align-items:flex-start;flex-direction:column}}
.publication-preview{max-width:58rem;max-height:calc(100dvh - 2rem);overflow:auto;box-sizing:border-box}
.publication-preview-content{min-width:0}
.publication-change{border:1px solid #d3e2df;border-radius:10px;padding:1rem;margin:1rem 0;background:#fff}
.publication-change h3{margin:0 0 .8rem;font-size:1rem}
.publication-comparison{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.publication-comparison>div{min-width:0}
.publication-comparison h4{margin:0 0 .6rem;font-size:.85rem;color:#47615c}
.publication-comparison dl{margin:0}
.publication-comparison dl>div{padding:.35rem .5rem;border-radius:4px}
.publication-comparison .is-changed{background:#fff3d7}
.publication-comparison dt{font-size:.75rem;font-weight:600;color:#47615c}
.publication-comparison dd{margin:.15rem 0 0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.9rem}
.publication-preview-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem;position:sticky;bottom:-1.5rem;background:#fff;padding:.75rem 0;border-top:1px solid #d3e2df}
.publication-preview-actions button{margin:0}
.planning-check{margin:0 0 1rem}
.planning-check>summary{cursor:pointer;font-weight:600;color:#176b5b}
.planning-check-count{font-weight:400;font-size:.85rem;margin-left:.5rem;color:#47615c}
.planning-check h3{font-size:.95rem;margin:1.25rem 0 .5rem}
.planning-check-list{list-style:none;padding:0;margin:0}
.planning-check-list li{display:flex;gap:1rem;justify-content:space-between;padding:.8rem 0;border-top:1px solid #e1eae7}
.planning-check-list li[hidden],.planning-check [hidden]{display:none}
.planning-check-list li>div{min-width:0;overflow-wrap:anywhere}
.planning-check-list p{margin:.3rem 0 0}
.planning-check-links{display:flex;gap:.5rem 1rem;flex-wrap:wrap;align-content:center;flex-shrink:0;max-width:45%}
@media(max-width:600px){.publication-comparison{grid-template-columns:1fr}.publication-preview{padding:1rem}.publication-preview-actions{bottom:-1rem}.planning-check-list li{flex-direction:column;gap:.5rem}.planning-check-links{max-width:none}.publication-change{padding:.75rem}}
@media print{.planning-check{display:none}}
[data-account-editor][aria-busy=true],[data-welcome-open][aria-busy=true]{cursor:progress;opacity:.65}
input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:#b04444;outline-color:#b04444}
@media(max-width:600px){.workspace:has([data-planning-check][open]) .quick-launcher{visibility:hidden}}
