.shift-toggles{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.shift-buttons{display:flex;gap:0;border:2px solid var(--ink)}.shift-button{background:var(--paper);border:none;border-right:2px solid var(--ink);color:var(--ink);padding:8px 10px 8px 24px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;position:relative;gap:0;width:86px;transition:background .1s,color .1s;white-space:nowrap;overflow:hidden}.shift-button:last-child{border-right:none}.shift-button:hover,.shift-button.active{background:var(--ink);color:var(--paper)}.shift-label{flex:1;text-align:center}.shift-swatch{position:absolute;left:0;top:0;bottom:0;width:14px}.action-buttons{display:flex;gap:0;border:2px solid var(--ink)}.action-button{background:var(--paper);border:none;border-right:2px solid var(--ink);color:var(--ink);padding:8px 14px;font-size:13px;font-weight:600;transition:background .1s,color .1s}.action-button:last-child{border-right:none}.action-button:hover{background:var(--ink);color:var(--paper)}@media(max-width:768px){.shift-toggles{gap:10px}.shift-button{padding:7px 8px 7px 22px;font-size:12px;width:72px}.action-button{padding:7px 10px;font-size:12px}}.view-selector{display:flex;gap:0;border:2px solid var(--ink);margin-left:auto}.view-button{background:var(--paper);border:none;border-right:2px solid var(--ink);color:var(--ink);padding:8px 16px;font-size:13px;font-weight:600;font-family:inherit;transition:background .1s,color .1s}.view-button:last-child{border-right:none}.view-button:hover,.view-button.active{background:var(--ink);color:var(--paper)}@media(max-width:768px){.view-button{padding:7px 10px;font-size:12px}}.fc{font-family:Public Sans,sans-serif}.fc-scrollgrid,.fc-scrollgrid-sync-table{border-color:var(--ink)!important}.fc-scrollgrid{border:2px solid var(--ink)!important;border-radius:0!important}.fc td,.fc th{border-color:var(--rule)!important}.fc-scrollgrid-section>td{border:none!important}.fc-col-header-cell{background:var(--ink)!important;border-color:#ffffff26!important}.fc-col-header-cell-cushion{color:var(--paper)!important;font-size:12px!important;font-weight:700!important;letter-spacing:.06em!important;text-transform:uppercase!important;padding:10px 12px!important;text-decoration:none!important}.fc-toolbar{margin-bottom:0!important;padding:16px 0!important}.fc-toolbar-chunk:first-child,.fc-toolbar-chunk:last-child{flex:1}.fc-toolbar-chunk:last-child{display:flex;justify-content:flex-end}.fc-toolbar-title{font-family:Public Sans,sans-serif!important;font-size:22px!important;font-weight:700!important;letter-spacing:-.01em!important}.fc-button{background:var(--paper)!important;border:2px solid var(--ink)!important;color:var(--ink)!important;border-radius:0!important;font-family:Public Sans,sans-serif!important;font-size:14px!important;font-weight:600!important;line-height:1.5!important;padding:7px 14px!important;box-shadow:none!important;text-transform:none!important}.fc-button:hover,.fc-button:focus{background:var(--ink)!important;color:var(--paper)!important;outline:none!important}.fc-button:disabled{opacity:.5!important}.fc-button-group .fc-button{border-right-width:0!important}.fc-button-group .fc-button:last-child{border-right-width:2px!important}.fc-button-active{background:var(--ink)!important;color:var(--paper)!important}.fc-daygrid-day{min-height:110px;border-color:var(--rule)!important}.fc-daygrid-day:not(.fc-day-today):hover .fc-daygrid-day-frame{background:var(--paperAlt)}.fc-daygrid-day-number{font-size:18px!important;font-weight:700!important;color:var(--ink)!important;padding:8px 10px!important;text-decoration:none!important}.fc-day-today .fc-daygrid-day-number{background:var(--ink)!important;color:var(--paper)!important;padding:2px 6px!important;margin:6px 4px!important}.fc-day-today{background-color:var(--paper)!important;background-image:repeating-conic-gradient(color-mix(in srgb,var(--ink) 40%,transparent) 0% 25%,transparent 0% 50%)!important;background-size:16px 16px!important}.fc-daygrid-day-frame{position:relative}.fc-day-other .fc-daygrid-day-number{opacity:.4!important}.fc-daygrid-day:not(.fc-day-other) .fc-daygrid-day-events:not(:has(.fc-event)):after{content:"–";display:block;text-align:center;color:var(--rule);font-size:14px;padding:6px 0}.fc-daygrid-event{border-radius:0!important;border:none!important;border-left:5px solid!important;padding:3px 6px!important;font-size:12px!important;font-weight:600!important}.fc-event-title{font-size:12px!important}.shift-event-1{background:var(--s1)!important;border-left-color:color-mix(in srgb,var(--s1) 70%,#000)!important;color:var(--ink)!important}.shift-event-2{background:var(--s2)!important;border-left-color:color-mix(in srgb,var(--s2) 70%,#000)!important;color:var(--ink)!important}.shift-event-3{background:var(--s3)!important;border-left-color:color-mix(in srgb,var(--s3) 70%,#000)!important;color:var(--ink)!important}.shift-event-4{background:var(--s4)!important;border-left-color:color-mix(in srgb,var(--s4) 70%,#000)!important;color:var(--ink)!important}.shift-event-5{background:var(--s5)!important;border-left-color:color-mix(in srgb,var(--s5) 70%,#000)!important;color:var(--ink)!important}.event-inner{display:flex;justify-content:space-between;align-items:center;width:100%;gap:4px}.event-code{display:none}@media(max-width:900px){.event-num,.event-type{display:none}.event-code{display:block}.event-inner{justify-content:center}.fc-daygrid-day{min-height:72px}.fc-toolbar-title{font-size:18px!important}}@media print{.fc-toolbar-chunk:first-child,.fc-toolbar-chunk:nth-child(2){display:none}.fc-toolbar-chunk:last-child{display:flex;justify-content:flex-end;width:100%}.fc,.fc .fc-scrollgrid,.fc .fc-scroller,.fc .fc-scroller-harness,.fc .fc-col-header,.fc .fc-daygrid-body,.fc .fc-scrollgrid-sync-table,.fc .fc-scroller-liquid-absolute{width:100%!important}.fc .fc-scroller-liquid-absolute{right:0!important;overflow:hidden!important}.fc-daygrid-event,.fc-col-header-cell,.fc-day-today{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.shift-table-wrapper{background:var(--paper)}.shift-table-toolbar{display:flex;align-items:center;gap:16px;padding:16px 0}.toolbar-nav{display:flex;align-items:center}.today-button{margin-left:.75em}.toolbar-nav-arrows{display:inline-flex;position:relative;vertical-align:middle}.nav-button,.today-button{background:var(--paper);border:2px solid var(--ink);color:var(--ink);font-family:inherit;font-size:14px;font-weight:600;line-height:1.5;padding:7px 14px;cursor:pointer;transition:background .1s,color .1s;display:inline-block;vertical-align:middle}.nav-button{border-right-width:0}.nav-button-last{border-right-width:2px;margin-left:-1px}.nav-button:hover,.today-button:hover{background:var(--ink);color:var(--paper)}.today-button:disabled,.today-button:disabled:hover{opacity:.5;cursor:default;background:var(--paper);color:var(--ink);pointer-events:none}.nav-button .fc-icon{font-size:1.5em;vertical-align:middle}.toolbar-title{font-size:22px;font-weight:700;letter-spacing:-.01em;margin-left:auto;display:flex;align-items:baseline;gap:10px}.shift-table-container{overflow-x:auto}.shift-table{width:100%;border-collapse:collapse;border:2px solid var(--ink)}.shift-table thead tr{background:var(--ink)}.shift-table th{padding:10px 8px;text-align:center;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-right:1px solid rgba(255,255,255,.15);color:var(--paper);background:var(--ink)}.shift-table th:last-child{border-right:none}.shift-table th.date-column{text-align:left;width:80px;border-right:1px solid rgba(255,255,255,.15)}.shift-table th.shift-column{min-width:100px}.shift-table tbody tr{border-bottom:1px solid var(--rule)}.shift-table tbody tr:last-child{border-bottom:none}.shift-table tbody tr:not(.today):hover .date-cell,.shift-table tbody tr:not(.today):hover .shift-cell:not(.has-event),.shift-table tbody tr.today:hover .shift-cell:not(.has-event){background-color:var(--paperAlt)}.shift-table tbody tr.today .date-cell{background-color:var(--ink);color:var(--paper)}.shift-table tbody tr.today .day-name{color:#ffffffbf}.shift-table tbody tr.today .day-number{color:var(--paper)}.shift-table tbody tr.today .today-cell.has-event{background-image:repeating-conic-gradient(color-mix(in srgb,var(--ink) 40%,transparent) 0% 25%,transparent 0% 50%);background-size:16px 16px}.today-cell.has-event .shift-type{background:var(--ink);color:var(--paper);padding:3px 8px;display:inline-block}.shift-table tbody tr.week-start>*{border-top:2px solid var(--ink)}.date-cell{padding:8px 12px;border-right:1px solid var(--rule);background:var(--paper);vertical-align:middle}.date-info{display:flex;flex-direction:column;gap:2px}.day-name{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--inkSoft);line-height:1}.day-number{font-size:18px;font-weight:700;line-height:1;color:var(--ink)}.shift-cell{padding:0;text-align:center;border-left:1px solid var(--rule);background:var(--paper);min-height:48px;height:48px;vertical-align:middle}.shift-cell.shift-bg-1{background-color:var(--s1)}.shift-cell.shift-bg-2{background-color:var(--s2)}.shift-cell.shift-bg-3{background-color:var(--s3)}.shift-cell.shift-bg-4{background-color:var(--s4)}.shift-cell.shift-bg-5{background-color:var(--s5)}.shift-cell.has-event{color:var(--ink)}.shift-cell.has-event .shift-type{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.2;padding:6px 4px}.shift-cell:not(.has-event){color:var(--inkSoft)}.shift-empty{color:var(--rule);font-size:14px}.shift-table-empty{padding:60px 20px;text-align:center;color:var(--inkSoft);font-size:15px}@media(max-width:600px){.shift-table-toolbar{gap:10px}.toolbar-title{font-size:18px!important}.shift-table th.date-column{width:56px}.shift-table th.shift-column{min-width:52px;font-size:10px;letter-spacing:.02em}.date-cell{padding:6px}.day-name{font-size:9px}.day-number{font-size:14px}.shift-cell{height:40px}.shift-cell.has-event .shift-type{font-size:10px}}@media print{.toolbar-nav,.toolbar-spacer{display:none}.shift-table-toolbar{padding:0 0 8px}.toolbar-title{font-size:16px!important}.shift-table{page-break-inside:auto}.shift-table tr{page-break-inside:avoid}.shift-table thead{display:table-header-group}.shift-table th{padding:5px 4px;font-size:9px}.date-cell{padding:3px 6px}.day-name{font-size:8px}.day-number{font-size:13px}.shift-cell{height:28px;min-height:28px}.shift-cell.has-event .shift-type{font-size:10px;padding:2px}.shift-cell.has-event,.shift-table thead tr{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.subscribe-page{width:100%;max-width:1000px;margin:0 auto}.subscribe-intro{color:var(--inkSoft);font-size:15px;line-height:1.6;margin-bottom:32px}.sub-section{margin-bottom:32px}.sub-section-header{background:var(--ink);color:var(--paper);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:10px 16px;border:2px solid var(--ink)}.sub-table{border:2px solid var(--ink);border-top:none}.sub-row{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--rule);min-height:48px}.sub-row:last-child{border-bottom:none}.sub-label{width:130px;flex-shrink:0;font-size:13px;font-weight:700;padding:10px 16px;border-right:1px solid var(--rule);color:var(--ink)}.sub-url{flex:1;padding:10px 16px;border-right:1px solid var(--rule)}.sub-url code{font-size:12px;color:var(--ink);background:var(--paper);border:1px solid var(--rule);padding:2px 6px;word-break:break-all}.sub-shift-1{background-color:var(--s1)}.sub-shift-2{background-color:var(--s2)}.sub-shift-3{background-color:var(--s3)}.sub-shift-4{background-color:var(--s4)}.sub-shift-5{background-color:var(--s5)}.sub-shift-1 .sub-label,.sub-shift-2 .sub-label,.sub-shift-3 .sub-label,.sub-shift-4 .sub-label,.sub-shift-5 .sub-label,.sub-shift-1 .sub-url,.sub-shift-2 .sub-url,.sub-shift-3 .sub-url,.sub-shift-4 .sub-url,.sub-shift-5 .sub-url{border-right-color:#0000001f}.sub-copy-btn{background:var(--paper);border:none;border-left:none;color:var(--ink);font-family:inherit;font-size:13px;font-weight:600;padding:10px 16px;cursor:pointer;white-space:nowrap;transition:background .1s,color .1s;flex-shrink:0}.sub-copy-btn:hover{background:var(--ink);color:var(--paper)}.sub-shift-1 .sub-copy-btn,.sub-shift-2 .sub-copy-btn,.sub-shift-3 .sub-copy-btn,.sub-shift-4 .sub-copy-btn,.sub-shift-5 .sub-copy-btn{background:transparent}.sub-shift-1 .sub-copy-btn:hover,.sub-shift-2 .sub-copy-btn:hover,.sub-shift-3 .sub-copy-btn:hover,.sub-shift-4 .sub-copy-btn:hover,.sub-shift-5 .sub-copy-btn:hover{background:var(--ink);color:var(--paper)}.sub-toggles-row{padding:12px 16px;background:var(--paperAlt);border-bottom:1px solid var(--rule)}.sub-empty{padding:12px 16px;color:var(--inkSoft);font-size:13px;font-style:italic}.sub-instructions .sub-label{font-weight:700}.sub-instruction{flex:1;font-size:13px;color:var(--inkSoft);padding:10px 16px;display:flex;flex-direction:column;gap:4px}.sub-instruction-note{font-size:12px;color:var(--inkSoft);opacity:.75}@media(max-width:600px){.sub-label{width:110px;font-size:12px;padding:8px 10px}.sub-url{font-size:11px;padding:8px 10px}.sub-copy-btn{padding:8px 10px;font-size:12px}.sub-checkboxes-row{gap:14px}}.app{max-width:1400px;margin:0 auto;background:var(--paper)}.app-banner{background:var(--ink);color:var(--paper);padding:16px 32px;display:flex;align-items:center;justify-content:space-between;gap:24px}.app-banner-left{display:flex;align-items:center;gap:16px}.app-crest{width:36px;height:36px;border:2px solid var(--paper);display:grid;place-items:center;font-weight:700;font-size:14px;letter-spacing:.04em;font-family:Public Sans,sans-serif;flex-shrink:0}.app-title{font-size:20px;font-weight:700;letter-spacing:-.005em;margin:0}.app-toolbar{background:var(--paperAlt);border-bottom:2px solid var(--ink);padding:14px 32px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.app-toolbar .view-selector{margin-left:auto}.back-button,.subscribe-link,.copy-link-button,.print-button{background:var(--paper);border:2px solid var(--ink);color:var(--ink);font-family:inherit;font-size:14px;font-weight:600;padding:7px 14px;cursor:pointer;transition:background .1s,color .1s}.back-button:hover,.subscribe-link:hover,.copy-link-button:hover,.print-button:hover{background:var(--ink);color:var(--paper)}.app-error{background:#fff0f0;border-left:4px solid #d4351c;color:#6a0000;padding:10px 32px;font-size:14px}.app-loading{padding:10px 32px;font-size:13px;color:var(--inkSoft);font-family:Public Sans,sans-serif;background:var(--paperAlt);border-bottom:1px solid var(--rule)}.app-empty{padding:60px 32px;text-align:center;color:var(--inkSoft);font-size:16px}.app-calendar{padding:24px 32px 32px}.app-foot{padding:14px 32px;background:var(--paperAlt);border-top:2px solid var(--ink);font-size:12px;color:var(--inkSoft);display:flex;align-items:center;gap:16px;flex-wrap:wrap}.app-foot-share{flex:1;display:flex;align-items:center;min-width:0}.app-foot-copy{display:none}.app-foot code{background:var(--paper);border:1px solid var(--rule);padding:2px 6px;color:var(--ink);font-size:11px}.app-foot-url{cursor:pointer;white-space:nowrap;overflow:hidden;display:flex;align-items:center;gap:4px;min-width:0}.app-foot-url code{overflow:hidden;text-overflow:ellipsis;min-width:0}.app-foot-build{flex:1;text-align:center;font-family:Public Sans,sans-serif;font-size:11px;letter-spacing:.04em;opacity:.5}.app-foot-right{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:8px}@media(max-width:900px){.app-banner{padding:12px 16px;gap:12px}.app-title{font-size:16px}.app-toolbar{padding:12px 16px;justify-content:center}.app-toolbar .view-selector{margin-left:0}.app-toolbar .shift-toggles{justify-content:center}.app-calendar{padding:16px 16px 24px}.app-foot{padding:12px 16px;flex-direction:column;align-items:flex-start;gap:8px}.app-foot-share,.app-foot-build,.app-foot-right{flex:unset;text-align:left}.app-foot-url{display:none}.app-foot-copy{display:inline-flex}}@page{size:A4 landscape;margin:.5cm}@media print{.app-banner,.app-toolbar,.app-foot,.app-error,.app-loading{display:none!important}.app{max-width:none}.app-calendar{padding:0}}@font-face{font-family:Public Sans;font-style:normal;font-weight:400;font-display:swap;src:url(https://cdn.jsdelivr.net/npm/@fontsource/public-sans@5.0.18/files/public-sans-latin-400-normal.woff2) format("woff2")}@font-face{font-family:Public Sans;font-style:normal;font-weight:500;font-display:swap;src:url(https://cdn.jsdelivr.net/npm/@fontsource/public-sans@5.0.18/files/public-sans-latin-500-normal.woff2) format("woff2")}@font-face{font-family:Public Sans;font-style:normal;font-weight:600;font-display:swap;src:url(https://cdn.jsdelivr.net/npm/@fontsource/public-sans@5.0.18/files/public-sans-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Public Sans;font-style:normal;font-weight:700;font-display:swap;src:url(https://cdn.jsdelivr.net/npm/@fontsource/public-sans@5.0.18/files/public-sans-latin-700-normal.woff2) format("woff2")}@font-face{font-family:Public Sans;font-style:normal;font-weight:800;font-display:swap;src:url(https://cdn.jsdelivr.net/npm/@fontsource/public-sans@5.0.18/files/public-sans-latin-800-normal.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(https://cdn.jsdelivr.net/npm/@fontsource/ibm-plex-mono@5.2.7/files/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}*{box-sizing:border-box;margin:0;padding:0}code{font-family:IBM Plex Mono,monospace}:root{--ink: #0a1f44;--inkSoft: #3a4a6b;--paper: #ffffff;--paperAlt: #f3f2f1;--rule: #b1b4b6;--s1: #d98c80;--s2: #74b090;--s3: #749ec8;--s4: #c4a25e;--s5: #9888c0}html,body{height:100%}body{font-family:Public Sans,Helvetica Neue,Arial,sans-serif;background:var(--paperAlt);color:var(--ink);-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}.tartan{--sq: 8px;height:calc(var(--sq) * 3);width:100%;background:linear-gradient(to right,var(--ink) 0,var(--ink) var(--sq),transparent var(--sq),transparent calc(var(--sq) * 2)) 0 0 / calc(var(--sq) * 2) var(--sq) repeat-x,linear-gradient(to right,transparent 0,transparent var(--sq),var(--ink) var(--sq),var(--ink) calc(var(--sq) * 2)) 0 var(--sq) / calc(var(--sq) * 2) var(--sq) repeat-x,linear-gradient(to right,var(--ink) 0,var(--ink) var(--sq),transparent var(--sq),transparent calc(var(--sq) * 2)) 0 calc(var(--sq) * 2) / calc(var(--sq) * 2) var(--sq) repeat-x,var(--paper)}
