:root{--ink:#243c42;--muted:#78868a;--line:#e4e9e8;--bg:#f5f7f6;--accent:#345d66;--light:#dfecee;--pale:#f0f6f6;--label:218px;font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Noto Sans CJK SC",sans-serif;color:var(--ink);background:var(--bg);font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit;transition:background .15s,transform .15s}button:hover{background:#edf2f1}button:disabled{cursor:wait;opacity:.6}a{color:inherit;text-decoration:none}button,input,select,textarea{border:1px solid var(--line);border-radius:7px;background:white}button{padding:10px 14px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #7ca5ae;outline-offset:2px}h1,h2,h3,p{margin:0}h1{font-size:29px;font-weight:620;letter-spacing:-1px}h2{font-size:21px}h3{font-size:15px}.muted{color:var(--muted);line-height:1.7}.eyebrow{font-size:10px;font-weight:650;letter-spacing:1.7px;color:#819395;margin-bottom:11px}.hidden{display:none!important}.primary{background:var(--accent);color:white;border-color:var(--accent);font-weight:550;white-space:nowrap}.primary:hover{background:#254a52}.quiet{border:none;background:transparent;color:var(--muted);padding:7px}.pill{font-size:11px;background:var(--pale);padding:5px 9px;border-radius:5px;color:var(--accent);white-space:nowrap}.sidebar{width:208px;position:fixed;top:0;bottom:0;border-right:1px solid var(--line);padding:29px 18px;background:#fff;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:10px;font-size:21px;font-weight:650;letter-spacing:-.6px}.brand small{display:block;font-size:10px;font-weight:400;letter-spacing:.5px;color:var(--muted);margin-top:5px}.brand-mark{background:var(--accent);color:white;width:35px;height:38px;display:grid;place-items:center;border-radius:10px 2px 10px 2px;font-weight:700;font-size:24px}.nav-label{font-size:10px;letter-spacing:1.6px;color:#9aa7a8;margin:44px 12px 14px}nav{display:flex;flex-direction:column;gap:7px}nav button{background:transparent;border:none;text-align:left;display:flex;gap:15px;align-items:center;padding:13px 15px;color:#7b878b;font-size:13px}nav button span{font-size:19px;width:19px;line-height:1}nav button.active{background:var(--pale);color:var(--accent);font-weight:600}.sidebar-bottom{margin-top:auto;padding:20px 10px 0}.sidebar-bottom p{color:#9aa6a8;font-size:11px;margin:16px 0 9px}.sidebar-bottom small{font-size:9px;color:#adb7b7}.season-badge{border:1px solid var(--line);border-radius:6px;padding:10px;font-size:11px}.season-badge span{float:right;color:var(--muted)}main{margin-left:208px}.topbar{height:74px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 30px;background:#fff;font-size:11px;color:var(--muted);gap:12px}.topbar strong{color:var(--ink);font-weight:500}.slash{margin:0 12px;color:#bcc6c6}.top-right{display:flex;align-items:center;gap:15px}.sync{font-size:10px}.sync::before{content:'●';color:#6a9298;font-size:7px;margin-right:5px}.account{font-size:11px;padding:8px 10px;background:#f7f9f8}.mobile-brand{display:none}.content{padding:32px 30px;max-width:1800px;margin:auto}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:27px;gap:15px}.page-heading .muted{font-size:12px;margin-top:10px}.stats{display:grid;grid-template-columns:repeat(4,1fr);background:white;border:1px solid var(--line);border-radius:10px;margin-bottom:25px}.stat{padding:20px 23px;border-right:1px solid var(--line)}.stat:last-child{border:0}.stat label{display:block;font-size:11px;color:var(--muted);margin-bottom:11px}.stat strong{font-size:30px;line-height:1.2;font-weight:600;letter-spacing:-1px;font-variant-numeric:tabular-nums}.stat strong small{font-size:11px;font-weight:400;margin-left:7px;color:var(--muted);letter-spacing:0}.stat p{font-size:10px;color:#8b999b;margin-top:7px}.stat.highlight{background:#eef5f5;border-radius:0 10px 10px 0}.toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px;gap:13px;flex-wrap:wrap}.date-control{display:flex;align-items:center;gap:5px}.date-control button{padding:8px 11px}.date-control input{padding:8px;background:white;font-weight:550;color:var(--ink);max-width:150px}.date-control span{font-size:11px;color:var(--muted);margin-left:7px}.filters{display:flex;border:1px solid var(--line);border-radius:7px;padding:3px;background:white}.filters button{border:0;padding:7px 12px;font-size:11px;background:transparent}.filters .selected{background:var(--pale);color:var(--accent);font-weight:600}.schedule-card{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden}.sheet-caption{padding:17px 20px;display:flex;justify-content:space-between;align-items:center;gap:10px;border-bottom:1px solid var(--line);font-size:11px}.sheet-caption strong{font-size:13px;font-weight:550}.legend{display:flex;gap:16px;align-items:center;font-size:10px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;background:var(--light);margin-right:5px}.legend .dark{background:var(--accent)}.scroll-sheet{overflow:auto;max-height:640px}.sheet{min-width:calc(var(--label) + var(--count)*33px)}.sheet-row{display:flex;border-bottom:1px solid #edf0ef;min-height:68px}.sheet-row:last-child{border-bottom:0}.row-label{width:var(--label);min-width:var(--label);padding:14px 17px;background:white;position:sticky;left:0;z-index:3;border-right:1px solid var(--line);display:flex;flex-direction:column;justify-content:center;gap:5px}.row-label strong{font-size:11px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-label small{font-size:10px;color:var(--muted)}.track{flex:1;position:relative;background-image:linear-gradient(to right,#e9eeee 1px,transparent 1px);background-size:calc(100% / var(--count)) 100%;min-width:0}.time-row{height:51px;min-height:51px;position:sticky;top:0;z-index:5;background:#f8faf9}.time-row .row-label{background:#f8faf9;font-size:10px;color:var(--muted)}.time-cells,.capacity-cells{display:grid;grid-template-columns:repeat(var(--count),1fr);height:100%}.time-cells span{padding:19px 0 0 4px;font-size:9px;color:#9aa7a9;white-space:nowrap;position:relative}.time-cells .hour{color:#50696e;font-weight:650}.time-cells .hour:before{content:'';position:absolute;left:0;top:0;bottom:0;border-left:1px solid #d5e0df}.reservation{position:absolute;top:13px;height:42px;display:flex;gap:0;border:0;border-radius:5px;overflow:hidden;background:transparent;padding:0;text-align:left;min-width:8px;box-shadow:0 1px 2px #183f4512}.reservation:hover{filter:brightness(.96);background:transparent}.prep{background:var(--light);height:100%;color:#728f95;display:grid;place-items:center;font-size:9px}.ride{background:var(--accent);height:100%;color:white;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;padding:5px 8px;overflow:hidden;white-space:nowrap;flex:1}.ride strong{font-size:12px;font-weight:550}.ride small{font-size:8px;opacity:.75}.canceled .ride{background:#e4e9e8;color:#8d9b9d;text-decoration:line-through}.canceled .prep{opacity:.4}.time-marker{position:absolute;top:0;bottom:0;border-left:1px dashed #456c75;pointer-events:none;z-index:2}.time-marker:before{content:'';width:5px;height:5px;border-radius:50%;background:var(--accent);position:absolute;left:-3px;top:0}.capacity-row{min-height:65px;border-top:1px solid #d9e5e5;background:#f1f7f7}.capacity-row .row-label{background:#f1f7f7}.capacity-row .row-label strong{color:var(--accent)}.capacity-cells button{border:0;border-radius:0;border-right:1px solid #e1eaea;background:transparent;font-size:12px;font-variant-numeric:tabular-nums;color:var(--accent);padding:0}.capacity-cells button.shortage{font-weight:750;text-decoration:underline;background:#d8e6e8}.capacity-note{padding:12px 20px;font-size:10px;color:#8a989a;border-top:1px solid var(--line);line-height:1.7}.staff-strip{display:flex;align-items:center;gap:18px;padding:19px 20px;border-top:1px solid var(--line);flex-wrap:wrap}.staff-strip>strong{font-size:11px;margin-right:10px}.person{display:flex;align-items:center;gap:8px}.avatar{width:29px;height:29px;border-radius:50%;background:#edf2f2;color:#63838b;display:grid;place-items:center;font-size:11px}.person b{font-size:10px;font-weight:550}.person small{font-size:9px;color:var(--muted);display:block;margin-top:3px}.view-time{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted)}.view-time input{padding:6px;color:var(--ink);font-size:11px;width:90px}.view-time label{white-space:nowrap}.below-note{display:flex;gap:15px;justify-content:space-between;color:#94a1a3;font-size:10px;margin-top:13px;line-height:1.7}.panel{border:1px solid var(--line);background:white;border-radius:10px;overflow:hidden}.panel-head{padding:20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.data-table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}.data-table th{padding:14px 18px;background:#f8faf9;color:var(--muted);font-weight:450;font-size:10px;white-space:nowrap}.data-table td{padding:17px 18px;border-top:1px solid #edf0ef;line-height:1.6}.data-table td small{display:block;font-size:10px;color:var(--muted)}.data-table td button{font-size:10px;padding:5px 10px}.table-wrap{overflow:auto}.empty{padding:50px 20px;text-align:center;color:var(--muted);line-height:2}.info-box{background:var(--pale);border:1px solid #e2ebeb;border-radius:7px;font-size:12px;line-height:1.8;padding:14px 16px;margin-bottom:19px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-grid .full{grid-column:1/-1}label{display:flex;flex-direction:column;font-size:11px;gap:8px;color:#6e8286}input,select,textarea{padding:11px;width:100%;color:var(--ink);min-width:0}textarea{resize:vertical;line-height:1.6}label small{font-size:10px;color:#9aa5a7;line-height:1.6}.checks{display:flex;gap:10px;flex-wrap:wrap}.checks label{display:flex;flex-direction:row;align-items:center;gap:5px}.checks input{width:auto}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px;padding-top:17px;border-top:1px solid var(--line)}.form-actions .push{margin-right:auto}.error{color:#3b5961;font-size:12px;line-height:1.7;margin-top:12px;font-weight:550}.danger{border-color:#809ba1;color:#365c65}dialog{border:1px solid var(--line);border-radius:13px;width:min(600px,calc(100vw - 24px));padding:25px;box-shadow:0 25px 100px #182f4233;color:var(--ink);max-height:92vh}dialog::backdrop{background:#21373c55;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.dialog-head .eyebrow{font-size:9px;margin-bottom:8px}.icon-button{font-size:23px;border:0;padding:0 6px;background:transparent;color:#8a9b9d}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--accent);color:white;padding:13px 22px;border-radius:8px;z-index:100;font-size:12px;max-width:90vw;box-shadow:0 8px 30px #193e4222}footer{margin:0 30px;padding:20px 0;color:#a3aeaf;font-size:9px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:10px}.login{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:white}.login-card{padding:9vh max(35px,calc((50vw - 400px)/2));display:flex;flex-direction:column;justify-content:center;gap:18px}.login-card .brand-mark{width:46px;height:49px;margin-bottom:18px}.login-card h1{font-size:29px;white-space:nowrap}.login-card form{margin-top:22px}.login-card label{margin-bottom:16px}.login-card .primary{width:100%;text-align:left;padding:13px 15px}.login-card .primary span{float:right}.login aside{padding:12vh 60px;background:#e8f0f0;position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start}.login aside>span{font-size:10px;color:#7b969c;letter-spacing:2px}.login aside h2{font-size:43px;line-height:1.45;font-weight:500;margin-top:70px;letter-spacing:-1px}.login aside p{color:#7c9398;font-size:13px;line-height:2;margin-top:25px}.login aside small{margin-top:auto;color:#88a1a5;font-size:10px;z-index:1}.abstract-lines{position:absolute;bottom:8%;right:-30px;width:80%;height:35%;transform:rotate(-14deg)}.abstract-lines i{display:block;height:22px;margin:20px 0;background:#d3e3e5;border-radius:30px}.abstract-lines i:nth-child(2){background:#b3ced3;width:80%;margin-left:10%}.abstract-lines i:nth-child(3){background:#87abb4;width:65%;margin-left:26%}.abstract-lines i:nth-child(4){background:#527c88;width:55%;margin-left:40%}.demo-login{font-size:10px;border-top:1px solid var(--line);padding-top:18px;color:var(--muted)}.demo-login p{margin-bottom:10px}.demo-login button{font-size:10px;margin-right:7px}.code-output{word-break:break-all;font:14px ui-monospace,monospace;padding:16px;background:var(--pale);border-radius:7px;user-select:all}.roster-editor textarea{min-height:150px}.detail-list{display:grid;grid-template-columns:1fr 1fr;gap:16px}.detail-list dt{color:var(--muted);font-size:11px;margin-bottom:6px}.detail-list dd{margin:0;font-size:14px}.warning{padding:14px 17px;border:1px solid #b6c9cd;border-radius:7px;margin-bottom:18px;font-size:12px;line-height:1.8;background:#eaf1f2}
.date-control{flex-shrink:0}.date-control button,.date-control span{white-space:nowrap}.sheet{min-width:calc(var(--label) + var(--count)*28px)}
@media(min-width:1600px){:root{--label:240px}.content{padding:38px 42px}.topbar{padding:0 42px}.sheet{min-width:calc(var(--label) + var(--count)*32px)}}
@media(max-width:1000px){.sidebar{width:168px;padding:24px 12px}.brand{font-size:18px}.brand small{font-size:9px}.brand-mark{width:29px;height:32px}.nav-label{margin-top:30px}main{margin-left:168px}.content{padding:25px 20px}.topbar{padding:0 20px}.top-right{gap:9px}.sync{display:none}.stat{padding:16px 14px}.stat strong{font-size:26px}.two-col{grid-template-columns:1fr}.sheet-caption{align-items:flex-start}.legend{gap:10px}}
@media(max-width:650px){.sidebar{position:static;width:100%;padding:14px 16px;border-bottom:1px solid var(--line);border-right:0}.sidebar .brand{font-size:19px}.brand small,.nav-label,.sidebar-bottom{display:none}nav{flex-direction:row;overflow:auto;margin-top:14px;gap:5px}nav button{white-space:nowrap;font-size:11px;gap:6px;padding:9px 11px}nav button span{font-size:14px;width:auto}main{margin-left:0}.topbar{height:48px;padding:0 16px}.topbar>div:first-child{font-size:10px}.top-right{gap:7px}.account{font-size:10px}.top-right .pill{display:none}.content{padding:25px 14px}.page-heading{align-items:flex-start;gap:10px}.page-heading h1{font-size:25px}.page-heading .primary{font-size:11px;padding:10px}.page-heading .muted{font-size:11px;max-width:210px}.stats{grid-template-columns:1fr 1fr}.stat{padding:16px;border-bottom:1px solid var(--line)}.stat:nth-child(2){border-right:0}.stat:nth-child(3),.stat:nth-child(4){border-bottom:0}.stat.highlight{border-radius:0 0 10px 0}.stat strong{font-size:27px}.date-control span{display:none}.filters{margin-left:auto}.filters button{padding:7px 9px}.sheet-caption{flex-direction:column;gap:12px;padding:14px}.staff-strip{gap:13px;padding:16px}.staff-strip>strong{width:100%}.below-note{display:block}.below-note span{display:block}.form-grid{gap:12px}.form-grid .full-mobile{grid-column:1/-1}dialog{padding:20px}.data-table td,.data-table th{padding:12px}.login{grid-template-columns:1fr}.login aside{display:none}.login-card{padding:50px 30px}.login-card h1{font-size:26px}footer{margin:0 15px}footer span{display:none}}

/* Company identity stays consistent across recurring and one-off rides. */
.company-dot{display:inline-block;width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:var(--company-color,#667686)}
.company-heading{display:flex;align-items:center;gap:7px;min-width:0}.company-heading strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.company-legend{display:flex;gap:7px 12px;align-items:center;flex-wrap:wrap;padding:12px 20px;border-bottom:1px solid var(--line);font-size:10px}.company-legend>span{color:var(--muted);margin-right:2px}.company-legend button{display:flex;gap:6px;align-items:center;border:0;padding:5px 7px;background:#f6f8f8;font-size:10px}.company-legend button:hover{background:var(--company-prep)}
.reservation .prep,.company-preview .prep{background:var(--company-prep,var(--light));color:#465c62}.reservation .ride,.company-preview .ride{background:var(--company-color,var(--accent));color:var(--company-text,#fff)}.canceled .reservation .ride{background:#e4e9e8;color:#68797e}
.row-label .service-note{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:9px;color:#607479}.service-requirements{border-left:3px solid var(--company-color);background:var(--company-prep);padding:14px 16px;margin-bottom:18px;border-radius:4px}.service-requirements h3{font-size:11px;margin:12px 0 6px;color:#5d6d72}.service-requirements p{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8}.service-requirements .company-heading{font-size:12px}
.company-color-field{border:0;padding:0;margin:20px 0}.company-color-field legend{font-size:11px;color:#6e8286;margin-bottom:10px}.color-editor{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.color-editor input[type=color]{width:48px;height:36px;padding:3px;cursor:pointer}.color-options{display:flex;gap:8px;flex-wrap:wrap}.color-options button{width:25px;height:25px;min-width:25px;padding:0;border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #dce3e2}.color-options button[aria-pressed=true]{box-shadow:0 0 0 2px #243c42}.color-options button:disabled{cursor:not-allowed;opacity:.2}.company-color-field>p{font-size:10px;margin:12px 0}.company-preview{display:flex;height:43px;width:240px;max-width:100%;border-radius:6px;overflow:hidden}.company-preview .prep{width:35%;font-size:10px}.company-preview .ride{padding-left:14px}.company-requirements-cell{max-width:380px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px}
@media(max-width:650px){.company-legend{padding:10px 14px;gap:6px}.company-legend>span{width:100%}}

/* One company label spans all of its overlapping buses. */
.staff-section-row{min-height:57px;background:#f0f5f5;border-top:1px solid #cfdddd}.staff-section-row .row-label{background:#f0f5f5;padding-top:10px;padding-bottom:10px}.staff-section-row .row-label strong{font-size:11px}.staff-section-row .quiet{padding:0;text-align:left;font-size:10px;color:#52757c}.staff-summary{padding:12px 15px;font-size:11px;line-height:1.8;color:#4d6c73}.staff-summary small{font-size:10px;color:var(--muted);margin-left:15px}.staff-row{min-height:65px}.staff-row .row-label{padding-top:12px;padding-bottom:12px}.staff-person-name{background:transparent;border:0;padding:0;text-align:left;width:100%;line-height:1.5}.staff-person-name:hover{background:#eef4f4}.staff-row .row-label small{font-size:10px}.staff-shift{position:absolute;top:10px;height:43px;min-width:5px;padding:5px 8px;overflow:hidden;white-space:nowrap;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:4px;border:1px solid #aac3c8;border-radius:5px;background:#e3eef0;color:#345e68;z-index:1;text-align:left}.staff-shift:hover{background:#d5e6e9}.staff-shift strong{font-size:10px;font-weight:600}.staff-shift small{font-size:9px;font-variant-numeric:tabular-nums}.staff-rest{position:absolute;left:15px;top:25px;color:#94a2a4;font-size:11px}.staff-off .row-label{color:#829295}.staff-row .time-marker{z-index:0}.staff-editor-person{border:1px solid var(--line);padding:14px;margin:0 0 15px;border-radius:8px;min-width:0}.staff-editor-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:11px;color:#6d858a}.staff-editor-heading .quiet{font-size:10px;padding:3px 0}.staff-editor-identity{display:grid;grid-template-columns:1.1fr 1fr .9fr;gap:10px}.staff-editor-times{margin-top:14px}.staff-editor-times>button{font-size:11px;padding:8px 0 0}.staff-editor-shift{display:grid;grid-template-columns:1fr auto 1fr 25px;gap:7px;align-items:end;margin-top:10px}.staff-editor-shift>span{padding-bottom:12px;color:#a3b0b2}.staff-editor-shift .quiet{padding:10px 3px}.staff-off-note{font-size:11px;color:#8c9fa3;margin-top:14px;line-height:1.6}.roster-editor>#addStaffPerson{font-size:11px}.roster-editor #addStaffPerson{font-size:11px}
@media(max-width:650px){.staff-summary small{display:block;margin-left:0}.staff-editor-identity{grid-template-columns:1fr 1fr}.staff-editor-identity label:last-child{grid-column:1/-1}.staff-shift{padding-left:5px;padding-right:5px}.staff-editor-person{padding:12px}}
.drag-help{padding:10px 20px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f5f9f8;border-bottom:1px solid var(--line);font-size:11px;color:#466e72}.drag-help small{font-size:10px;color:var(--muted)}
.reservation.movable{cursor:grab;touch-action:none;user-select:none}.reservation.is-drag-target{outline:2px solid var(--company-color);outline-offset:3px;filter:brightness(1.05);box-shadow:0 5px 16px #183f4533}
.schedule-dragging,.schedule-dragging *{cursor:grabbing!important;user-select:none!important}.drag-time-preview{position:fixed;z-index:90;max-width:calc(100vw - 16px);pointer-events:none;background:#243f45;color:white;padding:11px 15px;border-radius:8px;font-size:11px;line-height:1.6;box-shadow:0 5px 24px #183f4540;font-variant-numeric:tabular-nums}
.schedule-busy .sidebar button,.schedule-busy .topbar button,.schedule-busy .page-heading button,.schedule-busy .toolbar,.schedule-busy .company-legend,.schedule-busy .staff-strip button{pointer-events:none}.schedule-saving .scroll-sheet{pointer-events:none;opacity:.8}.schedule-saving{cursor:progress}
@media(max-width:650px){.drag-help{padding:10px 14px;align-items:flex-start;flex-direction:column;gap:5px}.drag-time-preview{font-size:10px;padding:9px 11px}}
.company-row{border-bottom:1px solid #dce5e4}.company-row .row-label{justify-content:flex-start;padding-top:17px;gap:7px}.group-company-name{border:0;background:transparent;border-radius:3px;padding:0;text-align:left;max-width:100%;width:100%}.group-company-name:hover{background:var(--company-prep)}.group-company-name .company-heading{width:100%}.group-lanes{min-height:80px}.schedule-lane{position:relative;height:80px;border-bottom:1px dashed #e4eae9}.schedule-lane:last-of-type{border-bottom:0}.schedule-lane .reservation{top:11px;height:58px}.schedule-lane .ride{gap:3px;padding:5px 7px}.schedule-lane .ride strong{font-size:10px;font-weight:500}.schedule-lane .ride small{font-size:8px;opacity:.85}.company-row .time-marker{z-index:0}.company-row .reservation{z-index:1}.reservation.canceled .ride{background:#e4e9e8;color:#68797e;text-decoration:line-through}.reservation.canceled .prep{opacity:.4}

/* Each month column shares the same daily hour scale. */
.staff-month-toolbar{gap:16px;flex-wrap:wrap}.staff-month-toolbar input[type=month]{width:154px;font-size:12px;padding:8px 10px}.staff-month-legend{display:flex;gap:16px;align-items:center;font-size:10px;color:var(--muted);margin-left:auto}.staff-month-legend span{display:flex;align-items:center;gap:5px}.staff-month-legend i{width:18px;height:9px;border:1px solid #86b2b6;border-radius:3px;background:#cde1e2}.staff-month-legend b{font-size:14px;font-weight:500}.staff-month-help{padding:12px 20px;font-size:11px;line-height:1.8;color:#678187;background:#f6f9f8;border-bottom:1px solid var(--line)}.staff-month-scroll{overflow:auto;max-height:950px;--month-person:200px;--month-day:116px}.staff-month-table{border-spacing:0;border-collapse:separate;table-layout:fixed;width:calc(var(--month-person) + var(--month-days)*var(--month-day));font-size:11px}.staff-month-table th,.staff-month-table td{border-right:1px solid #e4eaea;border-bottom:1px solid #e6eceb;padding:0;width:var(--month-day);vertical-align:middle;font-weight:400;background:white}.staff-month-table thead th{background:#f7faf9;position:sticky;top:0;z-index:2;height:73px}.staff-month-table th:first-child{width:var(--month-person);position:sticky;left:0;z-index:3;background:#fff}.staff-month-table thead th:first-child{z-index:4;background:#f1f6f5}.month-person-heading{text-align:left;padding:14px 17px!important;font-size:11px;color:#5c7479}.month-person-heading small{display:block;font-size:9px;color:#94a3a6;margin-top:6px}.month-date-heading{display:flex;gap:6px;align-items:center;justify-content:center;padding:10px 2px}.month-date-heading>b{font-size:14px;font-weight:600}.month-date-heading>span{font-size:9px;color:#849497}.month-date-heading em{font-style:normal;background:#3f6b72;color:white;border-radius:3px;font-size:8px;padding:2px 3px}.month-hour-scale{display:flex;justify-content:space-between;padding:0 7px 9px;color:#a0acad;font-size:8px;font-variant-numeric:tabular-nums}.staff-month-table .month-weekend{background:#eef4f2}.staff-month-table .month-today{background:#eef7f6;box-shadow:inset 1px 0 #b3ced0,inset -1px 0 #b3ced0}.month-person{padding:15px 17px!important;text-align:left}.month-person>strong{font-size:11px;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.month-person>span{font-size:10px;color:#7a9095;display:block;margin-top:6px}.month-person>small{font-size:9px;color:#97a6a9;display:block;margin-top:7px}.month-day-cell{width:100%;min-height:99px;border:0;border-radius:0;padding:12px 7px 9px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;background:transparent;line-height:1.5;font-variant-numeric:tabular-nums;overflow:hidden}.month-day-cell:hover{background:#e8f1f0}.month-shift-track{width:100%;height:15px;position:relative;border-radius:3px;background:repeating-linear-gradient(to right,#f1f5f4 0, #f1f5f4 calc(100% / var(--hours) - 1px),#dfe8e6 calc(100% / var(--hours) - 1px),#dfe8e6 calc(100% / var(--hours)));display:block}.month-shift-block{display:block;position:absolute;top:0;height:15px;background:#8fb9bc;border:1px solid #7fa9ad;border-radius:3px;min-width:2px}.month-shift-list{display:flex;flex-direction:column;gap:1px;font-size:9px;color:#436e75;min-height:15px;justify-content:center}.month-day-cell>small{font-size:9px;color:#92a4a7}.month-status-icon{font-size:14px;color:#b2bfc0;line-height:15px}.month-day-cell.off strong{font-size:10px;font-weight:400;color:#8b9c9f}.month-day-cell.off{background:#f8faf9}.month-day-cell.unplanned{color:#a3b2b5;background:repeating-linear-gradient(135deg,transparent,transparent 8px,#eff4f350 8px,#eff4f350 9px)}.month-day-cell.unplanned strong{font-size:10px;font-weight:400}.staff-month-card .capacity-note{font-size:10px}.staff-month-stats .stat strong{font-size:29px}
@media(max-width:650px){.staff-month-legend{margin-left:0;width:100%;gap:14px}.staff-month-help{padding:12px 14px}.staff-month-scroll{--month-person:144px;--month-day:108px}.month-person{padding-left:12px!important}.month-person-heading{padding-left:12px!important}.staff-month-toolbar .date-control{flex-wrap:wrap}.staff-month-stats .stat strong{font-size:25px}}

/* Personal calendar uses the same saved roster as the monthly time table. */
.month-person{padding:0!important}.month-person-button{display:block;width:100%;min-height:99px;border:0;border-radius:0;background:transparent;padding:15px 17px;text-align:left;line-height:1.5}.month-person-button:hover{background:#edf5f3}.month-person-button:focus-visible,.calendar-day:focus-visible{outline:2px solid #3f737a;outline-offset:-3px}.month-person-button strong{font-size:11px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.month-person-button span{display:block;font-size:10px;color:#7a9095;margin-top:5px}.month-person-button small{display:block;font-size:9px;color:#8b9fa3;margin-top:5px}.month-person-button em{display:block;font-style:normal;font-size:9px;color:#537c80;margin-top:7px}
dialog.staff-calendar-dialog{width:min(940px,calc(100vw - 24px));padding:22px}.staff-calendar-dialog .dialog-head{margin-bottom:16px}.calendar-toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.calendar-toolbar input{width:154px;padding:8px 10px;font-size:12px}.calendar-toolbar>span{font-size:11px;color:#789094}.calendar-summary{display:flex;gap:12px 24px;flex-wrap:wrap;margin:15px 0;padding:12px 15px;background:#f0f6f4;border-radius:7px;font-size:11px;color:#758d90}.calendar-summary b{font-size:17px;font-weight:600;color:#365f66;margin-right:3px}.calendar-help{font-size:10px;color:#84999c;line-height:1.7;margin-bottom:12px}.staff-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar-weekday{text-align:center;padding:5px;font-size:10px;color:#7c9498}.calendar-weekday:nth-child(6),.calendar-weekday:nth-child(7){color:#52777a}.calendar-day{min-height:86px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:5px;text-align:left;border:1px solid #dce9e5;border-radius:6px;padding:9px 10px;background:#edf5f2;line-height:1.4;color:#365f66;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.calendar-day:hover{border-color:#87afb0;background:#e1eeea}.calendar-day-heading{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%;margin-bottom:1px}.calendar-day-heading>b{font-size:13px;font-weight:600}.calendar-day-heading em{font-style:normal;font-size:8px;background:#426e74;color:white;border-radius:3px;padding:2px 3px}.calendar-status{font-size:10px;font-weight:500}.calendar-times{display:flex;flex-direction:column;font-size:10px;gap:1px}.calendar-day>small{font-size:9px;color:#80999a}.calendar-day.off{background:#f8faf9;color:#93a2a4;border-color:#e7edeb}.calendar-day.unplanned{background:white;border:1px dashed #d5e0de;color:#9ba9ab}.calendar-day.is-today{box-shadow:inset 0 0 0 1px #4e8589;border-color:#4e8589}.calendar-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}.calendar-footer span{font-size:10px;color:#90a1a3;line-height:1.6}.calendar-footer button{font-size:11px;white-space:nowrap}.calendar-back{font-size:11px;border:0;background:#f1f6f4;padding:8px 12px;margin-bottom:15px;color:#52797d}
@media(max-width:650px){.month-person-button{padding:12px}.staff-calendar-dialog{padding:14px!important}.staff-calendar-dialog .dialog-head{margin-bottom:13px}.calendar-toolbar{gap:9px}.calendar-summary{gap:8px 13px;margin:12px 0;padding:10px;font-size:9px}.calendar-summary b{font-size:15px}.calendar-help{font-size:9px}.staff-calendar-grid{gap:3px}.calendar-day{min-height:78px;padding:6px 3px;gap:4px}.calendar-day-heading>b{font-size:11px}.calendar-day-heading em{font-size:7px;padding:1px}.calendar-status{font-size:9px}.calendar-times{font-size:8px;line-height:1.5}.calendar-day>small{font-size:8px}.calendar-footer{align-items:flex-start}.calendar-footer span{font-size:9px}}
@media(min-width:651px){.calendar-day{min-height:84px;padding-top:7px;padding-bottom:7px;gap:3px}}

/* Separate the staff grid's information with contrast and neutral row bands. */
.staff-month-card .staff-month-help{background:#fff;color:#596d77}
.staff-month-legend{color:#4f626b}.staff-month-legend i{background:#28746c;border-color:#1b625b}.staff-month-legend .legend-off b{background:#edf0f3;color:#52626f;border-radius:3px;padding:1px 5px}.staff-month-legend .legend-unplanned b{color:#93611c;background:#fff0ce;border-radius:3px;padding:1px 5px}
.staff-month-table th,.staff-month-table td{border-right-color:#e0e5e9;border-bottom-color:#cad5dc}
.staff-month-table tbody tr:nth-child(even)>td,.staff-month-table tbody tr:nth-child(even)>.month-person{background:#f6f8fb}
.staff-month-table thead th{background:#fff;border-bottom:2px solid #bdcbd3}.staff-month-table thead th:first-child{background:#eaf0f4;color:#304d5b}
.staff-month-table thead th.month-weekend{background:#edf0f4}.month-date-heading>span,.month-hour-scale{color:#657681}.month-date-heading>b{color:#283f4c}
.staff-month-table thead th.month-today{background:#285e69;box-shadow:none;color:#fff}.month-today .month-date-heading>b,.month-today .month-date-heading>span,.month-today .month-hour-scale{color:#fff}.month-date-heading em{background:#fff;color:#285e69;font-weight:650}
.staff-month-table tbody td.month-today{background:#fff;box-shadow:inset 2px 0 #55838e,inset -2px 0 #55838e}
.staff-month-table tbody tr:nth-child(even)>td.month-today{background:#f6f8fb}
.month-person-button{border-right:2px solid #c4d1da}.month-person-button strong{font-size:12px;color:#253e4b}.month-person-button span{color:#576e7b}.month-person-button small{color:#687e8b}.month-person-button em{color:#315f70}.month-person-button:hover{background:#e9eff5}
.month-day-cell{min-height:104px;gap:8px}.month-day-cell.working{background:transparent}.month-day-cell:hover{background:#e8f0f5}.month-day-cell:focus-visible{outline:2px solid #285e69;outline-offset:-3px}
.month-shift-track{height:17px;background:repeating-linear-gradient(to right,#e9edf1 0,#e9edf1 calc(100% / var(--hours) - 1px),#d2dbe3 calc(100% / var(--hours) - 1px),#d2dbe3 calc(100% / var(--hours)));border-radius:4px}
.month-shift-block{height:17px;background:#28746c;border-color:#1b625b;border-radius:4px;box-shadow:0 1px 2px #234b4b18}
.month-shift-list{color:#293f4d;font-size:10px;font-weight:550}.month-day-cell>small{color:#647582;font-size:9px}
.month-day-cell.off{background:#eef1f4;box-shadow:inset 0 0 0 5px #ffffff80}.month-day-cell.off:hover{background:#e1e7ec}.month-day-cell.off strong{color:#586b79;font-size:11px}.month-day-cell.off .month-status-icon{color:#7b8c98}.month-day-cell.off>small{color:#758693}
.month-day-cell.unplanned{background:#fff7e7;box-shadow:inset 0 0 0 5px #ffffff80;color:#a86b18}.month-day-cell.unplanned:hover{background:#ffefcd}.month-day-cell.unplanned .month-status-icon{color:#9e671b}.month-day-cell.unplanned strong{color:#8a5819;font-weight:550;font-size:11px}.month-day-cell.unplanned>small{color:#9a7444}
/* Mirror the same status distinction in each person's calendar. */
.calendar-day.working{background:#f1f7f5;border-color:#bfd6cd;color:#244f46}.calendar-day.working .calendar-status{color:#1e6b55;font-weight:650}.calendar-day.off{background:#edf0f4;border-color:#e0e5eb;color:#657582}.calendar-day.off>small{color:#768592}.calendar-day.unplanned{background:#fff6e5;border-color:#d8b675;color:#91601e}.calendar-day.unplanned>small{color:#9a7444}

.demo-role-control{display:flex;flex-direction:row;align-items:center;gap:7px;white-space:nowrap;font-size:10px;color:#617b80}.demo-role-control select{width:112px;padding:7px 9px;font-size:11px;background:#eef5f2;border-color:#c0d6cf;color:#285c50;cursor:pointer}.demo-role-control select:disabled{cursor:progress;opacity:.65}.demo-role-control select:focus-visible{outline:2px solid #3c7b6e;outline-offset:2px}
@media(max-width:1000px){.demo-role-control>span{display:none}.demo-role-control select{width:102px}.top-right{gap:8px}}
@media(max-width:650px){.topbar{height:auto;min-height:64px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px;gap:8px}.top-right{margin-left:auto;flex-wrap:wrap}.demo-role-control select{font-size:10px;width:99px}}

/* Staff uses the full page; the schedule grows with its rows. */
.staff-view{--label:190px}
.staff-view .sidebar,.staff-view .page-heading{display:none}
.staff-view main{margin-left:0}
.staff-view .topbar{height:60px;padding:0 24px;flex-wrap:wrap}
.staff-view .mobile-brand{display:inline;font-size:14px;font-weight:650;color:var(--ink)}
.staff-view .content{max-width:none;padding:18px 24px 24px}
.staff-view .stats{margin-bottom:14px}
.staff-view .stat{padding:12px 18px}
.staff-view .stat label{margin-bottom:5px}
.staff-view .stat strong{font-size:25px}
.staff-view .stat p{margin-top:4px}
.staff-view .toolbar{margin-bottom:12px}
.staff-view .sheet-caption{padding:12px 16px}
.staff-view .company-legend{padding:8px 16px}
.staff-view .scroll-sheet{max-height:none;overflow-x:auto}
.staff-view .sheet{min-width:calc(var(--label) + var(--count)*26px)}
.staff-view .time-row{height:42px;min-height:42px}
.staff-view .time-cells span{padding-top:14px}
.staff-view .row-label{padding-left:13px;padding-right:13px}
.staff-view .company-row .row-label{padding-top:11px;padding-bottom:10px;gap:5px}
.staff-view .group-lanes{min-height:64px}
.staff-view .schedule-lane{height:64px}
.staff-view .schedule-lane .reservation{top:9px;height:46px}
.staff-view .schedule-lane .ride{padding-left:5px;padding-right:5px}
.staff-view .capacity-row{min-height:54px}
.staff-view .staff-section-row{min-height:44px}
.staff-view .staff-summary{padding:10px 13px;line-height:1.6}
.staff-view .staff-row{min-height:54px}
.staff-view .staff-row .row-label{padding-top:8px;padding-bottom:8px;gap:3px}
.staff-view .staff-shift{top:7px;height:39px;gap:3px}
.staff-view .capacity-note{padding:10px 16px}
.staff-view .below-note{margin-top:10px}
.staff-view footer{margin:0 24px;padding:14px 0}
.language-control{display:flex;flex-direction:row;align-items:center}
.language-select{width:87px;padding:7px 9px;font-size:11px;cursor:pointer;background:#fff}
.login-language{position:absolute;top:20px;right:24px;z-index:2;display:flex;flex-direction:row;align-items:center;gap:8px}
.login-card .primary .login-submit-label{float:none}
.translated-lines{white-space:pre-line}
.detail-note-title{margin-top:20px;margin-bottom:8px;font-size:11px}
.booking-quantities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}
.booking-quantity{padding:16px;background:#f6f8f8;border:1px solid #dce5e4;border-radius:9px;gap:10px;min-width:0}
.booking-quantity>span{font-size:13px;font-weight:600;color:#48646a}
.booking-quantity.actual-quantity{background:#edf5f3;border-color:#bad0c9}
.booking-quantity.actual-quantity>span{color:#285e50}
.booking-quantity-input{position:relative}
.booking-quantity-input input{font-size:30px;font-weight:650;line-height:1.2;font-variant-numeric:tabular-nums;padding:10px 48px 10px 12px;background:#fff;border-color:#d4e0dd;border-radius:7px}
.booking-quantity-input input::placeholder{font-size:18px;font-weight:450;color:#96a6a4}
.booking-quantity-input>span{position:absolute;right:29px;top:50%;transform:translateY(-50%);font-size:12px;color:#7a8e8d;pointer-events:none}
.booking-quantity small{font-size:10px;color:#718582;line-height:1.7}
.booking-context-note{font-size:11px;color:#7e8f92;line-height:1.8;margin-bottom:20px}
.booking-details-heading{font-size:12px;font-weight:600;color:#566f74;margin-bottom:14px;padding-top:16px;border-top:1px solid var(--line)}
.booking-guide-summary{padding:10px 12px;margin:-2px 0 13px;border-radius:6px;background:#edf4f7;color:#375c70;font-size:11px;line-height:1.7;font-variant-numeric:tabular-nums}
.guide-count-field{padding:12px;background:#f7f9fa;border:1px solid #e1e7eb;border-radius:7px}
.guide-demand-row{min-height:58px;background:#f4f6fa;border-top:1px solid #dbe3eb}
.guide-demand-row .row-label{background:#f4f6fa}
.guide-demand-row .row-label strong{color:#4c617b}
.guide-demand-row .capacity-cells button{color:#4c617b;font-weight:550;border-right-color:#e1e7ee}
@media(max-width:450px){.booking-quantities{gap:10px}.booking-quantity{padding:12px 10px;gap:8px}.booking-quantity>span{font-size:12px}.booking-quantity-input input{font-size:27px;padding-left:9px;padding-right:38px}.booking-quantity-input>span{right:22px}.booking-quantity small{font-size:9px}}
html[lang="ja"] .staff-view .topbar{gap:8px}
html[lang="ja"] .staff-view .top-right{gap:9px}
html[lang="ja"] .staff-view .sheet-caption{flex-wrap:wrap}
html[lang="ja"] .staff-view .legend{gap:12px;flex-wrap:wrap}
html[lang="ja"] .staff-view .staff-summary small{margin-left:10px}
@media(max-width:800px){
  .staff-view .topbar{height:auto;min-height:60px;padding-top:10px;padding-bottom:10px;gap:8px}
  .staff-view .top-right{margin-left:auto}
  .staff-view .content{padding:14px 16px 20px}
  .staff-view .stat{padding:11px 12px}
}
@media(max-width:650px){
  .staff-view{--label:160px}
  .staff-view .topbar{padding-left:14px;padding-right:14px}
  .staff-view .topbar .slash{margin:0 5px}
  .staff-view .top-right{gap:7px}
  .staff-view .content{padding:12px 12px 18px}
  .staff-view .stat{padding:10px 12px}
  .staff-view .stat strong{font-size:23px}
  .staff-view .toolbar{gap:9px}
  .staff-view .sheet-caption{gap:8px;padding:10px 12px}
  .staff-view .company-legend{padding:8px 12px}
  .staff-view .company-legend>span{width:auto}
  .staff-view .staff-summary small{display:block;margin-left:0}
  .staff-view footer{margin:0 12px}
  .staff-view footer>span:first-child{display:inline}
  html[lang="ja"] .staff-view .staff-summary small{margin-left:0}
  .language-select{width:80px;font-size:10px}
}

.access-table{min-width:900px}
.access-table th{white-space:nowrap}
.access-table .access-person{font-weight:600;min-width:120px}
.access-table .access-note{min-width:150px;max-width:260px;white-space:pre-wrap;overflow-wrap:anywhere;color:#6b7f83;line-height:1.7}
.access-credential{min-width:250px;max-width:360px}
.access-code-line code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.8;overflow-wrap:anywhere;user-select:all;letter-spacing:.2px}
.access-code-actions,.access-row-actions{display:flex;gap:8px;align-items:center;margin-top:6px}
.access-row-actions{margin-top:0}
.access-code-actions button{padding:5px 10px;font-size:11px}
.access-status{padding:4px 8px;border-radius:5px;background:#f1f3f3;color:#82918f;white-space:nowrap;font-size:11px}
.access-status.is-active{background:#e9f4ee;color:#397356}
.access-pending{font-size:12px;color:#82918f}
.access-code-output{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}
