:root{font-family:system-ui,-apple-system,'Segoe UI',Arial,sans-serif;font-synthesis:none;color:#edf2f7;background:#0b1823;--red:#e32229;--gold:#ffc400;--line:#d6dfe6}*{box-sizing:border-box}body{margin:0;background:linear-gradient(120deg,#152735,#0b1823 75%);min-height:100vh}button,input{font:inherit}button{cursor:pointer;border:1px solid #cbd5df;border-radius:6px;background:#fff;color:#263c4d;padding:7px 11px;font-size:12px;font-weight:600}button:hover{background:#eaf0f5}button:focus-visible,input:focus-visible,summary:focus-visible,.day:focus-visible{outline:3px solid #d59c22;outline-offset:2px}button:disabled{opacity:.55;cursor:wait}button[aria-pressed=true]{background:var(--red);color:#fff;border-color:var(--red)}header{display:flex;align-items:center;gap:14px;padding:9px 24px;border-bottom:3px solid var(--red)}.department-logo{height:54px;width:52px;object-fit:contain;filter:drop-shadow(0 2px 3px #0008)}.eyebrow{margin:0;font-size:9px;font-weight:650;letter-spacing:1.4px;color:#a9bac8}h1{font-size:23px;line-height:1.2;font-weight:650;letter-spacing:-.6px;margin:2px 0}header .sub{font-size:11px;color:#bac8d3;margin:3px 0 0}main{max-width:1880px;margin:auto;padding:12px 24px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:36px}.toolbar h2{margin:0;font-size:23px;font-weight:650;letter-spacing:-.5px}.navigation,.actions,.views{display:flex;align-items:center;gap:6px}.views{gap:0}.views button:first-child{border-radius:6px 0 0 6px}.views button:last-child{border-radius:0 6px 6px 0}.filters-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:9px 0}.officer-picker{position:relative;z-index:5}.officer-picker summary{cursor:pointer;list-style:none;border:1px solid #526575;border-radius:6px;padding:7px 11px;font-size:12px;font-weight:600;background:#1d3344}.officer-picker summary::-webkit-details-marker{display:none}.officer-picker summary:after{content:' ▾';margin-left:8px;color:#aebfcd}.officer-picker[open] summary:after{content:' ▴'}.officer-picker summary span{font-size:11px;font-weight:400;color:#c0ced9;margin-left:9px}.filterbar{position:absolute;top:calc(100% + 5px);left:0;width:min(620px,calc(100vw - 48px));padding:14px;background:#fff;border:1px solid #cbd5df;border-radius:8px;box-shadow:0 10px 30px #0005;color:#1c3447}.filterbar>button{margin-top:10px}#filters{display:flex;flex-wrap:wrap;gap:8px}.filter{display:flex;align-items:center;gap:5px;border:1px solid #dce3e9;border-radius:5px;padding:7px 9px;font-size:12px}.filter input{accent-color:var(--officer)}.swatch{height:7px;width:7px;border-radius:50%;background:var(--officer)}.request-filters{display:flex;align-items:center;gap:5px}.request-filters span{font-size:11px;color:#a9bdcc;margin-left:8px}.request-filters button{padding:6px 10px}.summary{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:11px;color:#b9c9d5;margin:7px 0 9px}#total{font-weight:500}#updated{white-space:nowrap}#status{font-size:12px;color:#ffc86b;margin:5px 0}#status:empty{display:none}.calendar-scroll{height:calc(100dvh - 230px);min-height:350px;overflow-x:auto;border:1px solid #63798b;border-radius:8px;background:#f9fbfd;color:#172e3f}#calendar{height:100%;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:30px repeat(var(--calendar-weeks,5),minmax(0,1fr));min-width:700px}#calendar.week{grid-template-rows:30px minmax(0,1fr)}.weekday{padding:7px;background:#21394b;color:#dfe9f1;font-size:10px;font-weight:650;letter-spacing:1.2px;text-align:center;border-bottom:1px solid #b8c8d4}.day{min-width:0;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#a8b9c6 transparent;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px 7px;cursor:pointer;background:#f8fafc}.day:nth-child(7n){border-right:0}.day.other{background:#e9eff4;color:#8295a4}.day.selected{box-shadow:inset 0 0 0 2px #ad3340}.day-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:3px;gap:4px}.date-number{font-size:12px;font-weight:600;padding:3px 6px;border-radius:5px}.day.current .date-number{background:var(--red);color:#fff}.overlap{font-size:9px;font-weight:600;background:#fff0b7;color:#755610;padding:3px 5px;border-radius:4px}.leave{margin:4px 0;padding:5px 7px;border-left:3px solid var(--officer);border-radius:4px;background:color-mix(in srgb,var(--officer) 8%,white);color:#233e51;overflow-wrap:anywhere}.leave strong{display:block;font-size:12px;line-height:1.25;font-weight:650}.leave small{display:block;font-size:10.5px;line-height:1.4;color:#4d6678}.leave.pending{border:1px dashed var(--officer);border-left-width:3px;background:#fff5d8}.notice{font-size:10px;line-height:1.5;color:#91a8ba;margin:8px 0}.details{display:grid;grid-template-columns:190px 1fr;gap:18px;background:#fff;color:#20394c;border:1px solid #c7d4df;border-radius:8px;padding:16px;margin-top:14px}.details h2{font-size:18px;font-weight:600;margin:5px 0}.detail-row{display:grid;grid-template-columns:160px 1fr 200px;gap:15px;padding:10px 0;border-bottom:1px solid #e3e9ee;font-size:12px}.detail-row:last-child{border:0}.detail-row strong{border-left:3px solid var(--officer);padding-left:8px;font-weight:650}.empty{font-size:12px;color:#667f91}footer{display:flex;justify-content:space-between;gap:12px;color:#8099ac;font-size:9px;letter-spacing:.5px;margin:18px 0 4px}[hidden]{display:none!important}.embedded header,.embedded footer{display:none}.embedded main{max-width:none;padding:10px}.embedded .calendar-scroll{height:calc(100dvh - 155px)}.tv-calendar .navigation,.tv-calendar .actions,.tv-calendar .filters-row,.tv-calendar .details,.tv-calendar .notice{display:none}.tv-calendar .toolbar{justify-content:center}.tv-calendar .toolbar h2{font-size:28px}.tv-calendar .summary{font-size:17px;margin:9px 0}.tv-calendar #status{font-size:18px}.tv-calendar .calendar-scroll{height:calc(100dvh - 100px);min-height:300px}.tv-calendar #calendar.week{grid-template-rows:40px minmax(0,1fr)}.tv-calendar .weekday{font-size:17px}.tv-calendar .date-number{font-size:21px}.tv-calendar .day{padding:9px}.tv-calendar .leave{padding:8px;margin:8px 0}.tv-calendar .leave strong{font-size:20px}.tv-calendar .leave small{font-size:16px}.tv-calendar .overlap{font-size:12px}@media(max-width:760px){header{padding:9px 12px}.department-logo{width:42px;height:46px}h1{font-size:20px}.eyebrow{font-size:8px;letter-spacing:.7px}main{padding:10px 12px}.toolbar{flex-wrap:wrap;gap:8px}.toolbar h2{order:-1;width:100%;font-size:21px}.filters-row{align-items:flex-start}.request-filters span{display:none}.summary{align-items:flex-start;flex-direction:column;gap:3px;font-size:10px}.calendar-scroll{height:calc(100dvh - 265px);min-height:360px}.details{grid-template-columns:1fr;gap:4px}.detail-row{grid-template-columns:1fr;gap:5px}footer{flex-direction:column;font-size:8px}.embedded .calendar-scroll{height:calc(100dvh - 220px)}.tv-calendar .calendar-scroll{height:calc(100dvh - 125px)}}
/* Pi: muted slate surfaces reduce glare while retaining strong text contrast. */
.tv-calendar{background:#1b2b38;color:#e3eaf0;--line:#536574}.tv-calendar .toolbar h2,.tv-calendar .summary{color:#e3eaf0;font-weight:700}.tv-calendar .calendar-scroll{border:2px solid #637786;background:#253746}.tv-calendar .weekday{background:#152632;color:#dfe8ef;font-weight:750}.tv-calendar .day{background:#253746;border-color:#536574;color:#e3eaf0}.tv-calendar .day.other{background:#20303d;color:#a9bac8}.tv-calendar .leave{background:#3b5060;color:#eef3f7;border:1px solid #748896;border-left:6px solid var(--officer);box-shadow:none}.tv-calendar .leave strong{color:#eef3f7;font-weight:750}.tv-calendar .leave small{color:#dce6ed;font-weight:600}.tv-calendar .leave.pending{background:#51472c;border:2px dashed #d8b85c;border-left:6px solid #e2bf59}.tv-calendar .overlap{background:#d3ad43;color:#19232a;font-weight:750}.tv-calendar .day.current .date-number{background:#ae303c;color:#f1f4f7}.tv-calendar .day.selected{box-shadow:inset 0 0 0 3px #d46a72}.tv-calendar #status{color:#e8c887}.tv-calendar .day-page{color:#c5d4df}
.tv-month #calendar{grid-template-rows:32px repeat(var(--calendar-weeks,5),minmax(0,1fr))}.tv-month .day{padding:4px 6px}.tv-month .day-heading{margin-bottom:2px}.tv-month .date-number{font-size:16px;padding:2px 4px}.tv-month .weekday{font-size:14px;padding:5px}.tv-month .leave{padding:3px 5px;margin:3px 0;border-left-width:5px}.tv-month .leave strong{font-size:15px;line-height:1.15}.tv-month .leave small{font-size:12px;line-height:1.2}.tv-month .overlap{font-size:10px;padding:2px 3px}.day-page{font-size:11px;font-weight:700;color:#273f50;text-align:right;margin:2px}.tv-month .calendar-scroll{height:calc(100dvh - 86px)}.tv-month .toolbar h2{font-size:24px}.tv-month .summary{font-size:13px;margin:5px 0}
/* Larger type for viewing the weekly panel across the room. */
.tv-calendar:not(.tv-month) .leave{padding:11px;margin:10px 0;border-left-width:8px}.tv-calendar:not(.tv-month) .leave strong{font-size:29px;line-height:1.2}.tv-calendar:not(.tv-month) .leave small{font-size:21px;line-height:1.3}.tv-calendar:not(.tv-month) .date-number{font-size:29px}.tv-calendar:not(.tv-month) .weekday{font-size:21px}.tv-calendar:not(.tv-month) .overlap{font-size:16px}.tv-calendar:not(.tv-month) .summary{font-size:19px}.tv-month .leave strong{font-size:18px;line-height:1.2}.tv-month .leave small{font-size:14px;line-height:1.2}

/* Month overview: every request stays visible; details belong in the week view. */
.tv-month .day{display:flex;flex-direction:column;overflow:hidden}.tv-month .day-heading{flex:0 0 auto}.tv-month .leave{flex:0 1 auto;min-height:0;margin:2px 0;padding:3px 5px;display:flex;align-items:center;gap:4px}.tv-month .leave strong{font-size:clamp(11px,calc((100dvh - 150px) / var(--calendar-weeks,5) / var(--month-entries,1) - 10px),18px);line-height:1.12;overflow-wrap:normal}.tv-month .month-pending{font-size:10px;color:#f1d88e;font-weight:700;margin-left:auto}
