.lab-page,.lab-dialog,.lab-banner{--lab-bg:#f3f6fa;--lab-paper:#fff;--lab-ink:#21374d;--lab-muted:#536b83;--lab-line:#c8d7e6;--lab-blue:#0065b3;--lab-soft:#e6f1ff;color:var(--lab-ink);font:14px/1.5 system-ui,sans-serif;color-scheme:light}
.lab-page{margin:0;background:var(--lab-bg)}.lab-page *,.lab-dialog *,.lab-banner *{box-sizing:border-box}.lab-page [hidden],.lab-dialog [hidden],.lab-dialog[hidden],.lab-banner[hidden]{display:none!important}
.lab-page header{display:flex;align-items:center;gap:20px;padding:18px 24px;border-bottom:1px solid var(--lab-line);background:var(--lab-paper)}.lab-brand{font-size:24px;font-weight:750;text-decoration:none;color:var(--lab-blue)}
.lab-page main{padding:25px;min-width:0}.lab-page h1{font-size:24px;margin:6px 0 12px}.lab-page h2{font-size:18px}.lab-page p{margin:10px 0 16px}.lab-page small{color:var(--lab-muted)}
.lab-page button,.lab-page input,.lab-page select,.lab-dialog button,.lab-dialog input{font:inherit;color:inherit}.lab-page button,.lab-dialog button{border:1px solid var(--lab-line);background:var(--lab-paper);border-radius:6px;padding:8px 12px;min-height:38px;cursor:pointer}.lab-page button:hover,.lab-dialog button:hover{background:var(--lab-soft)}
.lab-page button:disabled,.lab-dialog button:disabled{opacity:.6;cursor:default}.lab-page button:focus-visible,.lab-page a:focus-visible,.lab-dialog button:focus-visible{outline:3px solid var(--lab-blue);outline-offset:2px}
.lab-page label,.lab-dialog label{display:block;font-weight:600;margin:12px 0}.lab-page input,.lab-page select,.lab-dialog input{display:block;width:100%;padding:10px;border:1px solid var(--lab-line);border-radius:6px;background:var(--lab-paper)}
.lab-page form button,.lab-dialog form button{margin:5px}.lab-card{width:calc(100% - 32px);max-width:620px;margin:24px auto;background:var(--lab-paper);border:1px solid var(--lab-line);border-radius:10px}.lab-portal{display:grid;grid-template-columns:240px minmax(0,1fr)}.lab-portal aside{padding:24px 12px;border-right:1px solid var(--lab-line);background:var(--lab-paper)}.lab-portal aside button{display:block;width:100%;text-align:left;margin:10px 0}
.lab-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0}.lab-fields{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.lab-table{overflow-x:auto}.lab-page table{width:100%;border-collapse:collapse;text-align:left}.lab-page th,.lab-page td{padding:12px 8px;border-bottom:1px solid var(--lab-line);vertical-align:top}.lab-page th{font-size:12px;color:var(--lab-muted)}.lab-page code{overflow-wrap:anywhere}.lab-page a{color:var(--lab-blue)}.lab-code{font:700 40px/1.5 ui-monospace,monospace;letter-spacing:5px}.lab-qr{width:174px;height:174px;background:white}.lab-notice{padding:12px;border-left:3px solid var(--lab-blue);background:var(--lab-soft)}
.lab-dialog{background:var(--lab-paper);border:1px solid var(--lab-line);border-radius:10px;padding:24px;width:min(620px,calc(100vw - 40px));max-height:calc(100vh - 40px);overflow:auto}.lab-dialog::backdrop{background:#11243b66}.lab-dialog-close{float:right}.lab-card .lab-actions button{margin:0}.lab-hand-in{margin-top:6px;width:100%}
.lab-form label{margin:0 0 12px}.lab-form input{margin-top:8px;padding:9px 10px}.lab-form input[name=code]{text-transform:uppercase}.lab-form p{margin:12px 0 0}.lab-form .lab-actions{margin:16px 0 0}.lab-form [role=status]:empty{display:none}
.lab-details{margin:0 0 12px;padding:10px 12px;border:1px solid var(--lab-line);border-radius:6px;background:var(--lab-soft)}.lab-details h3{margin:0;font-size:15px;line-height:1.35}.lab-details p{margin:2px 0 0;color:var(--lab-muted)}.lab-form .lab-note{margin:0}
.lab-banner{--lab-chip:var(--cf-blue,#155eb0);box-sizing:border-box;display:flex;align-items:center;gap:8px;min-width:0;max-width:640px;min-height:30px;padding:3px 4px 3px 12px;border-radius:6px;background:var(--lab-chip);color:#fff;font:600 13px/1.3 var(--cf-ui-font,system-ui),system-ui,sans-serif}
.lab-banner-copy{flex:1 1 0;min-width:0;display:flex;align-items:baseline;gap:8px}.lab-banner-copy>*{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lab-banner-copy strong{flex:0 1 auto;font-weight:700}.lab-banner-copy strong:not(:only-child){max-width:65%}.lab-banner-meta{flex:1 1 0;font-weight:500;color:#e3eefb}
.lab-banner-badge{flex:none;padding:0 7px;border-radius:9px;background:#fff;color:var(--lab-chip);font-size:11px;font-weight:700;line-height:16px}
.lab-banner button{flex:none;margin:0;min-height:24px;padding:0 10px;border:1px solid #ffffffb3;border-radius:4px;background:transparent;color:#fff;font:600 12px/22px var(--cf-ui-font,system-ui),system-ui,sans-serif;letter-spacing:0;text-transform:none;cursor:pointer}.lab-banner button:hover{background:#ffffff2e}.lab-banner button:disabled{opacity:.6;cursor:default}.lab-banner button:focus-visible{outline:2px solid #fff;outline-offset:1px}
#header:has(>.lab-banner:not([hidden])){display:flex;align-items:center;gap:16px}#header:has(>.lab-banner:not([hidden])) .cf-brand{flex:none}#header>.lab-banner{margin-left:auto}
@media(max-width:700px){.lab-card .lab-actions{flex-direction:column;align-items:stretch}.lab-card .lab-actions button{width:100%}.lab-portal{grid-template-columns:1fr}.lab-portal aside{display:flex;gap:8px;flex-wrap:wrap;padding:10px;border-right:0;border-bottom:1px solid var(--lab-line)}.lab-portal aside button{width:auto;margin:0}.lab-page main{padding:18px}.lab-fields{grid-template-columns:1fr}.lab-page header{padding:14px 18px}}
#wrap .lab-dialog{--lab-paper:var(--cf-surface);--lab-ink:var(--cf-ink);--lab-muted:var(--cf-muted);--lab-line:var(--cf-line);--lab-blue:var(--cf-blue);--lab-soft:var(--cf-wash);font:500 13px/1.4 var(--cf-ui-font),system-ui,sans-serif}
#wrap .lab-dialog #lab-dialog-content>p{margin:8px 0}#wrap .lab-dialog button{min-height:34px;letter-spacing:0;text-transform:none}#wrap .lab-dialog .lab-actions button{margin:0}#wrap .lab-dialog h2{margin:0 0 12px;font-size:18px;line-height:1.3}#wrap .lab-dialog-close{min-height:0;padding:0 8px;border:0;background:transparent;font-size:22px;line-height:28px}
#wrap .lab-hand-in{float:right;width:auto;min-height:24px;height:24px;margin:-3px 0 0;padding:2px 5px;border:1px solid var(--cf-line);border-radius:4px;background:var(--cf-surface);color:var(--cf-blue);font-size:10px;line-height:16px;letter-spacing:0;text-transform:none}
#wrap #cf-page-actions #lab-join-open{width:auto;white-space:nowrap}
#wrap #cf-page-actions #lab-join-open[aria-disabled=true]{background:var(--cf-lock);border-color:var(--cf-line);color:var(--cf-muted);opacity:.65;cursor:default}
.lab-dialog .lab-error{margin:12px 0 0;padding:8px 10px;border-left:3px solid #b42318;border-radius:4px;background:#fef3f2;color:#7a271a}
/* portal */
.lab-item{margin:12px 0;padding:14px 16px;background:var(--lab-paper);border:1px solid var(--lab-line);border-radius:8px}.lab-item p{margin:4px 0 10px}
.lab-invite-qr{margin:8px 0}.lab-invite-qr svg{display:block}.lab-invite-link{margin:8px 0 4px;overflow-wrap:anywhere}
.lab-invite-text{display:block;width:100%;margin-top:6px;padding:10px;border:1px solid var(--lab-line);border-radius:6px;background:var(--lab-bg);color:inherit;font:400 13px/1.5 ui-monospace,monospace;resize:vertical}
.lab-dialog .lab-actions a{display:inline-flex;align-items:center;min-height:38px;padding:8px 12px;border:1px solid var(--lab-line);border-radius:6px;text-decoration:none}
.lab-title{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin:14px 0 4px}.lab-title h1{margin:0}
.lab-code-badge{display:inline-flex;align-items:center;gap:10px;padding:4px 4px 4px 14px;border-radius:8px;background:var(--lab-ink);color:#fff}.lab-code-badge code{font:700 26px/1.2 ui-monospace,monospace;letter-spacing:3px}
.lab-page .lab-code-badge button{min-height:30px;padding:2px 10px;border-color:transparent;background:#ffffff2e;color:#fff}.lab-page .lab-code-badge button:hover{background:#ffffff4d}
.lab-toolbar,.lab-heading,.lab-table-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.lab-toolbar{margin:16px 0}.lab-table-tools{justify-content:flex-end;margin:0 0 6px}.lab-toolbar-end{display:flex;gap:8px}
.lab-segments{display:inline-flex}.lab-page .lab-segments button{border-radius:6px 0 0 6px}.lab-page .lab-segments button+button{border-left:0;border-radius:0 6px 6px 0}.lab-page .lab-segments [aria-pressed=true]{background:var(--lab-blue);border-color:var(--lab-blue);color:#fff}
.lab-page .lab-check{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:500}.lab-page .lab-check input{display:inline;width:auto;margin:0;padding:0}
.lab-setting{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:10px 0}.lab-dialog .lab-setting button{margin:0}
.lab-badge{display:inline-block;margin-left:6px;padding:0 7px;border:1px solid var(--lab-line);border-radius:9px;background:var(--lab-bg);color:var(--lab-muted);font-size:11px;font-weight:600;line-height:17px;vertical-align:1px}.lab-row-hidden>td:not(:last-child){color:var(--lab-muted)}
.lab-page{min-height:100vh;display:flex;flex-direction:column}.lab-portal{flex:1}.lab-nav-group{margin-top:18px;padding-top:14px;border-top:1px solid var(--lab-line)}.lab-tool{padding:4px 12px;min-height:32px;font-weight:600}.lab-tool[aria-pressed=true]{background:var(--lab-blue);color:#fff;border-color:var(--lab-blue)}.lab-page-title{margin:0;padding-left:16px;border-left:2px solid var(--lab-line);font-size:23px;line-height:1.2;font-weight:700;color:var(--lab-ink)}.lab-page header{gap:16px}.lab-brand{font-size:26px;font-weight:800;letter-spacing:-1px}#instructor-sign-out{margin-left:auto}.lab-item{display:flex;align-items:center;gap:12px}.lab-item[role=button]{cursor:pointer}.lab-item[role=button]:hover{background:var(--lab-soft)}.lab-item[role=button]:focus-visible{outline:3px solid var(--lab-blue);outline-offset:2px}.lab-item-copy{flex:1;min-width:0}.lab-item-copy p{margin:4px 0 0}.lab-item>button{flex:none}.lab-heading{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lab-heading h1{margin-right:auto}
