table.grid tr.meta th{color:var(--muted);white-space:normal;background:var(--paper);max-width:12rem;font-size:.85rem;font-weight:400;position:static}table.grid tr.meta th.sticky{font-weight:500}table.grid td.slot{cursor:pointer}table.grid td.slot:hover{outline:2px solid var(--brand);outline-offset:-2px}.roster-message{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.roster-message button.link{color:var(--muted);text-decoration:none}.filters{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:.5rem;display:flex}details.board>summary{cursor:pointer;margin:1rem 0 .5rem;font-weight:600}main>.page>details.board{flex:0 auto;min-height:8rem;overflow:auto}details.board>summary{background:var(--wash);z-index:4;position:sticky;top:0}.board-wrap{max-height:none;overflow:visible}table.board td.day{cursor:pointer}table.board td.day:hover{outline:2px solid var(--brand);outline-offset:-2px}table.board tr.responded th.sticky,table.board tr.responded td{background:var(--full)}table.board td.unavail,table.board tr.responded td.unavail{color:var(--muted);background:#e4e7ea}.util-some{color:#a05a00}.util-full{color:var(--error);font-weight:600}.manual{color:var(--brand)}.legend .swatch.responded{background:var(--full)}.legend .swatch.unavail{background:#e4e7ea}.candidates{border:1px solid var(--line);border-radius:6px;max-height:50vh;overflow:auto}.candidates table.list{border-collapse:collapse;width:100%}.candidates table.list th,.candidates table.list td{border-bottom:1px solid var(--line);text-align:left;padding:.3rem .6rem}.candidates table.list thead th{background:var(--wash);position:sticky;top:0}.candidates tr.busy{opacity:.6;cursor:wait}.candidates .unavail{color:var(--error)}.candidates td.band-full{background:var(--full)}.candidates td.band-some{background:var(--some)}.candidates td.band-none{background:var(--none)}.duties-table{border-collapse:collapse;width:100%}.duties-table th,.duties-table td{border-bottom:1px solid var(--line);text-align:left;padding:.3rem .6rem}.duties-table tr.band-full td{background:var(--full)}.duties-table tr.band-some td{background:var(--some)}a.button-link{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:6px;padding:.2rem .6rem;font-size:.85rem;text-decoration:none;display:inline-block}a.button-link:hover{background:var(--wash)}.view-tabs{margin:0}.day-view{flex:0 auto;min-height:0;overflow:auto}.day-chips{scrollbar-width:none;gap:.4rem;padding:.1rem 0 .6rem;display:flex;overflow-x:auto}.day-chips button{border:1px solid var(--line);background:var(--paper);color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;flex:none;padding:.35rem .8rem;font-size:.9rem}.day-chips button.on{background:var(--brand);border-color:var(--brand);color:#fff}.day-meta{flex-wrap:wrap;gap:.25rem 1rem;margin:0 0 .6rem;display:flex}.day-view .boat{background:var(--paper);border:1px solid var(--line);border-radius:8px;margin-bottom:.6rem;overflow:hidden}.day-view h3.course{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin:.8rem 0 .4rem;font-size:.85rem}.day-view .boat h4{background:var(--wash);border-bottom:1px solid var(--line);margin:0;padding:.5rem .75rem;font-size:.95rem}.day-view .boat ul{margin:0;padding:0;list-style:none}.day-view .boat li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:.75rem;padding:.45rem .75rem;display:flex}.day-view .boat li:last-child{border-bottom:0}.day-view .boat li .role{color:var(--muted);font-size:.9rem}.day-view .boat li .who{text-align:right;font-weight:500}.day-view .boat li button.who{font:inherit;padding:0;font-weight:500;text-decoration:none}.day-view .boat li.mine{background:var(--mine,#fff3c4)}.day-view .boat li.one-off .who:after{content:" ✱";color:var(--muted)}.form-list{margin:0;padding:0;list-style:none}.form-list li{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.form-list p{margin:.25rem 0 0}a.button{border:1px solid var(--brand);background:var(--brand);color:#fff;white-space:nowrap;border-radius:6px;padding:.5rem 1rem;text-decoration:none;display:inline-block}.availability .intro{white-space:pre-wrap}.availability fieldset{border:1px solid var(--line);border-radius:6px;margin:.75rem 0;padding:.5rem .75rem .25rem}.availability legend{padding:0 .25rem;font-weight:500}.availability fieldset p{margin:0 0 .25rem}.availability .choices{grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));display:grid}.availability .choices label.inline{margin:.3rem 0}.availability label>span.small{margin-top:.25rem;font-weight:400;display:block}.availability .actions{align-items:center;gap:1rem;margin-top:1rem;display:flex}:root{--ink:#1f2933;--muted:#6b7a8c;--line:#d9e0e7;--paper:#fff;--wash:#f4f6f8;--brand:#0b4f8a;--mine:#fff1c2;--full:#e3f3e6;--some:#fff8e1;--none:#fdecea;--error:#b3261e;color:var(--ink);background:var(--wash);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.4}*{box-sizing:border-box}body{min-height:100vh;margin:0}h1{margin:0 0 .75rem;font-size:1.5rem}h2{margin:0 0 .5rem;font-size:1.1rem}a{color:var(--brand)}.muted{color:var(--muted)}.small{font-size:.85rem}.error{color:var(--error)}.tick{color:#2e7d32}.centred{text-align:left;max-width:32rem;margin:3rem auto;padding:0 1rem}.narrow{max-width:40rem}.card{background:var(--paper);border:1px solid var(--line);border-radius:8px;margin-bottom:1rem;padding:1rem 1.25rem}label{margin:.75rem 0;font-weight:500;display:block}input,select{width:100%;font:inherit;border:1px solid var(--line);background:var(--paper);border-radius:6px;margin-top:.25rem;padding:.5rem .6rem;display:block}.toolbar label,.toolbar select,.topbar select{width:auto;margin:0;display:inline-block}.toolbar label{font-weight:500}.toolbar select{margin-left:.5rem}button{font:inherit;border:1px solid var(--brand);background:var(--brand);color:#fff;cursor:pointer;border-radius:6px;padding:.5rem 1rem}button:disabled{opacity:.5;cursor:default}button.link{color:var(--brand);background:0 0;border:none;padding:0;text-decoration:underline}.tabs{gap:.25rem;margin-bottom:.75rem;display:flex}.tabs button{background:var(--paper);color:var(--ink);border-color:var(--line)}.tabs button[aria-selected=true]{background:var(--brand);color:#fff;border-color:var(--brand)}pre.codes{background:var(--wash);letter-spacing:.05em;border-radius:6px;padding:.75rem 1rem;font-size:1rem}.app{flex-direction:column;height:100dvh;display:flex}.topbar{background:var(--paper);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;padding:.6rem 1rem;display:flex}.brand{font-weight:600}.topbar nav{gap:1rem;display:flex}.topbar nav a{color:var(--muted);border-bottom:2px solid #0000;padding:.25rem 0;text-decoration:none}.topbar nav a.active{color:var(--ink);border-color:var(--brand)}.who{color:var(--muted);align-items:center;gap:.75rem;margin-left:auto;display:flex}main{flex-direction:column;flex:auto;min-height:0;padding:1rem;display:flex;overflow:auto}main>.page{flex-direction:column;flex:auto;min-height:0;display:flex}main>.page>.grid-wrap{flex:0 auto;min-height:8rem;max-height:none}.toolbar{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.grid-wrap{background:var(--paper);border:1px solid var(--line);border-radius:8px;max-height:calc(100vh - 10rem);overflow:auto}table.grid{border-collapse:separate;border-spacing:0;min-width:100%;font-size:.9rem}table.grid th,table.grid td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;text-align:left;padding:.3rem .5rem}table.grid thead th{background:var(--wash);z-index:2;position:sticky;top:0}table.grid th.sticky{background:var(--paper);z-index:1;font-weight:400;position:sticky;left:0}table.grid thead th.sticky{z-index:3;background:var(--wash)}table.grid tr.course th{background:var(--wash);font-weight:600}table.grid .unit{margin-top:.25rem;font-weight:600;display:block}table.grid .role{color:var(--muted);padding-left:.75rem;display:block}table.grid td.off{background:repeating-linear-gradient(45deg, var(--wash), var(--wash) 4px, var(--paper) 4px, var(--paper) 8px)}table.grid td.mine{background:var(--mine);font-weight:600}table.grid td.band-full{background:var(--full)}table.grid td.band-some{background:var(--some)}table.grid td.band-none{background:var(--none)}table.grid td.one-off{font-style:italic}.legend .swatch{vertical-align:-.15em;border:1px solid var(--line);width:1em;height:1em;margin-right:.25rem;display:inline-block}.legend .swatch.mine{background:var(--mine)}.confirm-buttons{flex-wrap:wrap;align-items:center;gap:.4rem;display:inline-flex}button.quiet{background:var(--paper);color:var(--ink);border-color:var(--line);padding:.3rem .7rem}button.chosen{padding:.3rem .7rem}button.chosen.yes{background:#2e7d32;border-color:#2e7d32}button.chosen.no{background:#b3261e;border-color:#b3261e}table.list th,table.list td{white-space:normal}table.list tr.state-confirmed td:first-child{border-left:4px solid #2e7d32}table.list tr.state-declined td:first-child{border-left:4px solid #b3261e}table.list tr.state-pending td:first-child{border-left:4px solid var(--line)}.actions button{margin-bottom:.5rem}ul.calendar{margin:0 0 1.5rem;padding:0;list-style:none}ul.calendar li{border-bottom:1px solid var(--line);grid-template-columns:8rem 1fr;gap:0 1rem;padding:.5rem 0;display:grid}ul.calendar li.mine{background:var(--mine);border-radius:4px;margin:0 -.5rem;padding:.5rem}ul.calendar .date{font-weight:600}ul.calendar .where{grid-column:2;font-size:.9rem}ul.calendar .duty.declined{color:var(--muted);text-decoration:line-through}ul.duties{margin:0 0 1.5rem;padding:0;list-style:none}ul.duties li{border-bottom:1px solid var(--line);grid-template-columns:8rem 1fr;gap:0 1rem;padding:.6rem 0;display:grid}ul.duties .date{font-weight:600}ul.duties .where{color:var(--muted);grid-column:2;font-size:.9rem}ul.duties .answer{grid-column:2;margin-top:.4rem}@media (width<=600px){ul.duties li{grid-template-columns:1fr}ul.duties .where,ul.duties .answer,ul.calendar .where{grid-column:1}ul.calendar li{grid-template-columns:1fr}}.staffbar{background:var(--paper);border-bottom:1px solid var(--line);flex-wrap:wrap;gap:.25rem 1rem;padding:.4rem 1rem;font-size:.9rem;display:flex}.staffbar a{color:var(--ink);border-bottom:2px solid #0000;padding:.2rem 0;text-decoration:none}.staffbar a.active{border-bottom-color:var(--brand);color:var(--brand)}.modal-backdrop{z-index:10;background:#1f293373;justify-content:center;align-items:flex-start;padding:3rem 1rem;display:flex;position:fixed;inset:0;overflow:auto}.modal{background:var(--paper);border-radius:8px;width:100%;max-width:36rem;box-shadow:0 10px 40px #00000040}.modal.wide{max-width:60rem}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:.75rem 1.25rem;display:flex}.modal-head h2{margin:0}.modal-head button.link{color:var(--muted);font-size:1.1rem;text-decoration:none}.modal-body{padding:1rem 1.25rem 1.25rem}.modal-body .actions{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1rem;display:flex}.report dl{grid-template-columns:max-content 1fr;gap:.25rem 1rem;margin:.75rem 0;display:grid}.report dl>div{display:contents}.report dt{color:var(--muted);font-weight:500}.report dd{margin:0}.report ul{margin:0;padding-left:1.2rem}.report h3{margin:.5rem 0 0;font-size:1rem}.unsaved{color:#a05a00;font-weight:500}textarea{width:100%;font:inherit;border:1px solid var(--line);background:var(--paper);border-radius:6px;min-height:4rem;margin-top:.25rem;padding:.5rem .6rem;display:block}input[type=checkbox],input[type=radio]{vertical-align:middle;width:auto;margin:0 .4rem 0 0;display:inline-block}label.inline{margin:.25rem 1rem .25rem 0;font-weight:400;display:inline-block}.row{flex-wrap:wrap;gap:1rem;display:flex}.row>label{flex:12rem}table.list tbody tr.clickable{cursor:pointer}table.list tbody tr.clickable:hover{background:var(--wash)}table.list tbody tr.selected{background:var(--mine)}table.list td.num,table.list th.num{text-align:right}button.small{padding:.2rem .6rem;font-size:.85rem}button.danger{background:var(--error);border-color:var(--error)}.message{background:var(--full);border-radius:6px;margin-bottom:.75rem;padding:.5rem .75rem}.message.warn{background:var(--some)}.message.error{background:var(--none);color:var(--error)}.tick-cell{text-align:center;cursor:pointer;font-size:1.1rem}.tick-cell:hover{background:var(--wash)}.staff-menu{background:var(--paper);border-bottom:1px solid var(--line);font-size:.95rem;position:relative}.staff-menu>summary{cursor:pointer;color:var(--muted);padding:.5rem .75rem;list-style:none}.staff-menu>summary::-webkit-details-marker{display:none}.staff-menu>summary:after{content:" ▾"}.staff-menu[open]>summary:after{content:" ▴"}.staff-menu>nav{z-index:5;background:var(--paper);border-bottom:1px solid var(--line);flex-direction:column;display:flex;position:absolute;top:100%;left:0;right:0;box-shadow:0 8px 16px #0000001f}.staff-menu>nav a{color:var(--ink);border-top:1px solid var(--line);padding:.7rem 1rem;text-decoration:none}.staff-menu>nav a.active{color:var(--brand);font-weight:600}@media (width<=640px){.topbar{gap:.5rem 1rem;padding:.5rem .75rem}.topbar .who>span{display:none}.topbar nav{gap:.75rem}main{padding:.6rem .75rem}h1{margin:.25rem 0 .6rem;font-size:1.25rem}table.grid th.sticky{white-space:normal;max-width:8.5rem}.grid-wrap{border-radius:6px}}
