*{box-sizing:border-box}body{margin:0;font:16px -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#193348;background:#f3f6fa}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #d2dce4;border-radius:8px;background:white;color:#193348;padding:10px 14px}button:hover{border-color:#188473;background:#eefaf7}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #39ad9a;outline-offset:2px}aside{position:fixed;width:210px;height:100vh;background:#112d42;color:white;padding:34px 22px}.brand{font-size:33px;font-weight:850;letter-spacing:5px}.brand span{display:block;font-size:10px;letter-spacing:1.5px;margin-top:10px;color:#a0becf}.nav{margin-top:54px;padding:14px;border-radius:9px;background:#24485f;color:#82e2cb;font-weight:650}.later{font-size:13px;line-height:1.9;color:#9bb1c0;padding:22px 12px}footer{position:absolute;bottom:30px;font-size:12px;line-height:2;color:#9bb1c0}main{margin-left:210px;padding:32px;max-width:1900px}header{display:flex;justify-content:space-between;align-items:center}small{font-size:12px;letter-spacing:1px;color:#657c8c}h1{font-size:30px;letter-spacing:-1px;margin:8px 0 22px}h2{margin:8px 0 20px}.primary{background:#117766;color:white;border-color:#117766;font-weight:650}.primary:hover{background:#095f51;color:white}.notice{font-size:13px;color:#526f81;padding:12px 16px;background:#e5edf4;border-radius:8px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:24px 0}.stats>div{background:white;border:1px solid #dce5ed;border-radius:10px;padding:18px 22px}.stats small{display:block;letter-spacing:0}.stats b{font-size:29px;display:block;margin-top:8px}.stats em{font-size:14px;font-style:normal;font-weight:400}.toolbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.dates{display:flex;gap:6px}input,select,textarea{border:1px solid #cdd9e2;border-radius:7px;padding:10px;background:white;color:#193348;min-width:0}#search{width:220px}.legend{margin-left:auto;display:flex;gap:8px;font-size:12px}.legend span{padding:7px 9px;border-radius:5px}.holding{background:#f7f5ef;border-color:#c9c4b8!important}.approved{background:#ccebd6;border-color:#57a876!important}.confirmed{background:#d5efff;border-color:#72b9df!important}.board{border:1px solid #d5e0e8;background:white;border-radius:12px;overflow:auto;max-height:65vh}table{border-collapse:separate;border-spacing:0;min-width:1140px;width:100%;table-layout:fixed}th{position:sticky;top:0;z-index:2;background:#f5f8fb;padding:15px 8px;font-size:14px;border-bottom:1px solid #d9e2e9}th:first-child{width:160px;left:0;z-index:4}td{border-bottom:1px solid #e3eaf0;border-right:1px solid #e3eaf0;vertical-align:top;height:82px;padding:5px}td:first-child{position:sticky;left:0;background:white;z-index:1;padding:18px 12px;font-size:14px;font-weight:650}td:first-child small{display:block;font-size:11px;margin-top:5px;font-weight:400;letter-spacing:0}.slot{display:block;width:100%;height:68px;border:1px dashed transparent;color:#adbdc9;background:transparent;font-size:24px}.slot:hover{border-color:#99cbbb}.card{display:block;text-align:left;width:100%;padding:8px;border-left:3px solid;font-size:13px;line-height:1.45;margin-bottom:4px;border-radius:5px}.card strong{display:block;font-size:14px}.card small{font-size:11px;letter-spacing:0;color:#415b70}.activitycard{background:#ede8f8;border-color:#a090cd!important}.hint{font-size:13px;color:#6c8292}dialog{border:0;border-radius:16px;padding:26px;box-shadow:0 24px 90px #102b4255;width:min(620px,95vw);max-height:92vh;color:#193348}dialog::backdrop{background:#102b4277;backdrop-filter:blur(3px)}.modalhead{display:flex;justify-content:space-between;align-items:start}.modalhead button{border:0}.fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.fields>label{display:flex;flex-direction:column;gap:7px;font-size:14px}.full{grid-column:1/-1}fieldset{border:1px solid #d8e2e9;border-radius:8px;font-size:14px;display:flex;gap:22px;padding:14px}fieldset label{display:flex;align-items:center;gap:5px}.summary{padding:12px;background:#edf7f4;border-radius:8px;font-size:14px}.actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}#error{color:#aa3445;font-size:14px}.choices{display:grid;gap:12px;margin:20px 0}.choices button{text-align:left;padding:22px}.choices small{display:block;margin-top:8px;letter-spacing:0}#toast{position:fixed;bottom:24px;left:50%;background:#17384b;color:white;padding:14px 22px;border-radius:10px;z-index:10;display:none}[hidden]{display:none!important}@media(max-width:900px){aside{display:none}main{margin:0;padding:18px}.stats{gap:8px}.stats>div{padding:12px}.stats b{font-size:23px}.legend{margin-left:0}h1{font-size:25px}.board{max-height:65vh}}@media(max-width:480px){.fields{grid-template-columns:1fr}.full{grid-column:auto}.stats{grid-template-columns:1fr 1fr}header{gap:10px}.primary{white-space:nowrap}.dates input{width:145px}}

.backup{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px;font-size:13px}.backup span{margin-right:auto;color:#527467}.backup button,.filebutton{font-size:13px;background:white;border:1px solid #cdd9e2;border-radius:7px;padding:9px;cursor:pointer}.filebutton input{display:block;max-width:220px;font-size:12px;margin-top:5px}

th:not(:first-child){width:170px}th small{display:block;font-size:11px;font-weight:400;letter-spacing:0;margin-top:6px}th:first-child{width:150px}

.nav{display:block;width:100%;text-align:left;margin-top:18px;background:transparent;color:#bdd1df;border:0}.nav.active{background:#24485f;color:#82e2cb}.mobileNav{display:none}.settingsTable{overflow:auto;margin:20px 0}.settingsTable table{min-width:700px;table-layout:auto;background:white}.settingsTable td{height:auto;padding:12px;vertical-align:middle}.settingsTable th{position:static;text-align:left}.settingsTable td:first-child{position:static;min-width:210px}.settingsTable input{width:130px}.settingsTable th:not(:first-child){width:auto}@media(max-width:900px){.mobileNav{display:flex;gap:8px;margin-bottom:20px}}

.sharedRates{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-top:22px}.sharedRates>div{padding:20px;background:#e5f4ee;border:1px solid #b9d9cb;border-radius:10px}.sharedRates small{display:block;letter-spacing:0}.sharedRates strong{display:block;margin-top:10px;font-size:22px}
nav{margin-top:40px;display:grid;gap:10px}nav button{text-align:left;background:transparent;color:#c5d6e2;border:0}nav button.active{background:#24485f;color:#83e8ca}footer button{display:block;margin-top:12px}.topline{display:flex;align-items:center;gap:12px;margin:18px 0}.topline #sync{margin-left:auto;font-size:13px;color:#527080}.banner{background:#e4eef7;padding:12px 16px;border-radius:8px;font-size:14px}.tablewrap{overflow:auto;background:white;border:1px solid #d6e2eb;border-radius:10px;margin:18px 0}.tablewrap table{min-width:760px;table-layout:auto}.tablewrap td{height:auto;padding:12px;position:static!important}.tablewrap th{position:static;white-space:nowrap}.tablewrap input{width:100px}.tablewrap th:first-child{min-width:170px}.seasonDates{margin-top:20px;grid-template-columns:repeat(4,1fr)}.stats b{font-size:25px}#eventFields{border:0;padding:0;display:block;margin:0}#eventFields fieldset{display:flex}.fields fieldset{margin:0}.fields input[type=radio]{min-width:16px}.summary{margin-top:18px;line-height:1.8}#globalError,#eventError,#settingsError,#loginError,#cancelError{color:#ab3549}.danger{color:#b03948;border-color:#d5a6af}.cancelled{opacity:.55;text-decoration:line-through}.off{background:#e9edf1;border-color:#94a4b0!important}.login{max-width:480px;margin:8vh auto;background:white;padding:34px;border-radius:16px}.login .brand{color:#132f44}.login form{display:grid;gap:20px}.login label{display:grid;gap:8px}.roles{display:grid;gap:10px}.choices{grid-template-columns:1fr}.stat-sub{font-size:12px}.actions{flex-wrap:wrap}.hint{line-height:1.6}#toast{display:block}#cancelForm label{display:grid;gap:10px}.notice{line-height:1.7}#eventMeta{letter-spacing:0}.card small{font-size:12px}.mobileNav{flex-wrap:wrap}label{font-size:14px}.tablewrap th:first-child{width:auto}@media(max-width:900px){.seasonDates{grid-template-columns:1fr 1fr}.topline{flex-wrap:wrap}.topline #sync{margin-left:0}header{flex-wrap:wrap;gap:8px}.tablewrap{max-width:100%}.login{margin:20px 12px}}@media print{aside,.mobileNav,.banner,.topline,.toolbar,header button,.hint,#globalError,.stats,.slot{display:none!important}main{margin:0;padding:0}.board{max-height:none;overflow:visible;border:0}.board table{min-width:0!important;font-size:10px}.board th,.board td:first-child{position:static}.card{break-inside:avoid;font-size:10px}.card strong{font-size:11px}.card small{font-size:9px}th:not(:first-child){width:auto}}

#printSchedule{display:none}@media print{#workspace{display:none!important}#printSchedule{display:block}#printSchedule table{min-width:0;width:100%;table-layout:auto}#printSchedule td{position:static;height:auto;font-size:12px;padding:8px}#printSchedule th{position:static;width:auto}dialog{display:none}}
.work-panel {margin-top:18px;padding:18px;background:#f0f6f4;border-radius:12px;border:1px solid #c7ddd6}
.work-panel .fields {margin:12px 0}
.work-panel h3 {margin-top:0}
#payrollTable td,#payrollTable th {white-space:nowrap}
/* September feedback: non-modal right editor leaves the schedule interactive. */
body.editor-open main{margin-right:min(490px,50vw)}
#editor{position:fixed;inset:0 0 0 auto;margin:0;width:min(490px,50vw);min-width:285px;max-width:none;height:100vh;max-height:100vh;border-radius:0;padding:22px;z-index:8;border-left:1px solid #cbdadf;box-shadow:-10px 0 30px #16334420;overflow:auto}
#editor .fields{gap:12px;grid-template-columns:1fr 1fr}#editor input,#editor select,#editor textarea{width:100%}#editor input[type=checkbox],#editor input[type=radio]{width:auto}#editor fieldset{gap:12px;flex-wrap:wrap}#editor .modalhead{position:sticky;top:-22px;background:white;z-index:2;padding-top:10px}#editor .actions{position:sticky;bottom:-22px;background:white;padding:12px 0}#editor details{margin:16px 0;padding:12px;border:1px solid #dce5ed;border-radius:9px}summary{cursor:pointer;font-weight:600}#editor .summary{font-size:13px}#groupDays{display:flex;gap:6px;flex-wrap:wrap}#groupDays button{padding:6px;font-size:12px}#multiHint{margin:0}#eventHistory{font-size:12px;line-height:1.7}#eventHistory article{padding:8px 0;border-bottom:1px solid #ddd}.billingTabs{display:flex;gap:8px;flex-wrap:wrap;margin:15px 0}.billingTabs .active{background:#117766;color:white}.billingTabs button{font-size:13px}#billingTable td{font-size:13px}#billingTable td:first-child{min-width:45px}#billingTable button{font-size:12px;padding:6px}#billingError,#invoiceError,#invoiceActionError{color:#b23545}.rest{background:#e8ecf0;border-color:#8d9da7!important}#invoiceContent{line-height:1.8}#invoiceContent table{min-width:0;table-layout:auto;font-size:12px}#invoiceContent td{height:auto;position:static;padding:6px}#invoiceActionForm{border-top:1px solid #ddd;padding-top:15px}
@media(max-width:700px){body.editor-open main{margin-right:285px;padding:10px}#editor{width:285px;padding:14px}#editor .fields{grid-template-columns:1fr}#editor .full{grid-column:1/-1}#editor .actions{bottom:-14px}body.editor-open .stats{grid-template-columns:1fr 1fr}body.editor-open h1{font-size:21px}}
@media print{#editor{display:none!important}body.editor-open main{margin-right:0}}
.card[draggable="true"]{cursor:grab}.card[draggable="true"]:active{cursor:grabbing}
.dragging-lesson #grid td[data-date]:not(.same-date){opacity:.35}
#grid td.same-date{background:#edf8f4}#grid td.drop-target{outline:3px solid #168578;outline-offset:-3px;background:#d0eee5}
.card[draggable="true"] *{pointer-events:none}
#bookingDates{display:flex;flex-wrap:wrap;gap:8px}#bookingDates[hidden]{display:none}#bookingDates label{display:flex;align-items:center;gap:5px;padding:7px;border:1px solid #ccdcd8;border-radius:8px}
#gamePlanPanel header{display:flex;flex-wrap:wrap;gap:10px;align-items:center}#gameContent article{border-top:1px solid #c8d6da;padding:8px}#gameContent .my-car{background:#d5eee4;border:2px solid #168578}#gameCars fieldset{margin:12px 0}#gameCars fieldset>div{display:flex;flex-wrap:wrap;gap:10px}#gameCars input[type=checkbox]{width:auto}

body.game-open main{margin-right:min(490px,50vw)}
#gameDialog{position:fixed;inset:0 0 0 auto;margin:0;width:min(490px,50vw);min-width:285px;max-width:none;height:100vh;max-height:100vh;border-radius:0;padding:22px;z-index:8;border-left:1px solid #cbdadf;box-shadow:-10px 0 30px #16334420;overflow:auto}
#gameDialog .modalhead{position:sticky;top:-22px;background:white;z-index:2;display:flex;align-items:center;justify-content:space-between;padding-top:10px}#gameDialog .actions{position:sticky;bottom:-22px;background:white;padding:12px 0;display:flex;flex-wrap:wrap;gap:8px}#gameDialog input:not([type=checkbox]),#gameDialog textarea{width:100%}#gameCars fieldset{min-width:0}#gameDialog label{overflow-wrap:anywhere}
@media(max-width:700px){body.game-open main{margin-right:285px;padding:10px}#gameDialog{width:285px;padding:14px}#gameDialog .modalhead{top:-14px}#gameDialog .actions{bottom:-14px}}
@media print{#gameDialog{display:none!important}body.game-open main{margin-right:0}}
#gameCars>fieldset{display:block;width:100%;min-width:0}
#gameCars>fieldset>label{display:flex;flex-direction:column;align-items:stretch;gap:6px;margin:12px 0}
#gameCars>fieldset>label:has(input[type=checkbox]),#gameCars>fieldset>div>label{flex-direction:row;align-items:center;gap:7px}
#gameCars input[type=checkbox]{flex-shrink:0}
#gameCars>fieldset>div{margin-top:16px;padding-top:12px;border-top:1px solid #dce5ed}

#grid td.overlap-cell{background:#ffe4e6;box-shadow:inset 0 0 0 2px #d94758}.overlap-label{color:#a21932;font-size:12px;font-weight:700;padding:5px}#grid td.overlap-cell.drop-target{outline:3px solid #168578}

/* Adjustable schedule overview. Columns keep every instructor available horizontally. */
.schedule-toolbar{gap:8px;margin:12px 0}.schedule-toolbar label{display:flex;flex-direction:row;align-items:center;gap:5px;font-size:12px}.schedule-toolbar select{padding:6px}.schedule-toolbar button{padding:7px 10px}
#booking .stats{margin:10px 0;gap:8px}#booking .stats>div{padding:8px 12px}#booking .stats b{font-size:18px}#booking header h1{margin:4px 0 10px;font-size:25px}
#gamePlanPanel{padding:8px 12px}#gamePlanPanel h2{font-size:16px;margin:0}#gameContent{max-height:100px;overflow:auto}#gameContent p{margin:6px 0}
#grid{table-layout:fixed}#grid th:not(:first-child){width:auto}#grid th:first-child{width:62px}#grid th{padding:6px 2px;font-size:12px;overflow:hidden;text-overflow:ellipsis}#grid th small{display:none}
#grid td{height:44px;padding:2px}#grid td:first-child{padding:5px;font-size:12px}#grid td:first-child small{font-size:10px;margin:0}
#grid .card{padding:4px;font-size:11px;line-height:1.2;margin:0 0 2px}#grid .card strong,#grid .card small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}#grid .slot{height:18px;font-size:16px;padding:0}#grid td:has(.card) .slot{height:10px;font-size:12px}#grid .overlap-label{font-size:9px;padding:1px}
#booking .board{max-height:calc(100vh - 320px);min-height:350px}
.calendar-focus aside,.calendar-focus #booking>header,.calendar-focus #gamePlanPanel,.calendar-focus #leavePanel,.calendar-focus #stats,.calendar-focus .banner{display:none}
.calendar-focus main{margin-left:0;padding:10px}.calendar-focus .mobileNav{display:flex}.calendar-focus #booking .board{max-height:calc(100vh - 160px);min-height:350px}
#grid.dense-dates td{height:18px;padding:0 1px}#grid.dense-dates td:first-child{font-size:10px;padding:0 3px}#grid.dense-dates td:first-child small{display:none}#grid.dense-dates .card{padding:1px 2px;margin:0;font-size:9px}#grid.dense-dates .card strong,#grid.dense-dates .card small{font-size:9px;line-height:1.05}#grid.dense-dates .slot{height:16px;font-size:10px}#grid.dense-dates td:has(.card) .slot{display:none}
#grid.all-staff th{font-size:10px}#grid.all-staff th:first-child{width:45px}#grid.all-staff .card{padding:2px}#grid.all-staff .card strong,#grid.all-staff .card small{font-size:9px}

#booking .cell-content{max-height:46px;overflow:auto}#booking .board{min-height:0;max-height:calc(100vh - 290px)}
body:has(#booking:not([hidden])) .banner{display:none}body:has(#booking:not([hidden])) main{padding:12px 20px}#booking .stats{display:none}#booking .hint{margin:5px 0}#booking #gamePlanPanel{margin:6px 0}#booking #gamePlanPanel input{padding:5px}#booking #gamePlanPanel button{padding:6px 10px}
.calendar-focus .topline{margin:4px 0}.calendar-focus .mobileNav{margin:0}.calendar-focus .mobileNav button{padding:5px 10px}.calendar-focus #booking .board{max-height:calc(100vh - 150px)}
#grid.dense-dates{--day-height: max(12px,calc((100vh - 220px)/var(--shown-days)))}#grid.dense-dates td{height:var(--day-height)}#grid.dense-dates .cell-content{max-height:var(--day-height);height:var(--day-height);overflow:auto}#grid.dense-dates .card{white-space:nowrap;height:var(--day-height);overflow:hidden}#grid.dense-dates .card strong,#grid.dense-dates .card small{display:inline;font-size:9px}#grid.dense-dates .card small:before{content:' / '}#grid.dense-dates .overlap-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:10px;line-height:10px}#grid.dense-dates .slot{height:var(--day-height)}

#grid td{height:38px}#booking .cell-content{max-height:36px;overflow-x:hidden;scrollbar-width:thin}#grid td:has(.card) .slot{display:none}#grid .cell-content::-webkit-scrollbar{width:4px;height:4px}#grid .cell-content::-webkit-scrollbar-thumb{background:#a5b5be;border-radius:3px}
#grid.dense-dates{--day-height:max(12px,calc((100vh - 250px)/var(--shown-days)))}#grid.dense-dates .overlap-label{display:none}

#grid td.multiple-events{position:relative}#grid td.multiple-events:after{content:attr(data-count);position:absolute;right:0;top:0;background:#17384b;color:white;border-radius:3px;padding:0 2px;font-size:9px;pointer-events:none}

.view-segment{display:inline-flex;align-items:center;gap:2px;padding:3px;background:#e4ebef;border-radius:10px}.view-segment>span{padding:0 7px;font-size:12px;color:#526b7c}.schedule-toolbar .view-segment button{border:0;background:transparent;padding:7px 11px;font-size:13px;border-radius:7px}.schedule-toolbar .view-segment button[aria-pressed=true]{background:#117766;color:white;box-shadow:0 1px 4px #17384b20}.schedule-toolbar .view-segment button:hover{background:#d0e5df}.schedule-toolbar .view-segment button[aria-pressed=true]:hover{background:#095f51}
#grid .card-detail{display:none}#grid.roomy-cards .card-detail{display:block}#grid.roomy-cards .card{padding:5px 6px}#grid.roomy-cards .card strong{font-size:12px}#grid.roomy-cards .card small{font-size:11px;line-height:1.25}
#grid td,#grid.dense-dates td{height:var(--fit-row,44px)}#booking #grid .cell-content{height:calc(var(--fit-row,44px) - 4px);max-height:calc(var(--fit-row,44px) - 4px);overflow-y:auto}#grid.dense-dates{--day-height:var(--fit-row,18px)}#grid .cell-content{scrollbar-width:thin}#grid:not(.dense-dates) .slot{height:calc(var(--fit-row,44px) - 6px)}

#grid.roomy-cards .card:has(.card-detail)>small{display:none}

/* Click-to-zoom replaces every per-cell scrollbar. */
#booking #grid .cell-content{overflow:hidden;scrollbar-width:none}#grid .cell-content::-webkit-scrollbar{display:none}.date-zoom-button{display:block;border:0;background:transparent;padding:1px;font-size:10px;color:#117766}#grid.dense-dates .date-zoom-button{display:none}#grid td.has-booking{cursor:zoom-in}#zoomDayLabel{font-size:13px;color:#117766}
#booking #grid.day-zoom td{height:auto;vertical-align:top}#booking #grid.day-zoom .cell-content{height:auto;max-height:none;overflow:visible;padding-bottom:12px}#grid.day-zoom .card{height:auto;white-space:normal;margin:5px 0;padding:9px;font-size:13px}#grid.day-zoom .card strong,#grid.day-zoom .card small{display:block;white-space:normal;overflow:visible;text-overflow:clip;font-size:12px;line-height:1.5}#grid.day-zoom .card strong{font-size:14px}#grid.day-zoom .card small:before{content:none}#grid.day-zoom .card-detail{display:block}#grid.day-zoom .card:has(.card-detail)>small{display:none}#grid.day-zoom .overlap-label{display:block;height:auto;white-space:normal}#grid.day-zoom td.has-booking{cursor:default}#grid.day-zoom td .slot{display:block;height:35px}#grid.day-zoom td:first-child small,#grid.day-zoom .date-zoom-button{display:block}
/* Show each booking without clipping it behind another booking. */
#booking #grid .cell-content{height:auto;min-height:calc(var(--fit-row,44px) - 4px);max-height:none;overflow:visible}
#grid .card{position:relative}#grid .time-band{display:block!important;font-size:10px!important;font-weight:700;line-height:1.3;color:#193348;padding-bottom:2px}
#grid .card[data-period=morning]{border-top:3px solid #e7a32b}
#grid .card[data-period=afternoon]{border-top:3px solid #3c8ac4}
#grid .card[data-period=evening]{border-top:3px solid #8760aa}
#grid .card[data-period=full]{border-top:3px solid #458b76}
#grid.dense-dates .card{height:auto;min-height:var(--day-height);white-space:normal}
#grid.dense-dates .time-band{font-size:9px!important;display:block!important}
#grid.dense-dates .card small:before{content:none}
#grid.dense-dates .cell-content{height:auto!important;max-height:none!important}

/* Fixed time lanes allow comparison across instructors without opening bookings. */
#grid:not(.day-zoom) .cell-content{padding:0;min-height:0;height:auto!important;max-height:none!important}
.time-lanes{display:grid;grid-template-rows:repeat(3,minmax(26px,auto));gap:0}
.time-lane{display:flex;align-items:center;gap:2px;min-height:26px;border-bottom:1px solid #dde5e9;overflow:hidden;position:relative}
.time-lane:last-child{border-bottom:0}.lane-label{font-size:9px;color:#607888;flex-shrink:0}.lane-free{color:#b7c5cb;font-size:11px}.lane-booking{padding:3px 2px;border-radius:3px;border:1px solid #aabfc9;font-size:10px;line-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1;text-align:left}
.time-lane.morning{background:#fffaf0}.time-lane.afternoon{background:#f0f7fd}.time-lane.evening{background:#f6f3fa}
#grid.all-staff .lane-label{font-size:8px;position:absolute;left:1px;top:0;line-height:9px;pointer-events:none}#grid.all-staff .time-lane{padding-top:9px;min-height:30px}#grid.all-staff .lane-booking{font-size:9px;padding:0 1px}
#grid:not(.day-zoom) td{padding:0 1px!important;height:auto!important}#grid:not(.day-zoom) td:first-child{padding:5px!important}
#grid .time-lanes{grid-template-rows:repeat(3,30px)}#grid .time-lane,#grid.all-staff .time-lane{height:30px;min-height:30px;max-height:30px;box-sizing:border-box}#grid .lane-free{padding:0;border:0;background:transparent;line-height:18px;height:18px;width:100%;text-align:center}#grid .lane-booking{height:20px;line-height:16px;padding:1px 2px}

#grid .time-lanes{grid-template-rows:repeat(2,30px)}#grid tr.has-evening .time-lanes{grid-template-rows:repeat(3,30px)}#grid.all-staff .time-lane{padding-top:0}#grid.all-staff .time-lane.evening{padding-top:9px}

#grid .time-lanes{position:relative}#grid .full-day-layer{position:absolute;top:0;left:0;right:0;height:60px;display:flex;gap:2px;padding:1px;z-index:1}#grid .full-day-booking{height:100%;white-space:normal;overflow:hidden;line-height:1.3;display:flex;flex-direction:column;justify-content:center;gap:3px}#grid .full-day-booking small{font-size:9px}#grid .full-day-conflict .full-day-layer{right:50%}#grid .full-day-conflict .time-lane.morning,#grid .full-day-conflict .time-lane.afternoon{margin-left:50%}

#grid .date-zoom-button,#grid.dense-dates .date-zoom-button{display:block;padding:2px 0;font-size:12px;font-weight:700;text-align:left}#grid.day-zoom td:first-child{width:62px}#grid td.has-booking{cursor:default}

#grid .daily-resources{display:flex;flex-direction:column;gap:3px;margin-top:5px;font-size:10px;font-weight:600;white-space:nowrap;line-height:1.3}#grid .daily-resources span{display:block}
#monthlyDialog{width:min(1100px,96vw)}#monthlyDialog .fields{margin:12px 0}#monthlyDialog label{display:flex;flex-direction:column;gap:6px}#monthlyDialog details{margin:15px 0;padding:12px;border:1px solid #ccdbe2;border-radius:8px}#monthlyRates table{table-layout:auto;min-width:700px}#monthlyRates td{position:static;height:auto;padding:6px}#monthlyRates input{width:85px}#monthlyError{color:#a21932}.agent-invoice{background:white;padding:25px;color:#111;font-size:12px}.agent-invoice p{white-space:pre-line;line-height:1.5;margin:10px 0}.invoice-heading,.invoice-parties{display:flex;justify-content:space-between;gap:20px}.invoice-heading strong{font-size:25px;color:#d63c46}.agent-invoice table{min-width:0!important;table-layout:auto;width:100%;font-size:11px}.agent-invoice td,.agent-invoice th{position:static!important;height:auto;padding:6px;width:auto!important;border:1px solid #ccc}.agent-invoice td:last-child{text-align:right}.agent-invoice tr:last-child{font-weight:bold}.agent-invoice h1{font-size:26px;margin:0}.agent-invoice .invoice-parties p{width:48%}@media print{.agent-invoice{padding:0;font-size:10px}.agent-invoice p{line-height:1.25;margin:8px 0}.agent-invoice td,.agent-invoice th{font-size:10px!important;padding:4px!important}.agent-invoice{break-inside:avoid}#monthlyDialog{display:none!important}}

.invoice-heading img{width:220px;object-fit:contain}@media print{.invoice-downloads{display:none!important}.invoice-heading img{width:180px}}

.booking-status{margin:0 0 18px}.status-buttons{display:flex;gap:8px;margin-top:8px}.status-buttons button{flex:1}.status-buttons button[aria-pressed="true"]{background:#087f70;color:white;border-color:#087f70;font-weight:700}

#grid.instructor-schedule .cell-content{height:auto!important;max-height:none!important;min-height:120px;overflow:visible!important;display:block!important}#grid.instructor-schedule .card{display:flex!important;flex-direction:column;gap:5px;position:relative!important;height:auto!important;max-height:none!important;min-height:112px;padding:12px;white-space:normal!important;overflow:visible!important;width:100%;text-align:left}#grid.instructor-schedule .card strong,#grid.instructor-schedule .card span{display:block!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;font-size:14px}#grid.instructor-schedule td{height:auto!important}

#slipDialog{width:min(900px,95vw)}#slipDialog .fields label{display:flex;flex-direction:column;gap:8px}#slipError{color:#ac2941}[data-report][aria-pressed="true"]{background:#087f70;color:white}.slip-list>div{padding:12px;border-bottom:1px solid #ddd}

/* Large schedule viewport: page scroll brings the full calendar into view. */
#booking #grid.day-zoom .cell-content{min-height:180px}#grid.day-zoom .card{padding:12px;font-size:15px}#grid.day-zoom .card strong{font-size:16px}#grid.day-zoom .card small{font-size:14px}#booking .board{scroll-margin-top:16px}

#exitCalendarButton{display:none}
@media screen{
body.schedule-fullscreen{overflow:hidden}
body.schedule-fullscreen aside,body.schedule-fullscreen .mobileNav,body.schedule-fullscreen .topline,body.schedule-fullscreen .banner{display:none!important}
body.schedule-fullscreen main{margin:0!important;padding:0!important}
body.schedule-fullscreen #booking .board{position:fixed;inset:0;z-index:40;width:100vw;height:100dvh!important;max-height:100dvh!important;border:0;border-radius:0;padding-top:42px;box-sizing:border-box;background:white;overflow:auto}
body.schedule-fullscreen #exitCalendarButton{display:block;position:fixed;top:5px;right:14px;z-index:45;padding:6px 12px;background:#17384b;color:white}
body.schedule-fullscreen #grid thead th{top:0}
body.schedule-fullscreen #editor,body.schedule-fullscreen #gameDialog{z-index:60}
}

.staff-focus-button{border:0;background:transparent;color:inherit;font:inherit;font-weight:700;padding:5px;cursor:pointer}
#grid tr:not(.has-evening) .time-lanes{grid-template-rows:repeat(2,45px)}
#grid tr:not(.has-evening) .time-lane{height:45px;min-height:45px;max-height:none}
#grid tr:not(.has-evening) .full-day-layer{height:90px}
#grid tr:not(.has-evening) .lane-booking:not(.full-day-booking){height:auto;min-height:28px;white-space:normal}
#grid .time-lane.evening{background:white}
body.schedule-fullscreen #exitStaffFocus{position:fixed;display:block;top:5px;left:10px;z-index:46;background:white}
#chooser{z-index:80}

.status-buttons button[data-booking-status="holding"][aria-pressed="true"]{background:#f7f5ef;color:#193348;border-color:#c9c4b8}
.status-buttons button[data-booking-status="approved"][aria-pressed="true"]{background:#ccebd6;color:#193348;border-color:#57a876}
.status-buttons button[data-booking-status="confirmed"][aria-pressed="true"]{background:#d5efff;color:#193348;border-color:#72b9df}


#grid .sport-label{display:inline!important;font-weight:800!important;font-size:inherit;white-space:nowrap}

/* Stable default columns; fullscreen fits all internal instructors dynamically. */
#grid{table-layout:fixed}
#grid th:first-child,#grid td:first-child{width:62px!important;min-width:62px;max-width:62px}
#grid th:not(:first-child){width:var(--staff-column-width,100px)}
#grid .staff-focus-button{max-width:100%;white-space:normal;overflow-wrap:anywhere}
body.schedule-fullscreen #grid th{padding-left:2px;padding-right:2px}

/* Recolour only the backpack, preserving the native emoji shape. */
#grid .avi-pack-icon{display:inline-block!important;filter:hue-rotate(210deg) saturate(1.15);font-size:inherit!important;line-height:inherit;vertical-align:baseline}

/* Approved 83px top-navigation layout. */
#workspace>aside{display:none!important}
#workspace>main{margin:0!important;max-width:none;padding:12px 16px}
#workspace .mobileNav{display:flex!important;align-items:center;flex-wrap:wrap;gap:6px;background:white;border-bottom:1px solid #dbe5eb;padding:8px 0;margin:0 0 12px;position:static}
#workspace .mobileNav .top-brand{font-size:22px;letter-spacing:3px;margin-right:18px}
#workspace .mobileNav button{padding:7px 10px;font-size:13px}
#workspace .mobileNav .topline{margin:0 0 0 auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#workspace .mobileNav .topline select{padding:6px}
#booking>header{display:none}
#booking .schedule-toolbar{gap:8px;margin-bottom:10px}
#booking .schedule-toolbar button,#booking .schedule-toolbar input{padding:7px 9px}
#leavePanel{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 10px}
#leavePanel button{padding:6px 9px;font-size:12px}
#grid:not(.day-zoom) .time-lanes,#grid:not(.day-zoom) tr:not(.has-evening) .time-lanes{grid-template-rows:repeat(2,28px)}
#grid:not(.day-zoom) tr.has-evening .time-lanes{grid-template-rows:repeat(3,28px)}
#grid:not(.day-zoom) .time-lane,#grid:not(.day-zoom) tr:not(.has-evening) .time-lane{height:28px;min-height:28px;max-height:28px;padding:0}
#grid:not(.day-zoom) .full-day-layer,#grid:not(.day-zoom) tr:not(.has-evening) .full-day-layer{height:56px}
#grid:not(.day-zoom) .lane-booking:not(.full-day-booking){min-height:24px;height:24px;padding:1px 2px}
#grid .lane-booking,#grid .card{text-align:center;align-items:center}
#grid .staff-focus-button{text-align:center}
#grid .daily-resources{gap:0;margin-top:2px}
#grid:not(.day-zoom) td:first-child{padding:2px!important}
#grid:not(.day-zoom) .date-zoom-button{padding:0}
#grid:not(.day-zoom) td:first-child small{margin:0}
#grid:not(.day-zoom) th{padding:8px 2px}
body.schedule-fullscreen #workspace .mobileNav{display:none!important}

#grid td:first-child,#grid th:first-child{text-align:center}
#grid .date-zoom-button{width:100%;text-align:center}
#grid .daily-resources{align-items:center}

/* Overview booking text: 10px, retaining larger detail views. */
#grid:not(.day-zoom) .lane-booking,
#grid:not(.day-zoom) .full-day-booking small{font-size:10px!important}

/* Compact overview must not retain the old viewport-based minimum cell height. */
#booking #grid:not(.day-zoom):not(.instructor-schedule) .cell-content{min-height:0!important;height:auto!important;max-height:none!important}
#booking #grid:not(.day-zoom):not(.instructor-schedule) td{height:auto!important;min-height:0!important}

/* Match the selected compact mock: horizontal resources, two unclipped lines. */
#grid .daily-resources{flex-direction:row;justify-content:center;align-items:center;gap:3px;white-space:nowrap;font-size:9px}
#grid .daily-resources>span{display:inline-flex;align-items:center;white-space:nowrap}
#grid:not(.day-zoom) .lane-booking:not(.full-day-booking){height:26px;min-height:26px;padding:0 1px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;line-height:12px;white-space:nowrap}
#grid .compact-guest,#grid .compact-symbols{display:block;max-width:100%;line-height:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;letter-spacing:0}
#grid .compact-symbols{overflow:visible}
#grid:not(.day-zoom) .full-day-booking{line-height:13px;gap:3px;text-align:center;justify-content:center}
#grid .full-day-booking small{letter-spacing:0;line-height:13px}

/* Match approved 83px preview: 56px rows with inset cards. */
#booking #grid:not(.day-zoom):not(.instructor-schedule) td:not(:first-child){padding:2px!important;height:56px!important}
#booking #grid:not(.day-zoom):not(.instructor-schedule) .time-lanes{grid-template-rows:repeat(2,25px);min-height:50px}
#booking #grid:not(.day-zoom):not(.instructor-schedule) tr.has-evening .time-lanes{grid-template-rows:repeat(3,25px)}
#booking #grid:not(.day-zoom):not(.instructor-schedule) .time-lane{height:25px;min-height:25px;max-height:25px}
#booking #grid:not(.day-zoom):not(.instructor-schedule) .full-day-layer{height:50px;padding:0;gap:2px}
#booking #grid:not(.day-zoom):not(.instructor-schedule) .full-day-booking{height:50px;margin:0;padding:3px}
#booking #grid:not(.day-zoom):not(.instructor-schedule) .lane-booking:not(.full-day-booking){height:24px;min-height:24px;margin:0;padding:0 1px;line-height:11px}
#booking #grid:not(.day-zoom) .compact-guest,#booking #grid:not(.day-zoom) .compact-symbols{line-height:11px}
.booking-range{grid-column:1/-1;width:100%}.booking-range>button{width:100%;text-align:center;padding:14px;font-weight:600}.range-calendar{padding:12px;border:1px solid #ccd9df;border-radius:10px;margin:8px 0;background:white}.range-header{display:flex;justify-content:space-between}.range-calendar p{font-size:12px}.range-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;text-align:center}.range-days button{padding:9px 0;min-width:0}.range-days .selected{background:#ccece5;border-color:#138071}.range-days .other-month{opacity:.5}.range-days button:disabled{opacity:.25}
.bulk-toolbar{display:flex;align-items:center;gap:8px;margin:8px 0}.bulk-selected{outline:3px solid #087f71!important;outline-offset:-3px;background-color:#d6f3ec!important}
/* Keep scrolled booking layers beneath the frozen date column. */
#booking #grid tbody td:not(:first-child){position:relative;z-index:0;isolation:isolate}
#booking #grid tbody td:first-child{position:sticky;left:0;z-index:5;background:#fff;background-clip:border-box;box-shadow:1px 0 0 #d5e0e8}
#booking #grid thead th{z-index:6}
#booking #grid thead th:first-child{z-index:7;left:0;background:#f5f8fb}
