:root{--c-primary: #0f6f6b;--c-primary-strong: #0b5754;--c-primary-soft: #e4f1f0;--c-primary-softer: #f2f8f8;--c-bg: #f3f5f7;--c-surface: #ffffff;--c-border: #e2e8ec;--c-border-strong: #c9d3d9;--c-text: #16262e;--c-text-2: #51626c;--c-text-3: #7b8a93;--c-success: #177245;--c-success-bg: #e8f6ee;--c-warning: #8a5b0a;--c-warning-bg: #fcf3dd;--c-danger: #b3261e;--c-danger-bg: #fdecea;--c-info: #1e5fb3;--c-info-bg: #e9f1fc;--c-accent: #6f4ab6;--c-accent-bg: #f0eaf8;--c-lab: #b66512;--c-lab-bg: #fff3e3;--radius-s: 7px;--radius-m: 11px;--radius-l: 16px;--shadow-1: 0 1px 2px rgba(22, 38, 46, .05), 0 1px 4px rgba(22, 38, 46, .05);--shadow-2: 0 4px 16px rgba(22, 38, 46, .1);--shadow-3: 0 12px 40px rgba(22, 38, 46, .18);--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-xs: .75rem;--fs-s: .8125rem;--fs-m: .875rem;--fs-l: 1rem;--fs-xl: 1.1875rem;--fs-2xl: 1.5rem;--sidebar-w: 244px;--topbar-h: 56px;--focus-ring: 0 0 0 3px rgba(15, 111, 107, .35)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:var(--fs-m);line-height:1.5;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:650;letter-spacing:-.01em}p{margin:.4em 0}a{color:var(--c-primary)}code{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.92em}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-s)}::selection{background:#0f6f6b2e}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font:600 var(--fs-m) var(--font);min-height:38px;padding:0 16px;border-radius:var(--radius-s);border:1px solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--c-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--c-primary-strong)}.btn-secondary{background:var(--c-surface);color:var(--c-text);border-color:var(--c-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--c-primary-softer);border-color:var(--c-primary);color:var(--c-primary-strong)}.btn-ghost,.btn-link{background:none;color:var(--c-primary);padding:0 8px;min-height:34px}.btn-ghost:hover,.btn-link:hover{background:var(--c-primary-soft)}.btn-danger{background:var(--c-danger-bg);color:var(--c-danger);border-color:#b3261e4d}.btn-danger:hover:not(:disabled){background:var(--c-danger);color:#fff}.btn-lg{min-height:46px;padding:0 22px;font-size:var(--fs-l);border-radius:var(--radius-m)}.btn-sm{min-height:30px;padding:0 10px;font-size:var(--fs-s)}.btn-block{width:100%}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-s);border:none;background:none;color:var(--c-text-2);cursor:pointer}.icon-btn:hover{background:var(--c-primary-soft);color:var(--c-primary-strong)}input,select,textarea{font:inherit;color:inherit;padding:9px 12px;width:100%;border:1px solid var(--c-border-strong);border-radius:var(--radius-s);background:var(--c-surface);transition:border-color .15s;min-height:38px}input:hover,select:hover,textarea:hover{border-color:var(--c-text-3)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--c-primary);box-shadow:var(--focus-ring)}input[type=checkbox],input[type=radio]{width:18px;height:18px;min-height:0;accent-color:var(--c-primary)}input[type=file]{padding:7px}label{font-size:var(--fs-s);font-weight:600;color:var(--c-text-2)}.form-field{display:flex;flex-direction:column;gap:5px;min-width:0}.field-label{font-size:var(--fs-s);font-weight:600;color:var(--c-text-2)}.field-hint{font-size:var(--fs-xs);color:var(--c-text-3);margin:2px 0 0}.field-error{font-size:var(--fs-xs);color:var(--c-danger);margin:2px 0 0;font-weight:600}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:14px 20px}.chemical-quantity-field{grid-column:1 / -1}.chemical-quantity-form-row{display:grid;grid-template-columns:minmax(160px,1fr) minmax(160px,1fr) minmax(90px,.45fr);gap:10px;align-items:end}.chemical-quantity-form-row>label{display:flex;min-width:0;flex-direction:column;gap:5px}.chemical-quantity-form-row>label>span{color:var(--c-text-2);font-size:var(--fs-xs);font-weight:650}.chemical-name-line{display:flex;width:100%;align-items:center;flex-direction:column-reverse;gap:8px;text-align:center}.chemical-name-line>span{max-width:100%;overflow-wrap:anywhere}.chemical-container-state{display:inline-flex;flex:0 0 auto;align-items:center;padding:2px 5px;border-radius:4px;font-size:10px;font-weight:750;line-height:1.2;white-space:nowrap}.chemical-container-state-sealed{background:var(--c-success-bg);color:var(--c-success)}.chemical-container-state-open{background:var(--c-warning-bg);color:var(--c-warning-strong, #8a5700)}.chemical-quantity-cell{display:inline-flex;align-items:baseline;gap:4px;white-space:nowrap}.chemical-quantity-cell span{color:var(--c-text-2);font-size:var(--fs-xs)}.form-row,.checkbox-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.form-row>.form-field{flex:1 1 200px;min-width:0}.checkbox-group{display:flex;flex-direction:column;gap:8px}.inline-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--c-surface);border-right:1px solid var(--c-border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar-brand{padding:18px 18px 10px}.sidebar-school{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--c-border);min-width:0}.sidebar-school-logo{width:28px;height:28px;flex-shrink:0;object-fit:contain;border-radius:var(--radius-s);background:var(--c-surface)}.sidebar-school-name{font-size:var(--fs-s);font-weight:650;color:var(--c-text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-nav{padding:4px 10px 20px;display:flex;flex-direction:column}.sidebar-actions{margin-top:auto;padding:10px 14px max(16px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:6px}.install-app-button,.sidebar-logout{width:100%;justify-content:flex-start}.nav-group{margin-top:14px;display:flex;flex-direction:column;gap:2px}.nav-group:first-child{margin-top:4px}.nav-group-title{font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--c-text-3);padding:4px 12px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-s);color:var(--c-text-2);text-decoration:none;font-weight:550;font-size:var(--fs-m)}.nav-item svg{flex-shrink:0;opacity:.75}.nav-item:hover{background:var(--c-primary-softer);color:var(--c-primary-strong)}.nav-item-active{background:var(--c-primary-soft);color:var(--c-primary-strong)}.nav-item-active svg{opacity:1}.nav-item-disabled{display:flex;align-items:center;gap:8px;padding:9px 12px;color:var(--c-text-3)}.tag-soon{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:var(--c-bg);border:1px solid var(--c-border);border-radius:20px;padding:1px 7px}.shell-body{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:var(--topbar-h);flex-shrink:0;display:flex;align-items:center;gap:14px;padding:0 22px;background:var(--c-surface);border-bottom:1px solid var(--c-border);position:sticky;top:0;z-index:30}.topbar-spacer{flex:1}.topbar-school{display:flex;align-items:center;gap:10px;min-width:0}.school-label,.school-switcher,.acting-as-switcher{font-size:var(--fs-s);color:var(--c-text-2);min-width:0}.school-switcher,.acting-as-switcher{display:block}.school-switcher select,.acting-as-switcher select{min-height:32px;padding:4px 8px;width:auto;max-width:100%}.topbar-user{display:flex;align-items:center;gap:10px;min-width:0;margin-left:auto}.user-name{font-weight:600;font-size:var(--fs-s);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-toggle{display:none}.notification-menu{position:relative;flex:0 0 auto}.notification-backdrop{display:none}.notification-trigger{position:relative}.notification-dot{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 5px;display:grid;place-items:center;border-radius:999px;background:var(--c-danger);color:#fff;font-size:11px;font-weight:700;line-height:1}.notification-panel{position:absolute;top:calc(100% + 10px);right:0;z-index:80;width:min(390px,calc(100vw - 24px));max-height:min(70vh,620px);overflow:auto;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-m);box-shadow:var(--shadow-3);padding:12px}.notification-close{flex:0 0 auto}.notification-panel-head,.notification-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.notification-section{display:flex;flex-direction:column;gap:8px;padding-top:8px}.notification-section+.notification-section{border-top:1px solid var(--c-border);margin-top:10px}.notification-section-title{font-size:var(--fs-xs);font-weight:700;color:var(--c-text-2);text-transform:uppercase;letter-spacing:.04em}.notification-item{display:flex;flex-direction:column;gap:4px;padding:10px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fbfcfc;font-size:var(--fs-s)}.notification-item b{overflow-wrap:anywhere}.notification-item-link{width:100%;flex-direction:row;align-items:center;justify-content:space-between;color:inherit;text-align:left;cursor:pointer}.notification-item-link:hover,.notification-item-link:focus-visible{border-color:var(--c-brand);background:var(--c-brand-soft)}.notification-item-copy{min-width:0;display:flex;flex-direction:column;gap:4px}.notification-actions{justify-content:flex-start;flex-wrap:wrap;margin-top:4px}.content{flex:1;padding:26px 30px 60px;max-width:1270px;width:100%;margin:0 auto}.page{display:flex;flex-direction:column;gap:18px}.page-title{font-size:var(--fs-2xl)}.page-header{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.page-header-text{flex:1;min-width:220px}.page-header-text p{color:var(--c-text-2);margin:4px 0 0;max-width:62ch}.page-header-text p.page-description-wide{max-width:none}.page-header-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.logo-placeholder{display:flex;align-items:center;gap:9px;min-width:0}.labulate-mark{flex-shrink:0}.logo-mark{width:34px;height:34px;border-radius:9px;flex-shrink:0;background:var(--c-primary);color:#fff;display:grid;place-items:center;font-weight:800;font-size:15px}.logo-text{display:flex;flex-direction:column;min-width:0}.logo-word{font-weight:750;font-size:var(--fs-l);letter-spacing:-.01em;color:var(--c-text-1, #1c2a33)}.logo-word .lw-accent{color:var(--c-primary, #2f6e73)}.logo-hint{font-size:10px;color:var(--c-text-3);margin:0;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.card,.panel-block{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-m);box-shadow:var(--shadow-1);padding:20px 22px}.panel-block{box-shadow:none;margin-top:14px}.field-row{display:flex;gap:10px 14px;flex-wrap:wrap;align-items:flex-end}.field-row>label{display:flex;flex-direction:column;gap:5px;min-width:0}.field-row>label>input,.field-row>label>select{width:100%;min-width:140px}.card-title{font-size:var(--fs-l);margin-bottom:12px}.panel-block h3{font-size:var(--fs-m);margin-bottom:8px}.panel-block-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.badge,.chip,.role-chip{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:650;line-height:1;padding:5px 10px;border-radius:20px;white-space:nowrap;background:var(--c-bg);color:var(--c-text-2);border:1px solid var(--c-border)}.badge:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}.badge-plain:before{display:none}.badge-success,.chip-positive{background:var(--c-success-bg);color:var(--c-success);border-color:transparent}.badge-warning,.chip-warning{background:var(--c-warning-bg);color:var(--c-warning);border-color:transparent}.badge-danger,.chip-negative{background:var(--c-danger-bg);color:var(--c-danger);border-color:transparent}.badge-info{background:var(--c-info-bg);color:var(--c-info);border-color:transparent}.badge-brand{background:var(--c-primary-soft);color:var(--c-primary-strong);border-color:transparent}.badge-neutral,.chip-neutral{background:var(--c-bg);color:var(--c-text-2);border-color:var(--c-border)}.role-chip-row{display:flex;gap:8px;flex-wrap:wrap}.notice{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius-s);font-size:var(--fs-m);border:1px solid transparent}.notice-info{background:var(--c-info-bg);color:var(--c-info)}.notice-success{background:var(--c-success-bg);color:var(--c-success)}.notice-error{background:var(--c-danger-bg);color:var(--c-danger)}.notice-warning{background:var(--c-warning-bg);color:var(--c-warning)}.table-wrap{overflow-x:auto;border:1px solid var(--c-border);border-radius:var(--radius-s)}table{width:100%;border-collapse:collapse;font-size:var(--fs-m);background:var(--c-surface)}thead th{text-align:left;font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--c-text-3);padding:10px 14px;border-bottom:1px solid var(--c-border);background:#fafbfc;white-space:nowrap}tbody td{padding:12px 14px;border-bottom:1px solid var(--c-border);vertical-align:top}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--c-primary-softer)}.row-active{background:var(--c-primary-soft)!important}.action-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.action-col{flex-direction:column;align-items:stretch}.muted{color:var(--c-text-2)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;color:var(--c-text-2);padding:34px 20px}.empty-state svg{color:var(--c-border-strong)}.empty-state b{color:var(--c-text);font-size:var(--fs-l)}.page-loading{display:grid;place-items:center;padding:48px;color:var(--c-text-3)}.centered-page{min-height:100vh;display:grid;place-items:center;padding:24px}.maintenance-banner{background:var(--c-danger, #c0392b);color:#fff;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:600}.maintenance-banner a{color:#fff;text-decoration:underline}.skeleton{border-radius:var(--radius-s);background:linear-gradient(90deg,#eef1f3 25%,#e4e9ec,#eef1f3 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{to{background-position:-200% 0}}.doc-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.doc-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:var(--fs-m);padding:9px 12px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fbfcfc}.expiry-mass-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0 10px}.expiry-mass-summary>div{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid #b8d8d2;border-radius:var(--radius-s);background:#f0f8f6}.expiry-mass-summary span{color:var(--c-text-2);font-size:var(--fs-xs)}.expiry-mass-summary strong{color:var(--c-primary-dark);font-size:var(--fs-xl)}.expiry-mass-note{margin:8px 0;padding:9px 12px;border-left:3px solid #b78010;background:#fff8e8;color:#694d12;font-size:var(--fs-xs)}.expiry-mass-warning{border-left-color:var(--c-danger);background:#fff2f2;color:#7f1d1d}.expiry-mass-table-wrap{width:100%;overflow-x:auto;margin-top:12px;border:1px solid var(--c-border);border-radius:var(--radius-s)}.expiry-mass-table{width:100%;min-width:820px;border-collapse:collapse}.expiry-mass-table th,.expiry-mass-table td{padding:10px 12px;border-bottom:1px solid var(--c-border);text-align:left;vertical-align:top}.expiry-mass-table th{background:#f5f7f8;color:var(--c-text-2);font-size:var(--fs-xs);text-transform:uppercase}.expiry-mass-table tbody tr:last-child td{border-bottom:0}.expiry-mass-table td small{display:block;margin-top:3px;color:#8a5c00}.expiry-edit-btn{min-height:34px;padding:6px 10px;white-space:nowrap}.dialog:has(.disposal-dialog),.dialog:has(.disposal-history){width:min(860px,calc(100vw - 32px));max-width:860px}.disposal-dialog{display:flex;flex-direction:column;gap:16px}.disposal-dialog textarea{resize:vertical}.disposal-dialog-actions{justify-content:flex-end;padding-top:4px}.disposal-file-list,.disposal-chemical-list{list-style:none;margin:0;padding:0}.disposal-file-list li,.disposal-chemical-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border-bottom:1px solid var(--c-border)}.disposal-history{display:flex;flex-direction:column;gap:14px;max-height:min(72vh,720px);overflow-y:auto}.disposal-history-entry{padding:16px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fbfcfc}.disposal-history-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.disposal-history-head h3{margin:0 0 3px}.disposal-history-head span,.disposal-history-details dt{color:var(--c-text-2);font-size:var(--fs-xs)}.disposal-history-details{display:grid;grid-template-columns:minmax(150px,.35fr) minmax(0,1fr);gap:7px 14px;margin:14px 0}.disposal-history-details dd{margin:0;overflow-wrap:anywhere}.disposal-history details summary{cursor:pointer;font-weight:650}.disposal-chemical-list{margin-top:8px;border:1px solid var(--c-border);border-radius:var(--radius-s)}.disposal-history-files{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:14px}@media(max-width:640px){.disposal-history-head{flex-direction:column}.disposal-history-details{grid-template-columns:minmax(0,1fr);gap:3px}.disposal-history-details dd{margin-bottom:8px}.disposal-file-list li,.disposal-chemical-list li{align-items:flex-start;flex-direction:column}}.link-row{display:flex;gap:10px;align-items:center;margin-top:10px;flex-wrap:wrap}.link-url{background:var(--c-primary-softer);border:1px solid var(--c-border);border-radius:var(--radius-s);padding:9px 12px;font-size:var(--fs-xs);word-break:break-all;flex:1;min-width:200px}.inline-dialog{border:1px solid var(--c-warning);background:var(--c-warning-bg);border-radius:var(--radius-s);padding:14px 16px;margin-top:12px;display:flex;flex-direction:column;gap:10px}.inline-dialog h4{font-size:var(--fs-m)}.info-icon{display:inline-grid;place-items:center;width:22px;height:22px;flex-shrink:0;border-radius:50%;background:var(--c-primary-soft);color:var(--c-primary-strong);font-weight:700;font-size:12px;cursor:help}.inventory-page-title{display:inline-flex;align-items:center;gap:2px;position:relative;z-index:2}.inventory-page-title .hint-icon{width:24px;height:24px;border-color:var(--c-border-strong);background:var(--c-surface);color:var(--c-primary-strong);font-size:12px}.inventory-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.inventory-room-card{padding:12px 14px;border-left:4px solid var(--c-primary);background:#fbfdfd}.inventory-room-tabs{gap:8px;border-bottom:0;overflow-x:auto;padding:2px;scrollbar-width:thin}.inventory-room-tab{display:inline-flex;align-items:center;flex:0 0 auto;min-height:38px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface);color:var(--c-text-2);overflow:hidden}.inventory-room-all{gap:7px;padding-right:14px}.inventory-room-tab:hover{border-color:var(--c-primary);color:var(--c-primary-strong)}.inventory-room-tab-active{border-color:var(--c-primary);background:var(--c-primary-soft);color:var(--c-primary-strong);box-shadow:inset 0 0 0 1px var(--c-primary)}.inventory-room-select,.inventory-room-delete{border:0;background:transparent;color:inherit;cursor:pointer}.inventory-room-select{min-height:36px;padding:7px 10px 7px 12px;font:650 var(--fs-s) var(--font);white-space:nowrap}.inventory-room-delete{align-self:stretch;display:inline-grid;place-items:center;width:34px;border-left:1px solid currentColor;opacity:.65}.inventory-room-delete:hover,.inventory-room-delete:focus-visible{background:var(--c-danger-bg);color:var(--c-danger);opacity:1}.inventory-category-tabs{gap:8px;padding:0 2px}.inventory-category-tabs .tab{min-width:116px;text-align:center}.dialog:has(.inventory-settings-dialog){width:min(780px,calc(100vw - 32px))}.inventory-settings-dialog{display:flex;flex-direction:column;gap:18px;min-width:0}.inventory-settings-intro{margin:0;color:var(--c-text-2);line-height:1.55}.inventory-settings-section{overflow:hidden;border:1px solid var(--c-border);border-radius:var(--radius-m);background:var(--c-surface)}.inventory-settings-section-head{display:flex;align-items:flex-start;gap:12px;padding:16px 18px;border-bottom:1px solid var(--c-border);background:var(--c-surface-2)}.inventory-settings-section-head h3{margin:0 0 3px;font-size:var(--fs-m)}.inventory-settings-section-head p{margin:0;color:var(--c-text-2);font-size:var(--fs-xs);line-height:1.5}.inventory-settings-section-icon{display:inline-grid;flex:0 0 34px;width:34px;height:34px;place-items:center;border-radius:var(--radius-s);background:var(--c-warning-bg);color:var(--c-warning)}.inventory-settings-section-icon-primary{background:var(--c-primary-soft);color:var(--c-primary-strong)}.inventory-rule-list{display:flex;flex-direction:column}.inventory-rule-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:20px;padding:16px 18px;border-bottom:1px solid var(--c-border)}.inventory-rule-row:last-child{border-bottom:0}.inventory-rule-copy label,.inventory-rule-copy>span{display:block;color:var(--c-text);font-size:var(--fs-s);font-weight:700}.inventory-rule-copy p{max-width:520px;margin:4px 0 0;color:var(--c-text-2);font-size:var(--fs-xs);line-height:1.5}.inventory-number-control{display:flex;align-items:center;gap:8px;color:var(--c-text-2);font-size:var(--fs-xs);white-space:nowrap}.inventory-number-control input{width:88px;text-align:center}.inventory-rule-toggle{cursor:pointer}.inventory-rule-toggle input{width:20px;height:20px;accent-color:var(--c-primary);cursor:pointer}.inventory-import-settings{display:flex;flex-direction:column;gap:14px;padding:16px 18px 18px}.inventory-import-destination{width:fit-content;margin:0;padding:7px 10px;border-radius:var(--radius-s);background:var(--c-primary-soft);color:var(--c-primary-strong);font-size:var(--fs-xs);font-weight:650}.inventory-import-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-start}.btn-disabled{opacity:.55;pointer-events:none}.inventory-import-errors{max-height:180px;overflow:auto}.thumb{width:42px;height:42px;object-fit:cover;border-radius:var(--radius-s);border:1px solid var(--c-border)}.inventory-image-slot,.chemical-image-slot{display:inline-flex;align-items:center;justify-content:center;width:108px;height:108px;border:1px dashed var(--c-border-strong);border-radius:var(--radius-s);background:var(--c-surface);color:var(--c-text-2);cursor:pointer;font:inherit}.inventory-image-slot:hover,.chemical-image-slot:hover{border-color:var(--c-primary);background:var(--c-primary-soft);color:var(--c-primary-strong)}.inventory-image-slot:has(input:focus-visible),.chemical-image-slot:has(input:focus-visible){box-shadow:var(--focus-ring)}.inventory-image-slot input,.chemical-image-slot input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.inventory-image-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.inventory-image-source-option{display:flex;min-height:132px;align-items:center;justify-content:center;flex-direction:column;gap:10px;padding:20px 14px;border:1px solid var(--c-border);border-radius:var(--radius-m);background:var(--c-surface-2);color:var(--c-text);font-weight:700;text-align:center;cursor:pointer}.inventory-image-source-option:hover,.inventory-image-source-option:has(input:focus-visible){border-color:var(--c-primary);background:var(--c-primary-soft);color:var(--c-primary-strong)}.inventory-expiry-input{width:112px;min-width:112px;padding:7px 4px;font-size:var(--fs-xs)}.inventory-image-thumb,.chemical-image-thumb{position:relative;display:inline-flex}.inventory-image-open,.chemical-image-open{display:inline-flex;padding:0;border:0;border-radius:var(--radius-s);background:none;line-height:0;cursor:zoom-in}.inventory-image-open:focus-visible,.chemical-image-open:focus-visible{outline:none;box-shadow:var(--focus-ring)}.inventory-image-thumb img,.chemical-image-thumb img{width:108px;height:108px;object-fit:contain;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fff}.inventory-image-remove,.chemical-image-remove{position:absolute;z-index:2;top:-7px;right:-7px;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:1px solid var(--c-border);border-radius:50%;background:#fff;color:var(--c-danger);cursor:pointer;box-shadow:0 1px 4px #00000038}.inventory-image-remove:hover,.chemical-image-remove:hover{background:var(--c-danger);color:#fff}.dialog:has(.inventory-image-preview-dialog),.dialog:has(.chemical-image-preview-dialog){width:min(960px,calc(100vw - 32px))}.inventory-image-preview-dialog,.chemical-image-preview-dialog{display:flex;align-items:center;justify-content:center;min-height:220px;overflow:hidden;background:#fff}.inventory-image-preview-dialog img,.chemical-image-preview-dialog img{display:block;max-width:100%;max-height:calc(100vh - 190px);object-fit:contain}.inventory-list-table th,.inventory-list-table td{text-align:center;vertical-align:middle}.inventory-list-table .inventory-index-cell{width:34px;min-width:34px;padding-inline:6px}.inventory-list-table .inventory-actions-cell{width:44px;min-width:44px;padding-inline:4px}.inventory-list-table .inventory-name-cell{width:100%;min-width:180px;overflow-wrap:anywhere}.inventory-list-table .inventory-date-cell{width:124px;min-width:124px;padding-inline:6px}.inventory-list-table tbody tr{min-height:126px}.inventory-list-table td:has(.inventory-image-slot),.inventory-list-table td:has(.inventory-image-thumb){width:132px;min-width:132px}.inventory-actions-column{display:grid;justify-items:center;gap:3px}.inventory-actions-column .icon-btn{width:30px;height:30px}.json-editor{width:100%;font-family:ui-monospace,monospace;font-size:var(--fs-xs);line-height:1.5}.mail-preview{width:100%;height:460px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fff}.content-summary p{margin:6px 0;font-size:var(--fs-m)}.totals-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:12px}.stat-row,.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr));gap:12px;margin-bottom:4px}.stat,.stat-card{border:1px solid var(--c-border);border-radius:var(--radius-m);padding:14px 16px;background:var(--c-surface);display:flex;flex-direction:column;gap:2px}.stat b{font-size:1.6rem;font-weight:700;color:var(--c-primary-strong);line-height:1.2}.stat span{font-size:var(--fs-xs);color:var(--c-text-2)}.stat-alert b{color:var(--c-danger)}.stat-warn b{color:var(--c-warning)}.tab-row{display:flex;gap:4px;border-bottom:2px solid var(--c-border)}.tab{border:none;background:none;cursor:pointer;font:600 var(--fs-m) var(--font);color:var(--c-text-2);padding:10px 16px;border-bottom:2px solid transparent;margin-bottom:-2px}.tab:hover{color:var(--c-primary-strong)}.tab-active{color:var(--c-primary-strong);border-bottom-color:var(--c-primary)}.ghs-row{display:flex;gap:6px;flex-wrap:wrap}.ghs-chip{position:relative;display:inline-flex;align-items:center;border:1px solid var(--c-border-strong);border-radius:18px;padding:5px 12px;font-size:var(--fs-s);font-weight:600;cursor:pointer;color:var(--c-text-2);background:var(--c-surface)}.ghs-chip:hover{border-color:var(--c-primary);color:var(--c-primary-strong)}.ghs-chip input{position:absolute;opacity:0;width:1px;height:1px;margin:0}.ghs-chip:has(input:focus-visible){box-shadow:var(--focus-ring)}.ghs-on{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.ghs-on.ghs-chip-danger{border-color:#b42318;background:#b42318}.ghs-on.ghs-chip-fire{border-color:#c2410c;background:#c2410c}.ghs-on.ghs-chip-caution{border-color:#a15c00;background:#a15c00}.ghs-on.ghs-chip-environment{border-color:#147d68;background:#147d68}.ghs-on:hover{color:#fff}.chemical-hazards{position:relative;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;color:var(--c-warning-strong, #8a5700);border:1px solid var(--c-border-strong);border-radius:var(--radius-s);background:var(--c-warning-soft, #fff5d9);padding:0;font:inherit;cursor:pointer}.inventory-safety-cell{text-align:center}.chemical-safety-actions{display:inline-flex;flex-direction:column;align-items:center;gap:6px}.chemical-msds{display:inline-flex;width:34px;height:34px;flex:0 0 34px;align-items:center;justify-content:center;padding:0;border:1px solid #9ed8cc;border-radius:var(--radius-s);background:#edf9f6;color:#126b5c;text-decoration:none}.chemical-msds:hover{border-color:#4fae9b;background:#def3ee;color:#0d584c}.chemical-msds:focus-visible{outline:none;box-shadow:var(--focus-ring)}.chemical-hazards-danger{border-color:#f2b8b5;background:#fff0ef;color:#b42318}.chemical-hazards-fire{border-color:#fdba74;background:#fff7ed;color:#c2410c}.chemical-hazards-caution{border-color:#f2d28b;background:#fff9e8;color:#8a5700}.chemical-hazards-environment{border-color:#9ed8cc;background:#edf9f6;color:#147d68}.chemical-hazards-none{border-color:var(--c-border);background:var(--c-surface-2);color:var(--c-text-3)}.chemical-hazard-count{position:absolute;top:-6px;right:-6px;display:inline-grid;min-width:18px;height:18px;place-items:center;padding:0 4px;border:2px solid var(--c-surface);border-radius:10px;background:var(--c-text);color:#fff;font-size:10px;font-weight:750;line-height:1}.chemical-hazards:focus-visible{outline:none;box-shadow:var(--focus-ring)}.chemical-hazard-dialog{color:var(--c-text);line-height:1.55}.chemical-hazard-dialog ul{display:grid;gap:10px;margin:0;padding-left:22px}.chemical-hazard-dialog li{padding-left:2px;overflow-wrap:anywhere}.chemical-hazard-dialog p{margin:0;color:var(--c-text-2)}.availability-grid td{padding:5px}.grid-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;min-height:44px;border:1px solid var(--c-border-strong);border-radius:var(--radius-s);padding:8px 6px;font:600 var(--fs-s) var(--font);cursor:pointer;background:var(--c-surface)}.grid-cell-who{font-size:var(--fs-xs);font-weight:500;opacity:.85;line-height:1.3}.grid-room-head,.grid-timetable-note{text-align:center}.grid-free{background:var(--c-success-bg);border-color:#17724559;color:var(--c-success)}.grid-free:hover{border-color:var(--c-success);box-shadow:inset 0 0 0 1px var(--c-success)}.grid-taken{background:#f6f7f8;border-color:var(--c-border);color:var(--c-text-3);cursor:not-allowed}.grid-selected{outline:3px solid var(--c-primary);outline-offset:1px}.stepper{display:flex;gap:0;margin:4px 0 6px}.step{display:flex;align-items:center;flex:1;min-width:0}.step-dot{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-size:var(--fs-s);font-weight:700;background:var(--c-surface);border:2px solid var(--c-border-strong);color:var(--c-text-3)}.step-label{font-size:var(--fs-xs);font-weight:600;color:var(--c-text-3);margin-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-line{flex:1;height:2px;background:var(--c-border);margin:0 10px;min-width:12px}.step-current .step-dot{border-color:var(--c-primary);color:var(--c-primary-strong);background:var(--c-primary-soft)}.step-current .step-label{color:var(--c-primary-strong)}.step-done .step-dot{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.step-done .step-line{background:var(--c-primary)}.step-done .step-label{color:var(--c-text-2)}.wizard-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:16px;margin-top:6px;border-top:1px solid var(--c-border)}.lab-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr));gap:14px}.lab-card{text-align:left;cursor:pointer;background:var(--c-surface);border:1px solid var(--c-border-strong);border-radius:var(--radius-m);padding:16px 18px;display:flex;flex-direction:column;gap:9px;transition:border-color .15s,box-shadow .15s;font:inherit;color:inherit}.lab-card:hover{border-color:var(--c-primary);box-shadow:var(--shadow-2)}.lab-card-selected{border-color:var(--c-primary);box-shadow:inset 0 0 0 1px var(--c-primary);background:var(--c-primary-softer)}.lab-card-grid .lab-card:nth-child(4n+1){border-top:3px solid var(--c-primary)}.lab-card-grid .lab-card:nth-child(4n+2){border-top:3px solid var(--c-info)}.lab-card-grid .lab-card:nth-child(4n+3){border-top:3px solid var(--c-lab)}.lab-card-grid .lab-card:nth-child(4n+4){border-top:3px solid var(--c-accent)}.lab-card h3{font-size:var(--fs-l)}.lab-card-desc{font-size:var(--fs-s);color:var(--c-text-2);margin:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.lab-card-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}.segmented-control{display:inline-flex;align-items:center;gap:3px;padding:3px;margin:6px 0 0;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#eef3f4}.segmented-control button{min-height:32px;padding:0 12px;border:0;border-radius:6px;background:transparent;color:var(--c-text-2);font:650 var(--fs-s) var(--font);cursor:pointer}.segmented-control button.active{background:var(--c-surface);color:var(--c-primary-strong);box-shadow:var(--shadow-1)}.new-lab-entry{display:grid;gap:14px;margin-top:14px;padding:18px 0 4px;border-top:1px solid var(--c-border)}.new-lab-entry h3{margin:0 0 4px;font-size:var(--fs-l)}.new-lab-entry .field{max-width:620px}.filter-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.search{position:relative}.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--c-text-3);pointer-events:none}.search input{padding-left:36px;padding-right:34px}.search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:26px;height:26px;display:grid;place-items:center;border:none;background:none;border-radius:50%;color:var(--c-text-3);cursor:pointer}.search-clear:hover{background:var(--c-primary-soft);color:var(--c-primary-strong)}.search input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.filter-bar .search{flex:1;min-width:200px}.filter-bar select{width:auto;min-width:130px}.readiness-list{display:flex;flex-direction:column;gap:8px}.readiness-row{display:flex;align-items:center;gap:12px;border:1px solid var(--c-border);border-radius:var(--radius-s);padding:11px 14px;background:#fbfcfc}.readiness-row b{flex:1;font-weight:600}.summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));gap:12px 22px}.summary-item{display:flex;flex-direction:column;gap:2px}.summary-item span{font-size:var(--fs-xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--c-text-3)}.summary-item b{font-weight:600}.success-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:10px 0 4px}.success-hero .success-icon{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--c-success-bg);color:var(--c-success)}.booking-ref{font-family:ui-monospace,monospace;font-size:var(--fs-s);color:var(--c-text-2)}.dash-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;background:linear-gradient(135deg,var(--c-primary),#356bb0 62%,#8a6f2a);color:#fff;border-radius:var(--radius-m);padding:24px 28px;box-shadow:0 14px 34px #153a402e}.dash-hero h2{font-size:var(--fs-xl)}.dash-hero p{color:#ffffffd1;margin:3px 0 0;font-size:var(--fs-m)}.dash-hero .btn{background:#fff;color:var(--c-primary-strong);border:none}.dash-hero .btn:hover{background:var(--c-primary-softer)}.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:16px;align-items:stretch;grid-auto-rows:1fr}.dash-grid>.card{min-height:230px;display:flex;flex-direction:column}.dash-grid>.card>.task-list{flex:1}.dashboard-week-card{border-top:4px solid var(--c-info)}.dashboard-week-list{display:flex;flex-direction:column;gap:7px;max-height:430px;overflow:auto;padding-right:2px}.dashboard-week-row{display:grid;grid-template-columns:minmax(150px,.75fr) minmax(220px,1.4fr) minmax(150px,.8fr) auto;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--c-border);border-left:3px solid var(--c-info);border-radius:var(--radius-s);background:#fbfcfc;color:inherit;text-decoration:none}.dashboard-week-row:hover{border-color:var(--c-primary);background:var(--c-primary-softer)}.dashboard-week-date,.dashboard-week-lab,.dashboard-week-teacher{min-width:0;display:flex;flex-direction:column;gap:2px}.dashboard-week-row b,.dashboard-week-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-week-row small{color:var(--c-text-2)}.stat-row .stat{min-height:92px;border-top:4px solid var(--c-primary);box-shadow:0 4px 16px #1428320f;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}.stat-row .stat:nth-child(4n+2){border-top-color:var(--c-info)}.stat-row .stat:nth-child(4n+3){border-top-color:var(--c-lab)}.stat-row .stat:nth-child(4n+4){border-top-color:var(--c-accent)}.stat-row .stat:hover{transform:translateY(-1px);box-shadow:0 9px 24px #14283217}.task-list{display:flex;flex-direction:column;gap:8px}.task-item{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fbfcfc;text-decoration:none;color:inherit;width:100%;font:inherit;cursor:pointer;text-align:left}.task-item:hover{border-color:var(--c-primary);background:var(--c-primary-softer)}.task-item-text{flex:1;min-width:0}.task-item-text b{display:block;font-weight:600;font-size:var(--fs-m)}.task-item-text span{font-size:var(--fs-xs);color:var(--c-text-2)}.calendar-month-card{padding:18px}.calendar-month-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:16px}.calendar-month-toolbar h2{min-width:210px;text-align:center;font-size:var(--fs-xl)}.calendar-today-btn{margin-left:auto}.calendar-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--c-border);border-left:1px solid var(--c-border);background:var(--c-surface)}.calendar-weekday{padding:9px 8px;border-right:1px solid var(--c-border);border-bottom:1px solid var(--c-border);background:#eef4f3;color:var(--c-text-2);font-size:var(--fs-xs);font-weight:750;text-align:center;text-transform:uppercase}.calendar-day{min-width:0;min-height:132px;padding:7px;border-right:1px solid var(--c-border);border-bottom:1px solid var(--c-border);background:#fff}.calendar-day-empty{background:#f6f8f8}.calendar-day-selected{background:var(--c-primary-softer);box-shadow:inset 0 0 0 2px var(--c-primary)}.calendar-day-number{display:inline-grid;width:30px;height:30px;padding:0;border:0;border-radius:50%;place-items:center;background:transparent;color:var(--c-text);font:inherit;font-size:var(--fs-s);font-weight:750;cursor:pointer}.calendar-day-number:hover{background:var(--c-primary-soft)}.calendar-day-today .calendar-day-number{background:var(--c-primary);color:#fff}.calendar-day-events{display:flex;flex-direction:column;gap:4px;margin-top:4px}.calendar-event{width:100%;min-width:0;padding:5px 6px;border:0;border-left:3px solid var(--c-primary);border-radius:3px;background:#e8f5f3;color:var(--c-text);text-align:left;cursor:pointer}.calendar-event:hover{filter:brightness(.97)}.calendar-event b,.calendar-event span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-event b{font-size:11px}.calendar-event span{margin-top:1px;color:var(--c-text-2);font-size:10px}.calendar-event-prepared{border-left-color:#b7791f;background:#fff6dc}.calendar-event-completed{border-left-color:var(--c-success);background:var(--c-success-bg)}.calendar-event-cancelled,.calendar-event-rejected{border-left-color:var(--c-text-3);background:#f1f3f3;opacity:.72}.calendar-more{padding:2px 4px;border:0;background:transparent;color:var(--c-primary);font-size:10px;font-weight:700;text-align:left;cursor:pointer}.calendar-mobile-count{display:none}.calendar-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:12px;color:var(--c-text-2);font-size:var(--fs-xs)}.calendar-legend span{display:inline-flex;align-items:center;gap:6px}.calendar-legend-dot{width:9px;height:9px;border-radius:50%;background:var(--c-primary)}.calendar-legend-prepared{background:#b7791f}.calendar-legend-completed{background:var(--c-success)}.calendar-prep-link{display:inline-flex;align-items:center;gap:6px;color:var(--c-primary-strong);font-weight:700;text-decoration:none}.calendar-prep-link:hover{text-decoration:underline}.bookings-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.bookings-toolbar select{width:auto;min-height:36px;padding:4px 10px}.bookings-day{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}.bookings-day-head{display:flex;align-items:center;gap:8px;font-size:var(--fs-m);font-weight:700;color:var(--c-text-2);margin:4px 0 0}.booking-card{padding:0;overflow:hidden}.booking-head{display:flex;justify-content:space-between;align-items:center;gap:14px;cursor:pointer;padding:16px 20px}.booking-head:hover{background:var(--c-primary-softer)}.booking-detail{padding:0 20px 20px}.booking-card-done{background:var(--c-success-bg);border-color:#17724559;box-shadow:inset 3px 0 0 var(--c-success)}.booking-card-done .booking-head:hover{background:#1772451a}.all-bookings-filter-card{padding:18px 20px 14px;border-top:3px solid var(--c-primary)}.all-bookings-toolbar-card{padding:12px 18px}.all-bookings-toolbar-card .all-bookings-export-row{margin-top:0;padding-top:0;border-top:0}.all-bookings-filter-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--c-border)}.all-bookings-filter-head h2{font-size:var(--fs-l)}.all-bookings-filter-head p{margin:2px 0 0;color:var(--c-text-2);font-size:var(--fs-s)}.all-bookings-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 14px;align-items:end}.all-bookings-filter-grid>*{min-width:0}.all-bookings-filter-grid input,.all-bookings-filter-grid select{width:100%;min-width:0}.all-bookings-results{display:flex;flex-direction:column;gap:12px}.all-bookings-list{display:flex;flex-direction:column;gap:10px}.all-bookings-day-separator{display:flex;min-height:38px;padding:8px 12px;align-items:center;gap:8px;border-left:3px solid var(--c-primary);background:var(--c-primary-softer);color:var(--c-primary-strong)}.all-bookings-day-separator span{margin-left:auto;color:var(--c-text-2);font-size:var(--fs-xs)}.dialog:has(.teacher-analysis-dialog){width:min(1080px,calc(100vw - 48px))}.teacher-analysis-dialog{min-width:0}.teacher-analysis-intro{margin:0 0 14px}.teacher-analysis-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.teacher-analysis-card{display:flex;min-width:0;min-height:150px;flex-direction:column;gap:9px;padding:16px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface);color:var(--c-text);text-align:left;cursor:pointer}.teacher-analysis-card:hover,.teacher-analysis-card:focus-visible{border-color:var(--c-primary);background:var(--c-primary-softer)}.teacher-analysis-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;font-size:var(--fs-l)}.teacher-analysis-subjects{min-height:38px;color:var(--c-text-2);font-size:var(--fs-s);overflow-wrap:anywhere}.teacher-analysis-card-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:auto}.teacher-analysis-card-metrics>span{display:flex;flex-direction:column;padding:7px;border-radius:5px;background:var(--c-bg);color:var(--c-text-2);font-size:var(--fs-xs)}.teacher-analysis-card-metrics b{color:var(--c-text);font-size:var(--fs-l)}.teacher-analysis-card-metrics .is-complete{background:var(--c-success-bg)}.teacher-analysis-card-metrics .has-open{background:var(--c-warning-bg)}.teacher-analysis-detail{display:flex;flex-direction:column;gap:18px}.teacher-analysis-back{align-self:flex-start}.teacher-analysis-detail-head,.teacher-analysis-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.teacher-analysis-detail-head h3{font-size:var(--fs-xl)}.teacher-analysis-detail-head p{margin:2px 0 0;color:var(--c-text-2)}.teacher-analysis-detail-head>strong{padding:7px 10px;border-radius:5px;background:var(--c-success-bg);color:var(--c-success);white-space:nowrap}.teacher-analysis-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.teacher-analysis-summary-grid>span{display:flex;min-width:0;min-height:72px;flex-direction:column;justify-content:center;padding:10px 12px;border-left:3px solid var(--c-primary);background:var(--c-primary-softer);color:var(--c-text-2);font-size:var(--fs-xs)}.teacher-analysis-summary-grid b{color:var(--c-text);font-size:var(--fs-xl)}.teacher-analysis-summary-grid .has-issue{border-color:var(--c-warning);background:var(--c-warning-bg)}.teacher-analysis-section{padding-top:16px;border-top:1px solid var(--c-border)}.teacher-analysis-section h4{margin-bottom:10px;font-size:var(--fs-l)}.teacher-analysis-breakdown-list,.teacher-analysis-grade-list{display:flex;flex-direction:column;border:1px solid var(--c-border);border-radius:var(--radius-s);overflow:hidden}.teacher-analysis-breakdown-list>button,.teacher-analysis-grade-list>button{display:grid;grid-template-columns:minmax(180px,1.5fr) repeat(3,minmax(90px,.7fr)) auto;gap:10px;align-items:center;width:100%;padding:10px 12px;border:0;border-bottom:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text);font:inherit;text-align:left;cursor:pointer}.teacher-analysis-grade-list>button{grid-template-columns:minmax(140px,1.2fr) repeat(3,minmax(76px,.65fr)) minmax(130px,1fr) auto}.teacher-analysis-breakdown-list>button:hover,.teacher-analysis-breakdown-list>button:focus-visible,.teacher-analysis-grade-list>button:hover,.teacher-analysis-grade-list>button:focus-visible{background:var(--c-primary-softer)}.teacher-analysis-breakdown-list>button:last-child,.teacher-analysis-grade-list>button:last-child{border-bottom:0}.teacher-analysis-breakdown-list span,.teacher-analysis-grade-list span{color:var(--c-text-2);font-size:var(--fs-s)}.teacher-analysis-grade-list .no-bookings{background:var(--c-warning-bg)}.teacher-labs-section .teacher-analysis-section-head{align-items:center;margin-bottom:10px}.teacher-labs-section .teacher-analysis-section-head h4{margin-bottom:0}.teacher-lab-list{display:flex;flex-direction:column;border:1px solid var(--c-border);border-radius:var(--radius-s);overflow:hidden}.teacher-lab-row{display:grid;grid-template-columns:minmax(220px,1.6fr) minmax(190px,1fr) minmax(150px,.8fr) auto auto;gap:12px;align-items:center;width:100%;padding:12px;border:0;border-bottom:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text);font:inherit;text-align:left;cursor:pointer}.teacher-lab-row:last-child{border-bottom:0}.teacher-lab-row:hover,.teacher-lab-row:focus-visible{background:var(--c-primary-softer)}.teacher-lab-row-main{display:flex;min-width:0;flex-direction:column;gap:2px}.teacher-lab-row-main strong{overflow-wrap:anywhere}.teacher-lab-row-main span,.teacher-lab-row>span:not(.teacher-lab-row-main){color:var(--c-text-2);font-size:var(--fs-s)}.all-booking-card{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:10px;padding:10px 10px 10px 0;align-items:start;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface)}.all-booking-card-open{border-color:var(--c-primary);background:var(--c-primary-softer)}.all-booking-main{grid-column:2;grid-row:1;min-width:0;padding:2px 0}.all-booking-delete-cell{display:flex;grid-column:1;grid-row:1;align-self:stretch;justify-content:center;padding-top:28px;border-right:1px solid var(--c-border);background:#fbfcfc}.all-booking-delete-button{display:inline-grid;width:28px;height:28px;padding:0;border:0;border-radius:4px;place-items:center;background:var(--c-danger-bg);color:var(--c-danger);cursor:pointer}.all-booking-delete-button:hover,.all-booking-delete-button:focus-visible{background:#fbdede;outline:2px solid rgba(164,45,45,.24);outline-offset:1px}.all-booking-command-bar{display:flex;grid-column:3;grid-row:1;align-items:flex-start;justify-content:flex-end;gap:10px;padding:0;border:0}.all-booking-primary-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px}.booking-action-menu{position:relative}.booking-action-menu summary{list-style:none;cursor:pointer;border:1px solid var(--c-border-strong);background:var(--c-surface);color:var(--c-text);box-shadow:0 1px 3px #192e341f}.booking-action-menu summary:hover,.booking-action-menu summary:focus-visible{border-color:var(--c-primary);background:var(--c-primary-softer);color:var(--c-primary-strong);outline:2px solid color-mix(in srgb,var(--c-primary) 22%,transparent);outline-offset:1px}.booking-action-menu summary::-webkit-details-marker{display:none}.booking-action-menu[open] summary{border-color:var(--c-primary);background:var(--c-primary-softer);color:var(--c-primary)}.booking-action-menu-popover{position:absolute;z-index:20;top:calc(100% + 6px);right:0;display:flex;width:180px;padding:5px;border:1px solid var(--c-border);border-radius:var(--radius-s);flex-direction:column;gap:2px;background:var(--c-surface);box-shadow:0 10px 28px #192e3429}.booking-action-menu-popover button{display:flex;width:100%;min-height:38px;padding:8px 10px;border:0;border-radius:4px;align-items:center;gap:9px;background:transparent;color:var(--c-text);font:inherit;font-size:var(--fs-s);text-align:left;cursor:pointer}.booking-action-menu-popover button:hover,.booking-action-menu-popover button:focus-visible{background:var(--c-primary-softer);color:var(--c-primary);outline:none}.all-booking-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--c-text-2);font-size:var(--fs-s)}.all-booking-card h2{margin:4px 0 8px;font-size:var(--fs-l);overflow-wrap:break-word}.booking-update-summary{display:inline-flex;align-items:center;gap:3px;color:var(--c-text-2);font-size:var(--fs-xs);white-space:normal}.booking-update-summary b{color:var(--c-warning);font-weight:700}.booking-update-summary{text-transform:capitalize}.all-booking-meta{display:flex;flex-wrap:wrap;gap:8px}.all-booking-meta span{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid var(--c-border);border-radius:999px;background:var(--c-surface);font-size:var(--fs-xs)}.all-booking-meta b{color:var(--c-text-3);font-weight:650}.teacher-display-name{color:var(--c-text);font-weight:750}.all-booking-actions{display:flex;align-items:flex-start;justify-content:flex-end;gap:6px;flex-wrap:wrap;max-width:360px}.all-booking-detail{grid-column:1 / -1;padding:12px;margin-top:2px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface)}.all-bookings-prep-note label{display:flex;flex-direction:column;gap:6px;font-weight:650;color:var(--c-text-2)}.all-bookings-export-row{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--c-border)}.all-bookings-result-count{margin-right:auto;color:var(--c-text-2);font-size:var(--fs-s);font-weight:650}.prep-booking-list{display:flex;flex-direction:column;gap:12px}.prep-date-control{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.prep-date-weekday{display:inline-flex;min-height:40px;padding:0 12px;align-items:center;border:1px solid var(--c-primary);border-radius:var(--radius-s);background:var(--c-primary-softer);color:var(--c-primary-strong);font-size:var(--fs-m);font-weight:750}.prep-date-input{min-width:170px;min-height:40px;border-color:var(--c-primary-strong);background:var(--c-surface);color:var(--c-text);font-size:var(--fs-m);font-weight:750}.prep-selected-date{display:inline-flex;min-height:38px;padding:8px 12px;align-items:center;gap:7px;border:1px solid var(--c-primary);border-radius:var(--radius-s);background:var(--c-primary-softer);color:var(--c-primary-strong);font-variant-numeric:tabular-nums;flex-wrap:wrap}.prep-selected-date span{color:var(--c-text)}.prep-selected-date strong,.prep-selected-date span{font-size:var(--fs-m);font-weight:750}.prep-booking-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,34%);gap:14px;padding:14px 16px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fbfcfc;cursor:pointer}.prep-booking-card:hover{border-color:var(--c-primary);background:var(--c-primary-softer)}.prep-booking-card-target{border-color:var(--c-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--c-primary) 18%,transparent)}.prep-booking-main{min-width:0;display:flex;flex-direction:column;gap:8px}.prep-booking-main h2{margin:0;font-size:var(--fs-l);overflow-wrap:break-word}.prep-booking-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.prep-booking-header .all-booking-top{justify-content:flex-start;flex-wrap:wrap}.prep-status-control{display:flex;align-items:center;gap:10px;flex:0 0 auto;font-size:var(--fs-s);color:var(--c-text-2)}.prep-status-control select{min-width:116px}.prep-booking-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px}.prep-booking-docs{min-width:0;padding-left:14px;border-left:1px solid var(--c-border)}.prep-booking-docs .panel-block{margin-top:0}.prep-booking-docs .panel-block-head{align-items:flex-start}.prep-booking-docs .panel-block-head .btn{padding:5px 8px;font-size:var(--fs-xs)}.prep-booking-docs .doc-list li{padding:7px 9px;font-size:var(--fs-s)}.prep-note-inline{display:flex;flex-direction:column;gap:4px;margin:0;padding:8px 10px;border:1px dashed var(--c-border);border-radius:var(--radius-s);background:var(--c-surface);color:var(--c-text-2);font-size:var(--fs-s);overflow-wrap:break-word}.prep-note-inline b{color:var(--c-text)}.teacher-attachments{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface)}.teacher-attachments-heading{display:flex;align-items:center;gap:7px;color:var(--c-text);font-size:var(--fs-s)}.teacher-attachments-heading>span{min-width:20px;padding:1px 6px;border-radius:999px;background:var(--c-primary-soft);color:var(--c-primary);font-size:var(--fs-xs);text-align:center}.teacher-attachment-files{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}.teacher-attachment-files li{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;padding:7px 8px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fbfcfc}.teacher-attachment-name{display:flex;flex-direction:column;min-width:0;overflow:hidden;color:var(--c-text);font-size:var(--fs-s);text-overflow:ellipsis;white-space:nowrap}.teacher-attachment-name small{color:var(--c-text-3);font-size:var(--fs-xs)}.teacher-attachments-compact{margin-top:2px;padding:9px 10px;border-style:dashed}.teacher-attachments-compact .teacher-attachment-files{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}@media(max-width:640px){.teacher-attachments-compact .teacher-attachment-files{grid-template-columns:minmax(0,1fr)}.teacher-attachment-files li{align-items:flex-start}}.booking-upload-button{width:fit-content;cursor:pointer}.booking-attachment-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.booking-attachment-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 10px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface);font-size:var(--fs-s);overflow-wrap:anywhere}.booking-prep-photo{display:block;width:min(220px,100%);max-height:150px;object-fit:cover;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-bg)}.booking-prep-photo-button{display:block;width:min(220px,100%);padding:0;border:0;border-radius:var(--radius-s);background:transparent;cursor:zoom-in}.booking-prep-photo-button .booking-prep-photo{width:100%}.booking-prep-photo-button:hover .booking-prep-photo,.booking-prep-photo-button:focus-visible .booking-prep-photo{border-color:var(--c-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--c-primary) 18%,transparent)}.dialog:has(.booking-prep-photo-preview){width:min(1100px,calc(100vw - 32px))}.booking-prep-photo-preview{display:flex;align-items:center;justify-content:center;min-height:240px;overflow:hidden;background:#fff}.booking-prep-photo-preview img{display:block;max-width:100%;max-height:calc(100vh - 190px);object-fit:contain}.booking-prep-photo-large{width:min(520px,100%);max-height:360px;object-fit:contain}.required-labs-toolbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px 20px;border-left:4px solid var(--c-primary)}.required-labs-count{display:flex;flex-direction:column;gap:2px;min-width:112px}.required-labs-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(145px,1fr));gap:10px;min-width:0}.required-labs-filter-grid>label{display:flex;flex-direction:column;gap:5px;min-width:0}.required-labs-filter-grid input,.required-labs-filter-grid select{width:100%;min-width:0}.required-labs-clear{align-self:end}.required-labs-page-list{display:flex;flex-direction:column;gap:12px}.required-lab-page-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,30%);gap:16px;align-items:start}.required-lab-page-main{min-width:0;display:flex;flex-direction:column;gap:8px}.required-lab-page-main h2{margin:0;font-size:var(--fs-l);overflow-wrap:break-word}.required-lab-page-main p{margin:0;color:var(--c-text-2)}.dialog:has(.required-lab-detail-dialog){width:min(800px,calc(100vw - 32px))}.required-lab-detail-dialog{display:flex;flex-direction:column;gap:16px;min-width:0;overflow-wrap:anywhere}.required-lab-detail-dialog h3{font-size:var(--fs-m);margin:0 0 8px}.required-lab-detail-dialog p{white-space:pre-line;margin:0}.required-lab-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(120px,100%),1fr));gap:12px;margin:0}.required-lab-facts dt{color:var(--c-text-2);font-size:var(--fs-s)}.required-lab-facts dd{margin:3px 0 0;font-weight:600}.lab-report-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.downloadable-lab-reports .doc-list li{flex-wrap:wrap}.panel-block.downloadable-lab-reports{border:0;padding:0}.downloadable-lab-reports .doc-list li>span{flex:1 1 150px}.downloadable-lab-reports .lab-report-actions .btn{min-height:36px}.conducted-badge{display:inline-flex;align-items:center;gap:4px;margin-left:10px;padding:3px 8px;vertical-align:middle;border-radius:999px;background:var(--c-success-bg);color:var(--c-success);font-size:var(--fs-xs);font-weight:700}.conducted-badge:before{content:"✓"}.evidence-link-box{display:flex;flex-direction:column;gap:9px;min-width:0;border:1px solid var(--c-border);border-radius:var(--radius-s);padding:12px;background:#f8fbfa}.evidence-link-box a{overflow-wrap:anywhere}.dialog:has(.booking-detail-dialog){width:min(960px,calc(100vw - 48px))}.booking-detail-dialog{display:flex;flex-direction:column;gap:12px}.booking-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr));gap:10px;padding:12px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#f8fbfa}.booking-summary-grid span{display:flex;flex-direction:column;gap:3px;min-width:0;overflow-wrap:break-word}.booking-summary-grid b{color:var(--c-text-3);font-size:var(--fs-xs);text-transform:uppercase}.compact-list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px}.compact-list p{margin:4px 0 0;color:var(--c-text-2)}.status-breakdown{display:flex;flex-direction:column;gap:6px}.status-line{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 10px;border-radius:var(--radius-s);text-decoration:none;color:inherit;border:1px solid transparent}.status-line:hover{background:var(--c-primary-softer);border-color:var(--c-border)}.status-line b{font-size:var(--fs-l);font-variant-numeric:tabular-nums}.prep-note{display:flex;align-items:flex-start;gap:8px;margin:0;padding:10px 20px 14px;font-size:var(--fs-s);color:var(--c-text-2);border-top:1px dashed var(--c-border)}.prep-note svg{flex:0 0 auto;margin-top:2px;color:var(--c-primary)}.prep-note b{color:var(--c-text)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0d1a2073;display:flex;justify-content:flex-end}.overlay-center{justify-content:center;align-items:center;padding:24px}.drawer{width:min(520px,100%);height:100%;overflow-y:auto;overscroll-behavior:contain;background:var(--c-surface);box-shadow:var(--shadow-3);padding:22px 24px;display:flex;flex-direction:column;gap:14px;padding-bottom:calc(22px + env(safe-area-inset-bottom));animation:slide-in .18s ease-out}@keyframes slide-in{0%{transform:translate(30px);opacity:.5}}.dialog{width:min(460px,100%);max-height:90vh;overflow-y:auto;overscroll-behavior:contain;background:var(--c-surface);border-radius:var(--radius-l);box-shadow:var(--shadow-3);padding:22px 24px;display:flex;flex-direction:column;gap:12px;animation:pop-in .15s ease-out}.dialog:has(.settings-dialog-wide){width:min(1180px,calc(100vw - 48px))}@supports (height: 100dvh){.drawer{height:100dvh}.dialog{max-height:90dvh}}@keyframes pop-in{0%{transform:scale(.97);opacity:.5}}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.drawer-head h2{font-size:var(--fs-xl)}.public-shell{min-height:100vh;display:grid;place-items:center;padding:26px;background:var(--c-bg)}.public-card,.public-card-wide{width:100%;max-width:420px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-l);box-shadow:var(--shadow-2);padding:30px 32px;display:flex;flex-direction:column;gap:14px}.public-card-wide{max-width:560px}.public-title{font-size:var(--fs-xl)}.public-intro{color:var(--c-text-2);font-size:var(--fs-m);margin:0}.public-card form,.public-card-wide form{display:flex;flex-direction:column;gap:14px}.public-card form .btn-block,.public-card-wide form .btn-block{margin-top:6px}.signup-next-hint{text-align:center;margin:0}.public-links{display:flex;flex-direction:column;gap:6px;font-size:var(--fs-m);padding-top:4px}.membership-list,.request-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.membership-item,.request-item{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border:1px solid var(--c-border);border-radius:var(--radius-s);padding:11px 14px;background:#fbfcfc}.membership-role{font-weight:600}.membership-school,.request-meta{color:var(--c-text-2);font-size:var(--fs-s)}.request-note{font-size:var(--fs-s);color:var(--c-text-2);width:100%}.request-actions{display:flex;gap:8px;margin-left:auto}@media(max-width:980px){.content{padding:18px 16px 70px}.two-col,.required-lab-columns{grid-template-columns:1fr}.required-lab-item{grid-template-columns:1fr;align-items:stretch}.grade-chip-row{justify-content:flex-start;max-width:none}.all-booking-card{grid-template-columns:38px minmax(0,1fr) auto}.all-bookings-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.all-booking-actions{justify-content:flex-start;max-width:none}.prep-booking-card{grid-template-columns:1fr}.prep-booking-header{flex-wrap:wrap}.prep-booking-docs{padding-left:0;padding-top:12px;border-left:none;border-top:1px solid var(--c-border)}.required-lab-page-card{grid-template-columns:1fr}.step-label{display:none}}@media(max-width:860px){.menu-toggle{display:inline-flex}.sidebar{position:fixed;z-index:70;left:0;top:0;transform:translate(-100%);transition:transform .2s ease-out,visibility .2s;box-shadow:var(--shadow-3);visibility:hidden;padding-bottom:env(safe-area-inset-bottom)}.sidebar-open .sidebar{transform:translate(0);visibility:visible}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:65;background:#0d1a2066;border:none}.dash-hero{padding:20px}.drawer{width:100%}thead th,tbody td{padding:9px 10px}}@media(max-width:560px){.chemical-quantity-form-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.chemical-quantity-unit{grid-column:1 / -1}.page-title{font-size:var(--fs-xl)}.wizard-footer{flex-direction:column-reverse;align-items:stretch}.wizard-footer .btn{width:100%}.booking-head{flex-direction:column;align-items:flex-start;gap:8px}}@media(max-width:560px){.content{padding:16px 12px 72px}.card{padding:16px 14px}.topbar{padding:6px max(10px,env(safe-area-inset-right)) 6px max(10px,env(safe-area-inset-left));gap:8px;flex-wrap:wrap;height:auto;min-height:var(--topbar-h)}.user-name{display:none}.topbar-school{order:2;flex:1 1 100%}.topbar-school>label{flex:1 1 0;min-width:0}.menu-toggle,.topbar-spacer,.topbar-user{order:1}.topbar-spacer{flex:1 1 auto}.topbar-user{gap:4px}.notification-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:79;padding:0;border:0;background:#0d1a2073}.notification-panel{position:fixed;inset:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));z-index:80;width:auto;max-height:none;border-radius:var(--radius-m);overscroll-behavior:contain}.notification-panel-head{position:sticky;top:-12px;z-index:1;margin:-12px -12px 0;padding:12px;background:var(--c-surface);border-bottom:1px solid var(--c-border)}.school-switcher select,.acting-as-switcher select,.page-header-actions{width:100%}.page-header-actions .btn{flex:1 1 auto}.inventory-header-actions{width:100%}.inventory-header-actions .btn{min-width:0}.inventory-room-card{padding:10px}.inventory-category-tabs{overflow-x:auto}.inventory-category-tabs .tab{min-width:max-content}.dialog:has(.inventory-settings-dialog){width:100%}.inventory-rule-row{grid-template-columns:minmax(0,1fr);gap:12px}.inventory-number-control{justify-content:flex-start}.inventory-import-actions{width:100%}.inventory-import-actions .btn{flex:1 1 100%;justify-content:center}.inventory-image-source-grid{grid-template-columns:minmax(0,1fr)}.inventory-image-source-option{min-height:104px}.card>.table-wrap{margin-left:-14px;margin-right:-14px;width:calc(100% + 28px);border-left:none;border-right:none;border-radius:0}.stat-row,.stat-grid{grid-template-columns:repeat(auto-fit,minmax(min(130px,100%),1fr));gap:8px}.expiry-mass-summary{grid-template-columns:minmax(0,1fr)}.dashboard-week-row{grid-template-columns:minmax(0,1fr) auto;gap:8px 10px}.dashboard-week-lab,.dashboard-week-teacher{grid-column:1 / -1}.dashboard-week-teacher{flex-direction:row;gap:6px}.filter-bar .search,.catalogue-filters .search{min-width:0}.catalogue-filters select{width:auto;flex:1 1 140px}.action-row .btn{flex:1 1 auto}.overlay-center{padding:12px}.drawer,.dialog{padding:18px 14px}.dialog{max-width:100%}.dialog:has(.settings-dialog-wide){width:100%}.dialog:has(.booking-detail-dialog){width:100%}.all-bookings-export-row{justify-content:flex-start}.all-bookings-filter-card{padding:16px 14px}.all-bookings-filter-head{align-items:center}.all-bookings-filter-grid{grid-template-columns:minmax(0,1fr)}.all-bookings-result-count{flex-basis:100%}.all-bookings-export-row .btn{flex:1 1 180px}.summary-grid{gap:10px 14px}.public-shell{padding:14px 12px}.public-card,.public-card-wide{padding:22px 18px}}.chip-list{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}.entity-chip{display:inline-flex;align-items:center;gap:6px;background:var(--c-primary-softer);border-radius:999px;padding:4px 6px 4px 12px;font-size:var(--fs-s)}.entity-chip-code{color:var(--c-text-3);font-size:var(--fs-xs)}.chip-x{border:none;background:#0000000f;border-radius:50%;width:20px;height:20px;display:inline-grid;place-items:center;cursor:pointer;color:var(--c-text-2)}.chip-x:hover{background:var(--c-danger, #d64550);color:#fff}.inline-add{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-top:8px}.inline-add input{min-width:160px}.inline-add .form-field{margin:0}.entity-rows{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.entity-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border:1px solid var(--c-border);border-radius:var(--radius-s);padding:10px 12px}.entity-row-main{display:flex;flex-direction:column;gap:2px;min-width:0}.entity-row-name{display:inline-flex;align-items:center;gap:6px;font-weight:600}.entity-row-meta{font-size:var(--fs-xs);color:var(--c-text-3)}.entity-row-actions{display:flex;gap:6px;flex-wrap:wrap}.entity-row-edit{display:flex;gap:8px;flex-wrap:wrap;align-items:center;width:100%}.entity-row-edit input{flex:1 1 200px}.bulk-cat-head{display:flex;align-items:center;gap:4px;background:var(--c-primary-softer);padding-right:8px}.bulk-cat-toggle{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:8px;padding:10px 14px;background:none;border:none;cursor:pointer;text-align:left;font:600 var(--fs-m) var(--font);color:var(--c-primary-strong)}.bulk-cat-remove{flex-shrink:0;color:var(--c-danger)}.bulk-cat-remove:hover{background:var(--c-danger-bg)}.settings-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:12px;margin:0;padding:0;list-style:none}.settings-tile{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;padding:16px;border:1px solid var(--c-border);border-radius:var(--radius-m);background:var(--c-surface);cursor:pointer;color:inherit;font:inherit;transition:border-color .15s,box-shadow .15s}.settings-tile:hover{border-color:var(--c-primary);box-shadow:var(--shadow-1)}.settings-tile-icon{flex-shrink:0;display:grid;place-items:center;width:38px;height:38px;border-radius:var(--radius-s);background:var(--c-primary-soft);color:var(--c-primary-strong)}.settings-tiles li:nth-child(4n+2) .settings-tile-icon{background:var(--c-info-bg);color:var(--c-info)}.settings-tiles li:nth-child(4n+3) .settings-tile-icon{background:var(--c-lab-bg);color:var(--c-lab)}.settings-tiles li:nth-child(4n+4) .settings-tile-icon{background:var(--c-accent-bg);color:var(--c-accent)}.settings-tile-text{display:flex;flex-direction:column;gap:3px;min-width:0}.settings-tile-title{font-weight:650;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.settings-tile-desc{font-size:var(--fs-xs);color:var(--c-text-2)}.settings-tile-chevron{margin-left:auto;align-self:center;color:var(--c-text-3);flex-shrink:0}.settings-embed>.card{padding:0;border:none;box-shadow:none;background:none;margin:0}.settings-embed>.card>.card-title,.settings-embed>.card>*>.card-title{display:none}.settings-dialog-wide{min-width:0}.school-logo-row{margin-top:16px;display:flex;flex-direction:column;gap:8px}.school-logo-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.school-logo-preview{width:72px;height:72px;object-fit:contain;background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--radius-s);padding:4px}.school-logo-empty{width:72px;height:72px;display:grid;place-items:center;color:var(--c-text-3);border:1px dashed var(--c-border-strong);border-radius:var(--radius-s)}.school-logo-controls label.btn{cursor:pointer}.required-lab-columns{display:grid;grid-template-columns:minmax(420px,1.15fr) minmax(360px,.85fr);gap:16px;margin-top:16px}.required-lab-panel{min-width:0;padding:12px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fbfcfc}.section-heading-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.section-heading-row h3{font-size:var(--fs-l)}.required-lab-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.required-lab-controls select{width:auto;min-width:132px}.required-lab-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.required-lab-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 12px;padding:12px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface)}.required-lab-item-compact{grid-template-columns:minmax(0,1fr) auto}.required-lab-main{display:flex;flex-direction:column;gap:2px;min-width:0}.required-lab-item:not(.required-lab-item-compact) .required-lab-main{grid-column:1 / -1}.required-lab-main strong{overflow-wrap:break-word;line-height:1.35}.grade-dropdown{position:relative;justify-self:start}.grade-dropdown summary{min-height:32px;min-width:130px;padding:6px 30px 6px 10px;border:1px solid var(--c-border-strong);border-radius:var(--radius-s);background:var(--c-surface);color:var(--c-primary-strong);font:650 var(--fs-s) var(--font);cursor:pointer;list-style:none}.grade-dropdown summary::-webkit-details-marker{display:none}.grade-dropdown summary:after{content:"⌄";position:absolute;right:11px;top:6px;color:var(--c-text-3)}.grade-dropdown[open] summary{border-color:var(--c-primary);box-shadow:var(--shadow-1)}.grade-dropdown-menu{position:absolute;z-index:8;top:calc(100% + 4px);left:0;width:min(260px,80vw);max-height:280px;overflow:auto;padding:8px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface);box-shadow:var(--shadow-2)}.grade-dropdown-option{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:6px;font-size:var(--fs-s);cursor:pointer}.grade-dropdown-option:hover{background:var(--c-primary-softer)}.check-line{display:flex;align-items:center;gap:8px;margin:10px 0;font-size:var(--fs-s);cursor:pointer}.grade-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.grade-item{border:1px solid var(--c-border);border-radius:var(--radius-s)}.grade-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px}.grade-toggle{display:flex;align-items:center;gap:8px;flex:1 1 auto;min-width:0;background:none;border:none;cursor:pointer;text-align:left;padding:6px 8px;min-height:36px;color:inherit;border-radius:var(--radius-s)}.form-section{margin-top:14px}.form-section:first-of-type{margin-top:4px}.form-section-title{font-size:var(--fs-xs);font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--c-text-3);border-bottom:1px solid var(--c-border);padding-bottom:5px;margin-bottom:10px}.grade-toggle:hover,.bulk-cat-toggle:hover{background:var(--c-primary-soft)}.hint-icon{width:18px;height:18px;padding:0;border-radius:50%;border:1px solid var(--c-border-strong);background:var(--c-primary-softer);color:var(--c-text-2);font:700 11px/16px var(--font);cursor:help}.hint-icon:hover{background:var(--c-primary-soft);color:var(--c-primary-strong)}@media(pointer:coarse){.hint-icon{width:26px;height:26px;line-height:24px}}.grade-name{font-weight:600}.grade-body{padding:0 12px 12px;border-top:1px dashed var(--c-border)}.section-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.section-item{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:var(--fs-s)}.section-preview{font-size:var(--fs-xs);color:var(--c-text-3);align-self:center}.levels-panel{margin-top:12px}.level-row{flex-wrap:wrap}.level-picker{width:100%;margin-top:10px;padding-top:10px;border-top:1px dashed var(--c-border)}.level-picker-grade{margin-bottom:8px}.setup-checklist{border-left:3px solid var(--c-primary)}.setup-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.setup-item{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.setup-item .setup-label{font-weight:600}.setup-item .setup-why{flex:1 1 240px;font-size:var(--fs-xs)}.setup-done .setup-label{color:var(--c-text-3);text-decoration:line-through}.invite-row{position:relative}.invite-row .form-row{align-items:flex-end}.invite-row-remove{flex:0 0 auto;margin-bottom:4px}.field-hint-error{color:var(--c-danger, #d64550)}.invite-results{margin:10px 0}.invite-result-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:var(--fs-s)}.invite-result-list li{display:flex;align-items:center;gap:6px;color:var(--c-text-2)}.subject-suggestions{margin-top:12px}.suggest-chip{display:inline-flex;align-items:center;gap:5px;cursor:pointer;border:1px dashed var(--c-border);background:none;border-radius:999px;padding:6px 12px;font-size:var(--fs-s);color:var(--c-text-2);min-height:34px}.suggest-chip:hover:not(:disabled){border-style:solid;border-color:var(--c-primary);color:var(--c-primary)}.suggest-chip:disabled{opacity:.5;cursor:default}.timetable-set{border:1px solid var(--c-border);border-radius:var(--radius-s);padding:12px 14px;margin:10px 0}.timetable-set-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.period-list{display:flex;flex-direction:column;gap:8px}.period-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px 14px;padding:10px 12px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface)}.period-row-main{display:grid;grid-template-columns:28px minmax(120px,1fr) auto auto;align-items:center;gap:10px;min-width:0}.period-row-label{display:flex;flex-direction:column;gap:2px;min-width:0}.period-row-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.period-time-fields{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.period-row .notice{grid-column:1 / -1}.break-row{background:#fbfcfc;border-style:dashed}.period-row input[type=time]{width:auto}.period-name{min-width:70px;font-weight:600}.period-add{border-top:1px dashed var(--c-border);margin-top:6px;padding-top:8px}.period-section-label{margin:6px 0 4px;font-size:.9rem;text-transform:uppercase;letter-spacing:.04em;color:var(--c-text-muted)}.drop-slot{height:2px}.drop-slot-active{height:44px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--c-border);border-radius:var(--radius-s);color:var(--c-text-muted);font-size:.8rem;background:var(--c-surface-2, transparent);transition:background .1s,border-color .1s}.drop-slot-over{border-color:var(--c-brand);border-style:solid;background:color-mix(in srgb,var(--c-brand) 12%,transparent);color:var(--c-brand)}.break-list{display:flex;flex-direction:column;gap:6px}.break-row{padding:4px 6px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-surface-2, transparent)}.break-row-dragging{opacity:.5}.drag-handle{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;color:var(--c-text-muted);font-size:1.25rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}.break-row-dragging .drag-handle{cursor:grabbing}.break-move{display:inline-flex;gap:2px}.break-position{font-size:.8rem;margin-left:2px}.grade-assign-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));gap:8px 16px;margin-top:6px}.grade-assign-row{display:flex;align-items:center;gap:8px}.grade-assign-label{min-width:44px;font-weight:600}.grade-assign-row select{flex:1}.import-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.invite-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}.invite-row{display:flex;flex-direction:column;gap:8px;border:1px solid var(--c-border);border-radius:var(--radius-s);padding:12px 14px;background:var(--c-surface)}.invite-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:space-between}.invite-text{font-weight:600}.invite-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.invite-actions select{width:auto;min-width:140px}.school-code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--fs-l);font-weight:700;letter-spacing:.18em;background:var(--c-primary-softer);border-radius:var(--radius-s);padding:8px 16px;color:var(--c-primary-strong, var(--c-primary))}.join-fieldset{border:1px solid var(--c-border);border-radius:var(--radius-s);padding:14px 16px 6px;margin:6px 0 14px}.join-fieldset>legend{font-size:var(--fs-s);font-weight:600;color:var(--c-text-2);padding:0 6px}.dialog:has(.booking-dialog){width:min(780px,100%)}.booking-dialog{display:flex;flex-direction:column;gap:14px}.duplicate-date-summary{display:flex;align-items:center;gap:12px;padding:13px 15px;border:1px solid var(--c-primary);border-left-width:4px;border-radius:var(--radius-s);background:var(--c-primary-softer);color:var(--c-primary)}.duplicate-date-summary>div{display:flex;flex-direction:column;gap:2px}.duplicate-date-summary span,.duplicate-date-summary small{font-size:var(--fs-xs)}.duplicate-date-summary strong{font-size:var(--fs-m);color:var(--c-text)}.duplicate-date-summary.same-date{border-color:var(--c-warning);background:var(--c-warning-bg);color:var(--c-warning)}@media(max-width:900px){.teacher-analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.teacher-analysis-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:620px){.dialog:has(.teacher-analysis-dialog){width:100%}.all-bookings-header-actions{width:100%}.all-bookings-header-actions .btn{flex:1 1 150px}.teacher-analysis-grid,.teacher-analysis-summary-grid{grid-template-columns:1fr}.teacher-analysis-detail-head,.teacher-analysis-section-head{flex-direction:column}.teacher-analysis-breakdown-list>button,.teacher-analysis-grade-list>button,.teacher-lab-row{grid-template-columns:repeat(2,minmax(0,1fr))}.teacher-analysis-breakdown-list strong,.teacher-analysis-grade-list strong,.teacher-lab-row-main{grid-column:1 / -1}.teacher-lab-row>svg{justify-self:end}}.dialog-lab-head h3{font-size:var(--fs-l);margin:0 0 2px}.dialog-lab-head .muted{font-size:var(--fs-s);margin:0;color:var(--c-text-2)}.included-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 12px;background:var(--c-primary-softer);border-radius:var(--radius-s)}.included-label{font-size:var(--fs-s);font-weight:600;color:var(--c-text-2)}.included-strip .badge{display:inline-flex;align-items:center;gap:4px}.dialog-subhead{font-size:var(--fs-m);font-weight:600;display:flex;align-items:center;gap:6px;margin:0 0 6px}.dialog-section{border-top:1px solid var(--c-border);padding-top:12px}.lab-card-static{cursor:default}.lab-card-static:hover{border-color:var(--c-border-strong);box-shadow:none}.upload-preview{position:relative;display:inline-block}.upload-preview .thumb{width:72px;height:72px}.upload-preview .upload-remove{position:absolute;top:-8px;right:-8px;z-index:1;width:22px;height:22px;padding:0;line-height:20px;text-align:center;border-radius:50%;border:1px solid var(--c-border);background:var(--c-surface, #fff);color:var(--c-danger, #b02318);font-size:13px;cursor:pointer;box-shadow:0 1px 4px #0003}.upload-preview .upload-remove:hover{background:var(--c-danger, #b02318);color:#fff}.upload-file{display:inline-flex;align-items:center;gap:10px}.upload-remove-inline{width:22px;height:22px;padding:0;line-height:20px;text-align:center;border-radius:50%;border:1px solid var(--c-border);background:var(--c-surface, #fff);color:var(--c-danger, #b02318);font-size:13px;cursor:pointer}.upload-remove-inline:hover{background:var(--c-danger, #b02318);color:#fff}.detail-row>td{padding:0;background:var(--c-bg-subtle, #f4f7f8)}.detail-row .card{margin:6px 10px 14px;box-shadow:none;border:1px solid var(--c-border)}.lab-docs{padding:4px 2px}.doc-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:14px}.doc-card{position:relative;overflow:hidden;border:1px solid var(--c-border);border-radius:12px;background:var(--c-surface, #fff);padding:16px 16px 14px;display:flex;flex-direction:column;box-shadow:0 1px 3px #1428320f}.doc-card-tab{position:absolute;top:0;left:0;right:0;height:4px}.doc-card-tab.tab-technician{background:#2f6e73}.doc-card-tab.tab-teacher{background:#b7791f}.doc-card-tab.tab-student{background:#3b6db0}.doc-card h3{margin:4px 0 6px;font-size:15px;color:#1f2a2b}.doc-card-desc{flex:1;font-size:13px;color:#566;line-height:1.5;margin:0 0 12px}.doc-card-actions{display:flex;gap:8px;flex-wrap:wrap}.doc-card-actions .btn{text-decoration:none;padding:6px 12px;font-size:13px}.advanced-edit{margin-top:16px;border-top:1px dashed var(--c-border);padding-top:8px}@media(max-width:640px){.doc-cards{grid-template-columns:1fr}}.doc-card-actions .btn-link{padding:6px;color:#2f6e73}.catalogue-filters{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin-bottom:16px}.catalogue-filters .filter-selects{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.catalogue-filters select{width:156px;padding:8px 10px;border:1px solid var(--c-border);border-radius:8px;background:var(--c-surface, #fff);font:inherit}.catalogue-filters .filter-right{display:flex;align-items:center;gap:12px;margin-left:auto}.catalogue-filters .catalogue-count{color:#7d9294;font-size:13px;white-space:nowrap}.catalogue-filters .search{width:240px;margin:0}.catalogue-filters .search input{width:100%}@media(max-width:720px){.catalogue-filters .filter-right{margin-left:0;width:100%}.catalogue-filters .search{flex:1;width:auto}}.course-cell{font-size:12.5px;color:#556;max-width:220px}.chip-select{display:flex;flex-wrap:wrap;gap:8px}.segmented{display:inline-flex;gap:6px}.school-pick-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto}.school-pick{width:100%;text-align:left;display:flex;flex-direction:column;gap:2px;padding:9px 12px;border:1px solid var(--border, #d7dbe0);border-radius:8px;background:var(--surface, #fff);cursor:pointer}.school-pick:hover{border-color:var(--accent, #3b6ef5)}.school-pick.is-selected{border-color:var(--accent, #3b6ef5);box-shadow:0 0 0 2px #3b6ef52e}.school-pick-name{font-weight:600}.school-pick-campus{font-size:12.5px;color:#667}.review-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.review-item{border:1px solid var(--border, #e2e5ea);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px}.review-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.review-diff{display:flex;flex-direction:column;gap:4px}.proposed-field{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}.proposed-from{color:#889;text-decoration:line-through}.invite-admin-list .membership-item{flex-wrap:wrap}@media(pointer:coarse){.btn-sm{min-height:40px;padding:0 12px}.btn-ghost,.btn-link{min-height:40px}.icon-btn{width:44px;height:44px}.chip-x{width:30px;height:30px}.suggest-chip{min-height:44px;padding:0 16px}.upload-preview .upload-remove,.upload-remove-inline{width:32px;height:32px}.school-switcher select,.bookings-toolbar select{min-height:40px}.step-dot{width:38px;height:38px}input[type=checkbox],input[type=radio]{width:22px;height:22px}input,select,textarea{font-size:16px}}.timetable-title{background:none;border:none;padding:2px 4px;font:650 var(--fs-l) var(--font);color:var(--c-text);cursor:pointer;border-radius:var(--radius-s);display:inline-flex;align-items:center;gap:6px}.timetable-title:hover{background:var(--c-primary-softer);color:var(--c-primary-strong)}.timetable-title svg{opacity:.45}.timetable-title-input{font:650 var(--fs-l) var(--font);max-width:320px}.timetable-actions{display:inline-flex;gap:6px;flex-wrap:wrap}.weekday-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}.day-chip{min-height:36px;min-width:52px;padding:0 12px;border-radius:999px;border:1px solid var(--c-border-strong);background:var(--c-surface);color:var(--c-text-2);font:600 var(--fs-s) var(--font);cursor:pointer}.day-chip:hover{border-color:var(--c-primary);color:var(--c-primary-strong)}.day-chip-on{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.day-chip-taken{opacity:.5}.timetable-hints{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}.timetable-hints li{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--c-text-3)}.break-name-input{max-width:130px}@media(pointer:coarse){.day-chip{min-height:42px}}.grid-break-row td{background:var(--c-bg);color:var(--c-text-3)}.grid-break-cell{font-size:var(--fs-xs);font-style:italic;text-align:center;vertical-align:middle;color:var(--c-text-3)}.scope-chip{min-height:30px;padding:0 10px;border-radius:999px;border:1px dashed var(--c-border-strong);background:none;color:var(--c-text-2);font:600 var(--fs-xs) var(--font);cursor:pointer;white-space:nowrap}.scope-chip:hover{border-style:solid;border-color:var(--c-primary);color:var(--c-primary-strong)}.scope-editor{grid-column:1 / -1;margin-top:2px;padding:10px 12px;border:1px solid var(--c-border);border-radius:var(--radius-s);background:var(--c-primary-softer)}.scope-editor .chip-list{gap:6px;margin-top:4px}@media(pointer:coarse){.scope-chip{min-height:38px}}.scope-chip-on{border-style:solid;border-color:var(--c-primary);color:var(--c-primary-strong);background:var(--c-primary-softer)}.variant-row{display:grid;grid-template-columns:auto 72px auto 72px 120px auto 120px minmax(0,1fr) auto;align-items:center;gap:6px;margin:6px 0}.variant-row select{width:auto;min-width:64px}.variant-row input[type=time]{width:auto}.variant-warn{font-size:var(--fs-xs);color:var(--c-warning)}@media(max-width:980px){.period-row{grid-template-columns:1fr;align-items:stretch}.period-row-main{grid-template-columns:28px minmax(0,1fr)}.period-time-fields,.scope-chip{grid-column:2;justify-self:start}.period-row-actions{justify-content:flex-start}.variant-row{grid-template-columns:auto 1fr auto 1fr}.variant-row input[type=time],.variant-row .variant-warn,.variant-row .icon-btn{grid-column:span 2}}.lab-row{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--c-border)}.lab-row:last-of-type{border-bottom:none}.lab-name{max-width:240px;font-weight:600}.lab-field{display:flex;flex-direction:column;gap:2px}.lab-field select{width:auto;min-width:120px}.wizard-card{max-width:760px}.wizard-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.wizard-progress{font-size:var(--fs-xs);color:var(--c-text-3);margin:4px 0 12px}.wizard-step{margin:8px 0 16px}.wizard-q{font-size:var(--fs-l);margin:14px 0 10px}.wizard-choices{display:flex;gap:10px;flex-wrap:wrap}.wizard-choice{min-height:60px;padding:0 22px;border-radius:var(--radius-m);border:2px solid var(--c-border-strong);background:var(--c-surface);font:600 var(--fs-m) var(--font);cursor:pointer}.wizard-choice:hover{border-color:var(--c-primary);color:var(--c-primary-strong)}.wizard-choice-on{border-color:var(--c-primary);background:var(--c-primary-soft);color:var(--c-primary-strong)}.wizard-choice-sm{min-height:48px;min-width:56px;padding:0 16px}.wizard-block{margin:16px 0;padding-bottom:12px;border-bottom:1px solid var(--c-border)}.wizard-block:last-child{border-bottom:none}.wizard-fields{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.wizard-list{display:flex;flex-direction:column;gap:8px;margin-top:12px;max-width:380px}.wizard-summary{margin:8px 0;padding-left:20px;line-height:1.8}.wizard-actions{justify-content:space-between;margin-top:18px}.stepper-input{display:flex;align-items:center;gap:10px}.stepper-input b{min-width:26px;text-align:center;font-size:var(--fs-l)}.schedule-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.schedule-tab{min-height:38px;padding:0 14px;border-radius:var(--radius-s);border:1px solid var(--c-border-strong);background:var(--c-surface);font:600 var(--fs-s) var(--font);cursor:pointer}.schedule-tab-on{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.advanced-add{margin-top:14px}.advanced-add summary{font-size:var(--fs-xs);color:var(--c-text-3);cursor:pointer}.code-confirm{font-size:var(--fs-s);font-weight:650;color:var(--c-success);margin:4px 0 0}.pending-card{max-width:560px;margin:40px auto;text-align:center}.pending-card .card-title{justify-content:center}.row-excluded>td{opacity:.55}.catalogue-select-bar{align-items:center;gap:12px;padding:8px 2px 12px;border-bottom:1px solid var(--c-border);margin-bottom:8px;flex-wrap:wrap}.checkbox-grid{display:flex;flex-wrap:wrap;gap:6px 14px}.checkbox-inline{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-s);white-space:nowrap}.grade-class-tree{display:flex;flex-wrap:wrap;gap:8px 20px}.grade-class-group{border-left:2px solid var(--c-border);padding-left:10px}.grade-class-children{display:flex;flex-direction:column;gap:4px;padding:4px 0 0 16px}.section-rule{border:0;border-top:1px solid var(--c-border);margin:20px 0}.term-picker{display:flex;flex-direction:column;gap:6px;margin:8px 0 4px}.term-option{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--c-border);border-radius:8px;cursor:pointer}.term-option.is-current{border-color:var(--c-accent, #2f6e73);background:color-mix(in srgb,var(--c-accent, #2f6e73) 8%,transparent)}.dialog:has(.custom-labs-dialog){width:min(1000px,100%)}.custom-labs-dialog{display:flex;flex-direction:column;gap:14px}.table-sort{font:inherit;font-weight:600;color:inherit;padding:0}.table-sort[aria-pressed=true]{color:var(--c-accent)}.profile-page{gap:16px}.profile-overview{display:grid;grid-template-columns:auto minmax(180px,1fr) auto;align-items:center;gap:16px;padding:18px 20px;background:var(--c-surface);border-top:1px solid var(--c-border);border-bottom:1px solid var(--c-border)}.profile-avatar{width:54px;height:54px;display:grid;place-items:center;border-radius:50%;background:var(--c-primary);color:#fff;font-size:var(--fs-xl);font-weight:750}.profile-overview-copy{min-width:0}.profile-overview-copy h2{font-size:var(--fs-xl);letter-spacing:0}.profile-overview-copy span{display:block;margin-top:2px;color:var(--c-text-2);overflow-wrap:anywhere}.profile-overview-facts{display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap}.profile-overview-fact{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid #bfd5ed;border-radius:999px;background:var(--c-info-bg);color:var(--c-info);font-size:var(--fs-s);font-weight:650}.profile-overview-role{border-color:#d8c8ee;background:var(--c-accent-bg);color:var(--c-accent)}.profile-layout{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(300px,.82fr);gap:18px;align-items:start}.profile-column{display:flex;flex-direction:column;gap:18px;min-width:0}.profile-section-card{position:relative;overflow:hidden;box-shadow:none;border-top-width:3px}.profile-card-account{border-top-color:var(--c-info)}.profile-card-professional{border-top-color:var(--c-lab)}.profile-card-roles{border-top-color:var(--c-accent)}.profile-card-invites{border-top-color:var(--c-primary)}.profile-card-review{border-top-color:var(--c-warning)}.profile-card-heading{display:flex;align-items:flex-start;gap:11px;margin-bottom:18px}.profile-card-heading .card-title{margin:0;letter-spacing:0}.profile-card-heading p{margin:2px 0 0;color:var(--c-text-2);font-size:var(--fs-s)}.profile-card-icon{width:34px;height:34px;display:grid;place-items:center;flex:0 0 auto;border-radius:var(--radius-s);background:var(--c-info-bg);color:var(--c-info)}.profile-card-professional .profile-card-icon{background:var(--c-lab-bg);color:var(--c-lab)}.profile-card-roles .profile-card-icon{background:var(--c-accent-bg);color:var(--c-accent)}.profile-form{display:flex;flex-direction:column;gap:14px}.profile-form-grid,.profile-professional-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 18px}.profile-field-wide{grid-column:1 / -1}.profile-form input:disabled{color:var(--c-text-2);background:#f7f9fa;border-color:var(--c-border);opacity:1}.profile-save-row{display:flex;justify-content:flex-end}.profile-account-tools{display:flex;flex-direction:column;gap:9px;padding-top:14px;border-top:1px solid var(--c-border)}.profile-tools-label{color:var(--c-text-3);font-size:var(--fs-xs);font-weight:750;text-transform:uppercase;letter-spacing:.06em}.profile-membership-item{display:grid;grid-template-columns:minmax(90px,auto) minmax(120px,1fr) auto;align-items:center;gap:6px 10px;padding:12px;background:var(--c-surface)}.profile-membership-item .btn{grid-column:1 / -1;justify-self:start;padding-left:0}@media(max-width:1080px){.required-labs-toolbar{grid-template-columns:1fr auto}.required-labs-count{grid-column:1 / -1;flex-direction:row;align-items:baseline;gap:10px}.required-labs-filter-grid{grid-template-columns:repeat(2,minmax(145px,1fr))}}@media(max-width:980px){.profile-layout{grid-template-columns:1fr}.profile-column-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.profile-card-review{grid-column:1 / -1}}@media(max-width:700px){.profile-overview{grid-template-columns:auto minmax(0,1fr);padding:16px 14px}.profile-overview-facts{grid-column:1 / -1;justify-content:flex-start}.profile-form-grid,.profile-professional-grid,.profile-column-side{grid-template-columns:1fr}.profile-card-review,.profile-field-wide{grid-column:auto}.profile-account-tools .action-row,.profile-account-tools .btn,.profile-save-row .btn{width:100%}.required-labs-toolbar,.required-labs-filter-grid{grid-template-columns:1fr}.required-labs-clear{justify-self:start}}@media(max-width:420px){.profile-overview-fact{width:100%;border-radius:var(--radius-s)}.profile-overview-facts .chip{width:100%;justify-content:center}.profile-membership-item{grid-template-columns:1fr}.profile-membership-item .btn{grid-column:auto}}@media(max-width:700px){.calendar-month-card{padding:12px 8px}.calendar-month-toolbar{padding:0 4px}.calendar-month-toolbar h2{min-width:0;flex:1;font-size:var(--fs-l)}.calendar-today-btn{margin-left:0}.calendar-weekday{padding:7px 1px;font-size:9px}.calendar-day{position:relative;min-height:62px;padding:3px}.calendar-day-number{width:27px;height:27px;font-size:11px}.calendar-day-events{display:none}.calendar-mobile-count{position:absolute;right:4px;bottom:5px;display:grid;width:19px;height:19px;border-radius:50%;place-items:center;background:var(--c-primary);color:#fff;font-size:9px;font-weight:750}.calendar-legend{padding:0 4px}.all-booking-command-bar{grid-column:2 / -1;grid-row:2;align-items:flex-start;justify-content:flex-start}.all-booking-card{grid-template-columns:34px minmax(0,1fr)}.all-booking-delete-cell{grid-row:1 / span 2}.all-booking-main{grid-column:2;grid-row:1}.all-booking-primary-actions{min-width:0;flex-wrap:wrap}}@media(max-width:420px){.calendar-month-toolbar{flex-wrap:wrap}.calendar-month-toolbar h2{order:-1;flex-basis:100%}.calendar-today-btn{margin-left:auto}.all-booking-card{padding:10px 10px 10px 0}.all-booking-command-bar .btn{padding-inline:9px}}
