.event-editor{gap:1rem;padding:clamp(1rem,4vw,2rem);display:grid}.event-editor>header,.event-editor>footer,.editor-header-actions{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.event-editor h2{margin:0}.event-editor>footer{background:var(--white);border-top:1px solid var(--border);grid-template-columns:auto 1fr auto auto;padding-top:1rem;display:grid;position:sticky;bottom:0}.event-fields{gap:1rem;display:grid}.event-fields--two{grid-template-columns:1fr 1fr}.event-editor fieldset{border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:1rem}.event-editor legend{color:var(--navy);padding:0 .4rem;font-weight:700}.event-editor textarea{resize:vertical;border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;padding:.55rem}.staff-assignment>div{flex-wrap:wrap;gap:.6rem 1rem;display:flex}.staff-assignment label{align-items:center;gap:.4rem;display:flex}.staff-assignment input{min-height:auto}.is-inactive{color:var(--muted)}.recurrence-editor{gap:.75rem;display:grid}.recurrence-fields{grid-template-columns:repeat(3,1fr);gap:.75rem;display:grid}.recurrence-summary{color:var(--muted);grid-column:1/-1;margin:0}.conflict-panel{border:2px solid var(--coral);border-radius:var(--radius);background:#fff7f7;grid-template-columns:auto 1fr;gap:.75rem;padding:1rem;display:grid}.conflict-panel__icon{font-size:1.5rem}.conflict-panel h3,.conflict-panel p{margin:0}.conflict-panel ul,.conflict-panel>.field,.conflict-panel__actions{grid-column:1/-1}.conflict{display:grid}.conflict strong{color:var(--coral);text-transform:uppercase;font-size:.72rem}.conflict-panel__actions{justify-content:flex-end;gap:.5rem;display:flex}.button--danger{color:#9b2630;background:#fff0f1}.dialog-backdrop{z-index:80;background:#1228408c;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.choice-dialog{background:var(--white);border-radius:var(--radius);width:min(100%,480px);box-shadow:var(--shadow);padding:1.5rem}.choice-dialog>div{justify-content:flex-end;gap:.5rem;display:flex}@media (width<=650px){.event-fields--two,.recurrence-fields{grid-template-columns:1fr}.event-editor>footer{grid-template-columns:1fr 1fr}.event-editor>footer span{display:none}.choice-dialog>div,.conflict-panel__actions{display:grid}}.calendar-workspace{gap:1rem;display:grid}.calendar-toolbar{justify-content:space-between;align-items:flex-end;gap:1rem;display:flex}.calendar-toolbar h1{margin-bottom:0}.view-switcher{background:#e7eded;border-radius:10px;padding:.25rem;display:inline-flex}.view-switcher button{min-height:38px;color:var(--navy);text-transform:capitalize;background:0 0;border:0;border-radius:7px;padding:.4rem .8rem;font-weight:700}.view-switcher button.is-active{background:var(--white);box-shadow:0 2px 6px #1228401f}.overlay-filters{background:var(--white);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.6rem .8rem}.overlay-filters summary{color:var(--navy);cursor:pointer;font-weight:700}.overlay-filters__hint{color:var(--muted);margin:.3rem 0 0;font-size:.78rem}.overlay-filters>div{flex-wrap:wrap;gap:.4rem 1.2rem;padding-top:.65rem;display:flex}.overlay-filters label{align-items:center;gap:.45rem;min-height:34px;display:flex}.overlay-filters input{min-height:auto}.legend-swatch{border-radius:999px;width:20px;height:7px}.year-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.month-card,.detail-calendar{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);min-width:0;overflow:hidden;box-shadow:0 3px 12px #1228400f}.month-card h2,.detail-calendar>h2{background:var(--navy);color:var(--white);margin:0;padding:.7rem 1rem;font-size:1rem}.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.weekday{text-align:center;color:var(--muted);text-transform:uppercase;padding:.35rem .1rem;font-size:.68rem;font-weight:700}.calendar-day{border-top:1px solid var(--border);border-right:1px solid var(--border);background:var(--white);min-width:0;min-height:105px;position:relative;overflow:hidden}.calendar-day:nth-child(7n){border-right:0}.calendar-day--compact{min-height:64px}.calendar-day--blank{background:#fafafa}.calendar-day__target{background:0 0;border:0;width:100%;min-height:0;padding:0;position:absolute;inset:0}.calendar-day__target:hover,.calendar-day__target:focus-visible{background:#8dd4d429}.calendar-day__number{color:var(--navy);font-size:.72rem;font-weight:700;position:absolute;top:.2rem;right:.3rem}.overlay-rail{z-index:1;pointer-events:none;gap:2px;padding:.2rem 1.1rem .1rem .2rem;display:flex;position:relative}.overlay-marker{background:var(--teal);pointer-events:auto;border-radius:999px;width:100%;height:4px;display:block}.overlay-marker--public-holiday{background:var(--coral)}.overlay-marker--school-term{background:var(--lime)}.overlay-marker--school-holiday{background:var(--yellow)}.overlay-marker--rmo-term{background:var(--sky)}.overlay-marker--registrar-term{background:var(--light-teal)}.calendar-day__events{z-index:2;pointer-events:none;gap:2px;padding:1rem .18rem .18rem;display:grid;position:relative}.event-chip{--event-category:var(--teal);background:var(--event-category);min-width:0;color:var(--white);pointer-events:auto;cursor:grab;border-radius:4px;align-items:center;gap:.18rem;padding:.18rem .3rem;font-size:.68rem;font-weight:700;line-height:1.25;display:flex}.event-chip--navy{--event-category:var(--navy)}.event-chip--coral{--event-category:var(--coral)}.event-chip--teal{--event-category:var(--teal)}.event-chip--light-teal{--event-category:var(--light-teal);color:var(--navy)}.event-chip--lime{--event-category:var(--lime);color:var(--navy)}.event-chip--sky{--event-category:var(--sky);color:var(--navy)}.event-chip--yellow{--event-category:var(--yellow);color:var(--navy)}.event-chip__title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.event-chip__warning{color:var(--yellow)}.event-chip__buffer{margin-left:auto}.event-chip--conflict{border:2px solid var(--coral);background:repeating-linear-gradient(135deg, var(--navy), var(--navy) 5px, #294e79 5px, #294e79 10px)}.detail-calendar>h2{font-size:1.25rem}.calendar-grid--detail .weekday{padding:.6rem}.week-grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.week-column{border-right:1px solid var(--border);min-width:0}.week-column:last-child{border-right:0}.week-column h3{text-align:center;margin:0;padding:.6rem;font-size:.85rem;display:grid}.week-column h3 span{color:var(--muted);font-size:.7rem}.week-column .calendar-day{border-right:0;min-height:360px}.calendar-loading{place-items:center;min-height:50vh;display:grid}.spinner--dark{border-color:#1b3a5f26;border-top-color:var(--teal)}@media (width<=1050px){.year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.week-grid{grid-template-columns:repeat(7,minmax(150px,1fr));overflow-x:auto}}@media (width<=650px){.calendar-toolbar{flex-direction:column;align-items:stretch}.view-switcher{grid-template-columns:repeat(3,1fr);display:grid}.year-grid{grid-template-columns:1fr}.month-card h2{position:sticky;top:0}.calendar-grid--detail{min-width:700px}.detail-calendar{overflow-x:auto}.overlay-filters>div{display:grid}.calendar-day--compact{min-height:70px}}@media (prefers-reduced-motion:reduce){.event-chip{scroll-behavior:auto}}.event-chip__title.event-chip--conflict{background:0 0;border:0}.event-chip{text-align:left;border:0;width:100%;min-height:0}.event-chip.event-chip--conflict{border:2px solid var(--coral);box-shadow:inset 5px 0 var(--event-category);color:var(--white)}.staff-page{gap:1.25rem;display:grid}.staff-page>header{justify-content:space-between;display:flex}.staff-page h1{margin-bottom:.25rem}.staff-list{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;display:grid}.staff-card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:1rem;display:grid;box-shadow:0 3px 12px #1228400f}.staff-card h2,.staff-card p{margin:0}.staff-card h2{font-size:1rem}.staff-card p{color:var(--muted);font-size:.85rem}.staff-card .button{grid-column:3}.staff-avatar{background:var(--teal);width:46px;height:46px;color:var(--white);border-radius:50%;place-items:center;font-weight:700;display:grid}.staff-avatar--navy{background:var(--navy)}.staff-avatar--coral{background:var(--coral)}.staff-avatar--light-teal{background:var(--light-teal);color:var(--navy)}.staff-avatar--lime{background:var(--lime);color:var(--navy)}.staff-avatar--sky{background:var(--sky);color:var(--navy)}.staff-avatar--yellow{background:var(--yellow);color:var(--navy)}.status-pill{color:var(--muted);background:#eee;border-radius:999px;padding:.2rem .55rem;font-size:.72rem;font-weight:700}.sheet-backdrop{z-index:50;background:#12284075;justify-content:flex-end;display:flex;position:fixed;inset:0}.editor-sheet{background:var(--white);width:min(100%,620px);height:100%;overflow:auto;box-shadow:-12px 0 35px #1228402e}.staff-editor{gap:1.25rem;padding:clamp(1rem,4vw,2rem);display:grid}.staff-editor>header,.staff-editor>footer{justify-content:space-between;align-items:center;gap:1rem;display:flex}.staff-editor h2{margin:0}.staff-editor>footer{justify-content:flex-end}.icon-button{background:var(--soft);width:44px;color:var(--navy);border:0;border-radius:50%;font-size:1.5rem}.staff-fields{grid-template-columns:2fr 1fr 1fr;gap:1rem;display:grid}.field{color:var(--navy);gap:.35rem;font-weight:700;display:grid}.field input,.field select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--white);width:100%;padding:.55rem}.check-field{grid-column:1/-1;align-items:center;gap:.5rem;display:flex}.check-field input{min-height:auto}.pattern-editor{border:1px solid var(--border);border-radius:var(--radius);gap:1rem;padding:1rem;display:grid}.pattern-editor legend{color:var(--navy);padding:0 .4rem;font-weight:700}.segmented-options{gap:1rem;display:flex}.segmented-options label{align-items:center;gap:.4rem;display:flex}.segmented-options input{min-height:auto}.pattern-week{gap:.45rem;display:grid}.day-toggle-grid{grid-template-columns:repeat(7,1fr);gap:.35rem;display:grid}.day-toggle{text-align:center;position:relative}.day-toggle input{opacity:0;position:absolute}.day-toggle span{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;padding:.55rem .2rem;font-weight:700;display:grid}.day-toggle small{font-weight:400}.day-toggle--working span{border-color:var(--teal);color:var(--navy);background:#2b9e9e1f}.day-toggle input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}.field-error{color:#8a1f28;margin:0;font-weight:700}@media (width<=650px){.staff-list{grid-template-columns:1fr}.sheet-backdrop{align-items:flex-end}.editor-sheet{border-radius:18px 18px 0 0;height:min(92%,780px)}.staff-fields{grid-template-columns:1fr 1fr}.staff-fields .field:first-child{grid-column:1/-1}.day-toggle-grid{grid-template-columns:repeat(4,1fr)}}.export-backdrop{align-items:flex-end}.export-sheet{background:var(--white);width:min(100%,560px);max-height:92vh;box-shadow:var(--shadow);border-radius:18px 0 0 18px;gap:1.2rem;padding:clamp(1rem,4vw,2rem);display:grid;overflow:auto}.export-sheet>header,.export-sheet>footer{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.export-sheet h2{margin:0}.export-sheet>footer{justify-content:flex-end}.export-options{border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:repeat(2,1fr);gap:.5rem;padding:1rem;display:grid}.export-options legend{color:var(--navy);padding:0 .4rem;font-weight:700}.export-options label{border-radius:var(--radius-sm);background:var(--soft);align-items:center;gap:.45rem;min-height:44px;padding:.5rem;display:flex}.export-options input{min-height:auto}.export-range{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.export-note{color:var(--muted);margin:0}.alert--success{border-left:4px solid var(--teal);color:#185d50;background:#e5f5ee}@media (width<=650px){.export-sheet{border-radius:18px 18px 0 0}.export-range{grid-template-columns:1fr}}@font-face{font-family:Fira Sans;src:url(/brand/fonts/FiraSans-Regular.ttf)format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Fira Sans;src:url(/brand/fonts/FiraSans-Bold.ttf)format("truetype");font-weight:700 900;font-display:swap}:root{--coral:#e55b64;--coral-dark:#d14a53;--navy:#1b3a5f;--navy-dark:#122840;--teal:#2b9e9e;--light-teal:#8dd4d4;--lime:#b8cc26;--sky:#5dade2;--yellow:#f4d03f;--white:#fff;--text:#333;--muted:#666;--soft:#f5f5f5;--border:#e0e0e0;--focus:#2b9e9e;--shadow:0 10px 25px #1228401a;--radius:12px;--radius-sm:8px}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{color:var(--text);background:var(--soft);font-family:Fira Sans,system-ui,sans-serif;line-height:1.5}button,input,textarea,select{font:inherit}button,input,select{min-height:44px}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.65}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}h1,h2,h3,p{margin-top:0}h1,h2,h3{color:var(--navy);line-height:1.15}.eyebrow{color:var(--coral);letter-spacing:.12em;text-transform:uppercase;font-size:.75rem;font-weight:700;display:block}.eyebrow--inverse{color:var(--light-teal)}.button,.nav-button{border-radius:var(--radius-sm);border:0;padding:.65rem 1rem;font-weight:700}.button--primary{background:var(--coral);color:var(--white)}.button--primary:hover{background:var(--coral-dark)}.alert{border-radius:var(--radius-sm);margin-bottom:1rem;padding:.75rem 1rem}.alert--error{border-left:4px solid var(--coral);color:#721c24;background:#f8d7da}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.access-page,.loading-page{background:linear-gradient(145deg, var(--navy-dark), var(--navy));place-items:center;min-height:100vh;padding:1rem;display:grid}.access-card{background:var(--white);width:min(100%,430px);box-shadow:var(--shadow);border-top:7px solid var(--lime);border-radius:18px;padding:2rem}.access-logo{object-fit:contain;object-position:left;width:150px;max-height:55px;margin-bottom:1.5rem}.access-card form,.access-card label{gap:.45rem;display:grid}.access-card form{gap:1rem}.access-card label{color:var(--navy);font-weight:700}.access-card input{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;padding:.7rem}.masthead{background:var(--navy);min-height:76px;color:var(--white);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem clamp(1rem,3vw,2.5rem);display:flex}.masthead__brand,.masthead__user{align-items:center;gap:1rem;display:flex}.masthead__brand img{width:120px;max-height:44px}.masthead__brand strong{letter-spacing:.04em;font-size:1.3rem;display:block}.masthead__user{font-weight:700}.avatar{background:var(--teal);border-radius:999px;place-items:center;width:40px;height:40px;display:grid}.brand-gradient{background:linear-gradient(90deg, var(--lime), var(--teal), var(--navy));height:7px}.primary-nav{z-index:20;background:var(--white);border-bottom:1px solid var(--border);align-items:center;gap:.4rem;padding:.65rem clamp(1rem,3vw,2.5rem);display:flex;position:sticky;top:0;box-shadow:0 1px 2px #0000000d}.nav-button{color:var(--navy);background:0 0}.nav-button--active{color:#1f7a7a;background:#2b9e9e1f}.nav-spacer{flex:1}.app-content{max-width:1600px;margin-inline:auto;padding:clamp(1rem,3vw,2.5rem)}.spinner{border:5px solid #ffffff40;border-top-color:var(--lime);border-radius:50%;width:42px;height:42px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=700px){.masthead__user span:first-child{display:none}.masthead__brand img{width:92px}.primary-nav{overflow-x:auto}.app-content{padding:1rem}.access-card{padding:1.4rem}}.connection-notice{color:#64520b;text-align:center;background:#fff7d6;border-bottom:1px solid #e5c85c;padding:.55rem 1rem;font-weight:700}.toast-region{z-index:100;position:fixed;bottom:1rem;right:1rem}.toast{border-radius:var(--radius-sm);background:var(--navy);color:var(--white);box-shadow:var(--shadow);padding:.75rem 1rem}.fatal-error{place-content:center;max-width:620px;min-height:100vh;margin:auto;padding:2rem;display:grid}
