:root{--blue:#002f6c;--blue2:#0a447f;--red:#d71920;--bg:#f3f6fa;--text:#172033;--muted:#667085;--line:#dce3ec;--green:#16794b;--amber:#a15c00;--white:#fff;--shadow:0 12px 30px rgba(18,38,63,.10)}
*{box-sizing:border-box}html{min-height:100%;background:var(--bg)}body{margin:0;min-height:100vh;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}a{color:var(--blue);text-decoration:none}button,input,select,textarea{font:inherit}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px clamp(14px,3vw,32px);background:var(--blue);color:white;box-shadow:0 2px 10px rgba(0,0,0,.12)}.brand{display:flex;align-items:center;gap:12px;color:white;min-width:0}.brand img{height:50px;width:64px;object-fit:contain;background:white;border-radius:10px;padding:4px}.brand span{display:flex;flex-direction:column;min-width:0}.brand strong{font-size:1.08rem}.brand small{opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-actions{display:flex;gap:8px;align-items:center}.user-strip{display:flex;justify-content:center;gap:8px;align-items:center;padding:7px 14px;background:white;border-bottom:1px solid var(--line);font-size:.86rem;color:var(--muted)}.dot{opacity:.45}.page{width:min(1180px,calc(100% - 28px));margin:24px auto 48px}.page-narrow{width:min(720px,calc(100% - 28px));margin:24px auto 48px}.hero{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:20px}.hero h1{margin:0;color:var(--blue);font-size:clamp(1.55rem,3vw,2.25rem)}.hero p{margin:.4rem 0 0;color:var(--muted)}.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:18px}.module-card{display:flex;flex-direction:column;min-height:205px;padding:22px;background:white;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);transition:.18s transform,.18s box-shadow;color:var(--text)}.module-card:hover{transform:translateY(-2px);box-shadow:0 16px 34px rgba(18,38,63,.14)}.module-icon{font-size:2rem;margin-bottom:12px}.module-card h2{margin:0 0 8px;color:var(--blue);font-size:1.25rem}.module-card p{margin:0;color:var(--muted);line-height:1.45;flex:1}.module-card .module-link{margin-top:18px;font-weight:700;color:var(--red)}.card{background:white;border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow);margin-bottom:18px}.card h1,.card h2,.card h3{color:var(--blue);margin-top:0}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:16px}.toolbar-group{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:10px;background:var(--red);color:white;padding:10px 15px;font-weight:700;cursor:pointer;min-height:42px}.btn:hover{filter:brightness(.94)}.btn-secondary{background:var(--blue)}.btn-light{background:white;color:var(--blue)}.btn-ghost{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24)}.btn-small{padding:7px 10px;min-height:34px;font-size:.88rem}.btn-danger{background:#a51419}.btn-success{background:var(--green)}.btn-muted{background:#667085}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:.88rem;font-weight:700;color:#344054}.field input,.field select,.field textarea,.search-input{width:100%;padding:11px 12px;border:1px solid #cfd8e3;border-radius:10px;background:white;color:var(--text);outline:none}.field input:focus,.field select:focus,.field textarea:focus,.search-input:focus{border-color:#6b9fd1;box-shadow:0 0 0 3px rgba(0,79,146,.10)}.field textarea{min-height:108px;resize:vertical}.form-actions{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}table{width:100%;border-collapse:collapse;min-width:720px;background:white}th,td{text-align:left;padding:12px 13px;border-bottom:1px solid var(--line);vertical-align:middle}th{background:#f8fafc;color:#475467;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:0}.status{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:.8rem;font-weight:800;background:#edf2f7}.status-waiting{background:#fff5d7;color:#7c5200}.status-being_seen{background:#e5f0ff;color:#0b4c91}.status-sent_back{background:#fbe6e7;color:#8d1419}.status-seen,.status-returned{background:#e4f5ec;color:#11603b}.long-out td{background:#fff4db}.metric-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:18px}.metric{background:white;border:1px solid var(--line);border-radius:14px;padding:16px}.metric b{display:block;font-size:1.75rem;color:var(--blue)}.metric span{font-size:.85rem;color:var(--muted)}.flash{width:min(900px,calc(100% - 28px));margin:14px auto 0;border-radius:10px;padding:11px 14px;font-weight:650}.flash-success{background:#e7f7ee;color:#155e3c}.flash-error{background:#fdebec;color:#8d1419}.flash-info{background:#e9f2fb;color:#184f84}.update-banner{position:sticky;top:0;z-index:50;display:flex;justify-content:center;align-items:center;gap:12px;background:#fff3cd;color:#5e4500;padding:8px 12px;border-bottom:1px solid #ead58a}.update-banner[hidden]{display:none}.footer{display:flex;justify-content:center;gap:14px;align-items:center;color:var(--muted);font-size:.82rem;padding:24px 16px 34px}.muted{color:var(--muted)}.empty{padding:28px;text-align:center;color:var(--muted)}.login-shell{min-height:calc(100vh - 155px);display:grid;place-items:center;padding:28px}.login-card{width:min(430px,100%);background:white;border:1px solid var(--line);border-radius:20px;padding:26px;box-shadow:var(--shadow)}.login-logo{display:block;width:150px;max-height:92px;object-fit:contain;margin:0 auto 15px}.login-card h1{text-align:center;color:var(--blue);margin:0}.login-card>p{text-align:center;color:var(--muted);margin:.5rem 0 1.4rem}.permission-table input[type=checkbox]{width:20px;height:20px}.permission-group td{background:#eef3f9;color:var(--blue);font-weight:800}.badge{display:inline-block;padding:4px 8px;border-radius:999px;background:#edf2f7;color:#475467;font-size:.78rem;font-weight:700}.modal-backdrop{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.45);display:grid;place-items:center;padding:20px}.modal-backdrop[hidden]{display:none}.modal-card{max-width:420px;background:white;border-radius:16px;padding:22px;box-shadow:var(--shadow)}.quick-actions{display:flex;gap:8px;flex-wrap:wrap}.note{padding:12px 14px;border-left:4px solid var(--blue);background:#eff5fb;border-radius:8px;color:#344054}.danger-note{border-left-color:var(--red);background:#fff0f1}.checkbox-line{display:flex;align-items:center;gap:9px}.checkbox-line input{width:18px;height:18px}.kiosk-body{background:#eef3f8}.kiosk-card{width:min(760px,calc(100% - 28px));margin:28px auto;background:white;border-radius:20px;padding:24px;box-shadow:var(--shadow)}
@media(max-width:720px){.brand small{display:none}.brand img{height:42px;width:52px}.top-actions .btn{padding:7px 9px}.page,.page-narrow{width:min(100% - 18px,1180px);margin-top:15px}.hero{align-items:flex-start;flex-direction:column}.form-grid{grid-template-columns:1fr}.field.full,.form-actions{grid-column:1}.card{padding:15px;border-radius:14px}.module-grid{grid-template-columns:1fr}.module-card{min-height:175px}.user-strip{justify-content:flex-start;overflow:auto;white-space:nowrap}.footer{flex-direction:column;gap:6px}.login-shell{padding:16px}.hide-mobile{display:none}}
.notification-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:36px;border-radius:10px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);color:white;font-size:1.05rem}.notification-count{position:absolute;right:-5px;top:-7px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:var(--red);color:white;font-size:.68rem;font-weight:800;display:flex;align-items:center;justify-content:center}.notification-count[hidden]{display:none}.notification-list{padding:0;overflow:hidden}.notification-item{display:flex;gap:12px;padding:15px 18px;border-bottom:1px solid var(--line);color:var(--text)}.notification-item:last-child{border-bottom:0}.notification-item p{margin:4px 0}.notification-unread{background:#f0f6ff}.notification-dot{width:9px;height:9px;flex:0 0 9px;margin-top:7px;border-radius:50%;background:var(--blue)}.request-grid{display:grid;gap:12px}.request-card{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:15px;border:1px solid var(--line);border-radius:12px;background:#f8fafc}.request-card p{margin:4px 0}.incoming-requests{border:2px solid #8bb8e8}.request-pending{background:#fff9e9}.destination-choice{display:flex;flex-wrap:wrap;gap:16px;padding:10px 0}.destination-choice label{display:flex;align-items:center;gap:8px}.destination-choice input{width:18px;height:18px}.status-denied{background:#fdebec;color:#8d1419}.status-requested{background:#fff5d7;color:#7c5200}.google-login-stack{display:grid;gap:9px}.btn-google{background:white;color:#263238;border:1px solid #cfd8e3;box-shadow:0 1px 2px rgba(0,0,0,.05)}.google-g{font-weight:900;color:#4285f4;font-size:1.1rem}.login-divider{display:flex;align-items:center;gap:10px;margin:18px 0;color:var(--muted);font-size:.8rem}.login-divider:before,.login-divider:after{content:"";height:1px;background:var(--line);flex:1}.pending-card{border:2px solid #e6b94d}code{background:#f1f3f6;padding:2px 5px;border-radius:5px}@media(max-width:720px){.request-card{align-items:flex-start;flex-direction:column}.top-actions{gap:5px}.notification-bell{min-width:34px}.top-actions .btn{font-size:.78rem}}

.mobile-policy-gate{position:fixed;inset:0;z-index:99999;background:rgba(0,30,65,.96);display:flex;align-items:center;justify-content:center;padding:20px}.mobile-policy-gate[hidden]{display:none}.mobile-policy-card{width:min(520px,100%);background:#fff;border-radius:22px;padding:28px;box-shadow:0 24px 80px rgba(0,0,0,.35);text-align:center}.mobile-policy-card>img{width:82px;height:82px;border-radius:18px;margin-bottom:8px}.mobile-policy-card h2{margin:8px 0}.mobile-policy-card p{line-height:1.45}.mobile-install-help{text-align:left;background:#f4f7fb;border-radius:14px;padding:16px;margin:16px 0}.mobile-install-help ol{margin-bottom:0;padding-left:22px}.mobile-policy-locked body{overflow:hidden}.mobile-policy-card .btn{width:100%;margin-top:8px}

.status-outbound{background:#fff5d7;color:#7c5200}.status-at_destination{background:#e5f0ff;color:#0b4c91}.status-returning{background:#fbe6e7;color:#8d1419}.status-general,.status-out{background:#edf2f7;color:#475467}
/* v1.3 Discipline + white-label admin */
.status-open,.status-assigned{background:#fff5d7;color:#7c5200}.status-served{background:#e4f5ec;color:#11603b}.status-no_show,.status-escalated{background:#fdebec;color:#8d1419}.status-excused,.status-rescheduled{background:#edf2f7;color:#475467}
.session-cards{display:grid;gap:10px}.session-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#f8fafc;color:var(--text)}.session-card p{margin:4px 0}.session-card small{color:var(--muted)}
.schedule-mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:9px}.schedule-mode-grid label,.weekday-row label{display:flex;align-items:center;gap:7px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}.schedule-mode-grid input,.weekday-row input{width:18px;height:18px}.weekday-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}.date-list{display:grid;gap:8px}.date-list input{max-width:260px}.roster-actions{display:grid;gap:8px;min-width:360px}.reschedule-form select{min-width:260px}
.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}.detail-grid div{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:11px}.detail-grid dt{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:800}.detail-grid dd{margin:5px 0 0;font-weight:650}.event-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.timeline{display:grid;gap:12px}.timeline-item{padding:14px;border-left:4px solid var(--blue);background:#f8fafc;border-radius:8px}.timeline-item p{margin:5px 0 8px}.timeline-item small{display:block;margin-top:7px;color:var(--muted)}
.two-column{display:grid;grid-template-columns:1fr 1fr;gap:18px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.settings-row:last-child{border-bottom:0}.branding-preview{display:flex;align-items:center;gap:18px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#f8fafc}.branding-preview img{width:120px;height:80px;object-fit:contain;background:white;border-radius:10px;padding:6px}.color-field{display:grid;grid-template-columns:58px 1fr;gap:8px}.color-field input[type=color]{height:44px;padding:2px}.brand-sample{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px;padding:16px;border-radius:12px;background:var(--sample-primary);color:white}.brand-sample button{border:0;border-radius:9px;padding:9px 13px;background:var(--sample-accent);color:white;font-weight:800}
@media(max-width:720px){.two-column{grid-template-columns:1fr}.detail-grid{grid-template-columns:1fr}.roster-actions{min-width:0}.reschedule-form select{min-width:0;max-width:100%}.session-card{align-items:flex-start;flex-direction:column}.branding-preview{align-items:flex-start;flex-direction:column}}

/* v1.4.0 Phase A — unified operations shell */
:root{--sidebar-w:248px;--sidebar-collapsed:78px;--workspace-bg:#f4f7fb;--panel-shadow:0 8px 24px rgba(15,35,60,.07);--soft-blue:#eaf3ff;--soft-green:#e9f8ef;--soft-amber:#fff4df;--soft-red:#feebee;--soft-slate:#edf1f6}
.has-app-shell{background:var(--workspace-bg);overflow-x:hidden}.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);transition:grid-template-columns .2s ease}.app-shell.sidebar-collapsed{grid-template-columns:var(--sidebar-collapsed) minmax(0,1fr)}.app-sidebar{position:sticky;top:0;height:100vh;z-index:35;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--blue) 0%,#10243d 100%);color:white;padding:16px 10px 12px;overflow:hidden}.sidebar-brand{display:flex;align-items:center;gap:12px;color:white;padding:4px 8px 18px;min-height:70px}.sidebar-brand img{width:48px;height:48px;object-fit:contain;background:white;border-radius:11px;padding:4px;flex:0 0 auto}.sidebar-brand span{min-width:0;display:flex;flex-direction:column;line-height:1.15}.sidebar-brand strong{font-size:.98rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-brand small{margin-top:5px;opacity:.7;font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-nav{display:flex;flex-direction:column;gap:5px}.sidebar-link{width:100%;display:flex;align-items:center;gap:12px;color:rgba(255,255,255,.86);padding:11px 12px;border-radius:9px;font-size:.9rem;font-weight:650;border:0;background:transparent;text-align:left;cursor:pointer;white-space:nowrap}.sidebar-link:hover,.sidebar-link.active{background:rgba(255,255,255,.13);color:white}.sidebar-link.active{box-shadow:inset 3px 0 0 rgba(255,255,255,.85)}.nav-icon{width:24px;height:24px;display:grid;place-items:center;font-size:1.12rem;flex:0 0 auto}.sidebar-separator{height:1px;background:rgba(255,255,255,.12);margin:9px 9px}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:5px}.sidebar-footer small{opacity:.55;padding:8px 12px;font-size:.7rem;white-space:nowrap}.app-shell.sidebar-collapsed .sidebar-brand span,.app-shell.sidebar-collapsed .sidebar-link>span:not(.nav-icon),.app-shell.sidebar-collapsed .sidebar-footer small{display:none}.app-shell.sidebar-collapsed .sidebar-brand{justify-content:center;padding-inline:0}.app-shell.sidebar-collapsed .sidebar-link{justify-content:center;padding-inline:8px}.app-workspace{min-width:0;display:flex;min-height:100vh;flex-direction:column}.workspace-topbar{height:72px;position:sticky;top:0;z-index:28;display:flex;align-items:center;gap:18px;padding:10px 22px;background:rgba(255,255,255,.96);border-bottom:1px solid #e1e7ef;backdrop-filter:blur(12px)}.global-search{flex:1;max-width:520px;display:flex;align-items:center;gap:9px;border:1px solid #d8e0e9;border-radius:8px;background:#fbfcfe;padding:0 12px;height:42px}.global-search span{font-size:1.25rem;color:#6c7a8e}.global-search input{width:100%;border:0;outline:0;background:transparent;color:var(--text)}.workspace-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.topbar-action{border:1px solid #d6deea;border-radius:8px;background:white;color:#344054;padding:7px 9px;font-weight:700;font-size:.78rem;cursor:pointer}.topbar-bell{position:relative;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:#f5f7fa;color:#344054;font-size:1.35rem}.notification-count{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;display:grid;place-items:center;padding:0 4px;border-radius:999px;background:#e33b42;color:white;font-size:.66rem;font-weight:800;border:2px solid white}.user-chip{display:flex;align-items:center;gap:9px;color:var(--text);padding:3px 5px}.avatar-circle{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#e7edf5;color:#344054;font-weight:800}.user-chip-text{display:flex;flex-direction:column;line-height:1.1}.user-chip-text strong{font-size:.83rem}.user-chip-text small{margin-top:4px;color:var(--muted);font-size:.68rem}.live-clock{padding-left:12px;border-left:1px solid #e2e8f0;text-align:right;display:flex;flex-direction:column;min-width:112px}.live-clock small{font-size:.65rem;color:var(--muted)}.live-clock strong{font-size:1rem}.topbar-signout{font-size:1.2rem;color:#64748b;padding:7px}.mobile-menu-btn{display:none;border:0;background:transparent;font-size:1.35rem;color:var(--blue)}.workspace-content{flex:1;min-width:0}.workspace-content>.flash{width:calc(100% - 44px);margin:14px 22px 0}.workspace-footer{display:flex;gap:14px;justify-content:center;padding:18px 20px 28px;color:var(--muted);font-size:.76rem}.has-app-shell .page{width:100%;max-width:none;margin:0;padding:24px 22px 42px}.has-app-shell .page-narrow{width:min(780px,calc(100% - 44px));margin:24px auto 42px}.has-app-shell .hero,.dashboard-heading{margin-bottom:18px;align-items:center}.dashboard-heading{display:flex;justify-content:space-between;gap:20px}.dashboard-heading h1{font-size:1.85rem;margin:2px 0 5px;color:#142235}.dashboard-heading p{margin:0;color:var(--muted)}.eyebrow{font-size:.72rem!important;text-transform:uppercase;letter-spacing:.11em;font-weight:800;color:var(--blue)!important}.has-app-shell .card,.panel{box-shadow:var(--panel-shadow);border:1px solid #dde5ee;border-radius:12px}.has-app-shell .card{padding:18px}.has-app-shell .hero h1{color:#142235}.has-app-shell table{min-width:680px}.has-app-shell th{background:#f7f9fc;color:#58667b}.has-app-shell .btn{border-radius:7px;min-height:38px;padding:9px 13px}.btn-soft{background:#eef3f8;color:#29445f}.btn-warning{background:#e97d11;color:white}
.summary-grid{display:grid;grid-template-columns:repeat(5,minmax(145px,1fr));gap:10px;margin-bottom:18px}.summary-card{display:flex;align-items:center;gap:12px;min-height:94px;padding:15px 14px;border-radius:10px;border:1px solid transparent}.summary-card .summary-icon{width:37px;height:37px;border-radius:50%;display:grid;place-items:center;font-size:1.15rem;background:rgba(255,255,255,.72);font-weight:800}.summary-card div{display:flex;flex-direction:column;min-width:0}.summary-card strong{font-size:1.45rem;line-height:1;color:#162438}.summary-card b{font-size:.8rem;margin-top:5px;color:#25344a}.summary-card small{font-size:.66rem;color:#6c7788;margin-top:2px}.tone-blue{background:var(--soft-blue);border-color:#d8e9fd}.tone-green{background:var(--soft-green);border-color:#d7efe0}.tone-amber{background:var(--soft-amber);border-color:#f5e4bd}.tone-red{background:var(--soft-red);border-color:#f6d7db}.tone-slate{background:var(--soft-slate);border-color:#dfe5ec}.office-tabs{display:flex;gap:26px;border:1px solid #dde5ee;border-radius:10px;background:white;padding:0 18px;margin-bottom:16px;box-shadow:0 3px 10px rgba(15,35,60,.03);overflow-x:auto}.office-tab{border:0;background:transparent;color:#59677a;font-weight:700;font-size:.8rem;padding:14px 3px 12px;border-bottom:3px solid transparent;white-space:nowrap;cursor:pointer}.office-tab.active{color:#1263d6;border-bottom-color:#1263d6}.office-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(330px,.92fr);gap:14px;align-items:start}.panel{background:white;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 16px;border-bottom:1px solid #e5eaf0}.panel-head h2{margin:0;color:#17263a;font-size:1rem}.panel-head p{margin:4px 0 0;color:var(--muted);font-size:.72rem}.panel-head>a{font-size:.75rem;font-weight:700}.live-dot{font-size:.68rem;color:#5f6e80;white-space:nowrap}.live-dot::first-letter{color:#17a75b}.dashboard-table{border:0;border-radius:0}.dashboard-table table{min-width:780px}.dashboard-table th,.dashboard-table td{padding:11px 10px}.dashboard-table td{font-size:.78rem}.dashboard-table td>small{display:block;margin-top:3px;color:var(--muted);font-size:.67rem}.row-alert{color:#b42318!important;font-weight:750}.row-actions{display:flex;gap:6px;align-items:center}.office-side-stack{display:grid;gap:14px}.mini-tabs{display:flex;gap:7px;padding:10px 12px;border-bottom:1px solid #e8edf2}.mini-tabs span{flex:1;text-align:center;padding:7px 6px;border-radius:6px;background:#f1f5f9;font-size:.68rem;font-weight:700;color:#4e5d70}.mini-list{display:flex;flex-direction:column}.mini-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid #edf0f4}.mini-row:last-child{border-bottom:0}.mini-row>div{display:flex;flex-direction:column;min-width:0}.mini-row strong{font-size:.78rem}.mini-row small{font-size:.67rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.quick-panel{background:linear-gradient(145deg,#f2fff7,#edf9f4)}.quick-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}.quick-action-grid a{display:flex;align-items:center;gap:8px;padding:11px 10px;border:1px solid #d6e8df;border-radius:8px;background:white;color:#29445f;font-size:.72rem;font-weight:750}.quick-action-grid a span{font-size:1rem}.notification-list{display:flex;flex-direction:column}.notification-list a{display:grid;grid-template-columns:64px 1fr;gap:8px;padding:9px 13px;border-bottom:1px solid #edf0f4;color:#38485c;font-size:.71rem}.notification-list a:last-child{border-bottom:0}.notification-list time{color:#657386}.notification-list span{display:flex;flex-direction:column;gap:2px}.notification-list strong{font-size:.72rem;color:#213148}.empty.compact{padding:18px;font-size:.78rem}.office-dashboard .status{font-size:.68rem;padding:4px 7px}.status-outbound{background:#fff0cf;color:#855600}.status-at_destination{background:#eee9ff;color:#553d98}.status-returning{background:#e6f2ff;color:#17548b}.office-dashboard tr.office-filter-hidden{display:none}
.dashboard-home .welcome-row{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px}.dashboard-home .welcome-row h1{margin:0;color:#17263a;font-size:1.9rem}.dashboard-home .welcome-row p{margin:5px 0 0;color:var(--muted)}.dashboard-module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.dashboard-module-card{background:white;border:1px solid #dfe6ee;border-radius:11px;padding:17px;color:var(--text);box-shadow:var(--panel-shadow);display:grid;grid-template-columns:42px 1fr;gap:12px;align-items:start}.dashboard-module-card .module-icon{margin:0;width:42px;height:42px;border-radius:9px;background:#edf4fc;display:grid;place-items:center;font-size:1.2rem}.dashboard-module-card h2{font-size:.92rem;margin:1px 0 5px;color:#17263a}.dashboard-module-card p{font-size:.72rem;margin:0;color:var(--muted);line-height:1.35}.dashboard-section-title{display:flex;justify-content:space-between;align-items:end;margin:20px 0 10px}.dashboard-section-title h2{margin:0;font-size:1rem}.dashboard-section-title p{margin:0;color:var(--muted);font-size:.72rem}
.public-topbar{display:flex;align-items:center;padding:10px clamp(14px,3vw,32px);background:var(--blue);color:white}.public-topbar .brand{color:white}.public-shell .login-shell{min-height:calc(100vh - 120px)}
.sidebar-overlay{display:none}
@media(max-width:1180px){.summary-grid{grid-template-columns:repeat(3,1fr)}.office-layout{grid-template-columns:1fr}.office-side-stack{grid-template-columns:repeat(2,minmax(0,1fr))}.notifications-panel{grid-column:1/-1}.live-clock{display:none}.user-chip-text{display:none}}
@media(max-width:860px){.app-shell,.app-shell.sidebar-collapsed{display:block}.app-sidebar{position:fixed;left:-270px;top:0;width:248px;transition:left .2s ease}.app-shell.mobile-nav-open .app-sidebar{left:0}.sidebar-overlay{position:fixed;inset:0;z-index:33;background:rgba(4,13,25,.48)}.app-shell.mobile-nav-open .sidebar-overlay{display:block}.mobile-menu-btn{display:block}.workspace-topbar{padding:9px 12px;height:62px}.global-search{max-width:none}.workspace-actions{gap:4px}.user-chip,.topbar-signout{display:none}.has-app-shell .page{padding:18px 12px 34px}.workspace-content>.flash{width:calc(100% - 24px);margin-inline:12px}.dashboard-heading{align-items:flex-start;flex-direction:column}.summary-grid{grid-template-columns:repeat(2,1fr)}.office-side-stack{grid-template-columns:1fr}.notifications-panel{grid-column:auto}.sidebar-collapse{display:none}}
@media(max-width:560px){.global-search{height:39px}.workspace-topbar{gap:8px}.topbar-action{display:none}.summary-grid{grid-template-columns:1fr 1fr}.summary-card{padding:11px;min-height:78px}.summary-card .summary-icon{display:none}.summary-card strong{font-size:1.3rem}.office-tabs{padding-inline:10px;gap:18px}.quick-action-grid{grid-template-columns:1fr}.dashboard-home .welcome-row{align-items:flex-start;flex-direction:column}.dashboard-module-grid{grid-template-columns:1fr}.has-app-shell .page-narrow{width:calc(100% - 24px);margin-top:16px}}

/* ===== v1.4 Phase B: module interior redesign ===== */
.section-contextbar{display:flex;align-items:center;gap:18px;min-height:54px;padding:0 22px;background:#fff;border-bottom:1px solid #e4eaf1;box-shadow:0 2px 8px rgba(15,35,60,.025);position:sticky;top:64px;z-index:18}
.section-context-label{display:flex;align-items:center;gap:8px;flex:0 0 auto;color:#1d2c40;font-size:.82rem}.section-context-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:7px;background:#edf4fc;color:var(--blue);font-weight:900}.section-context-nav{display:flex;align-items:stretch;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:none}.section-context-nav::-webkit-scrollbar{display:none}.section-context-link{display:flex;align-items:center;min-height:53px;padding:0 12px;border-bottom:3px solid transparent;color:#64748b;font-size:.76rem;font-weight:750;white-space:nowrap}.section-context-link:hover{color:var(--blue);background:#f8fafc}.section-context-link.active{color:var(--blue);border-bottom-color:var(--blue)}
.context-hallpass .hero,.context-nurse .hero,.context-discipline .hero,.context-admin .hero{padding:2px 0 0;margin-bottom:17px}.context-hallpass .hero h1,.context-nurse .hero h1,.context-discipline .hero h1,.context-admin .hero h1{font-size:1.65rem;color:#162438}.context-hallpass .hero p,.context-nurse .hero p,.context-discipline .hero p,.context-admin .hero p{font-size:.82rem}.context-hallpass .quick-actions,.context-nurse .quick-actions,.context-discipline .quick-actions,.context-admin .quick-actions{gap:7px}
.context-hallpass .card,.context-nurse .card,.context-discipline .card,.context-admin .card{border-radius:11px;box-shadow:0 5px 18px rgba(15,35,60,.055);border-color:#e0e7ef}.context-hallpass .card>h2,.context-nurse .card>h2,.context-discipline .card>h2,.context-admin .card>h2{font-size:1rem;color:#1a2b40;margin-bottom:13px}.context-hallpass .card>h2 .badge,.context-nurse .card>h2 .badge,.context-discipline .card>h2 .badge{vertical-align:2px;margin-left:5px}
.context-hallpass .metric-row,.context-nurse .metric-row,.context-discipline .metric-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:10px;margin:0 0 16px}.context-hallpass .metric,.context-nurse .metric,.context-discipline .metric{position:relative;overflow:hidden;border:1px solid #dee7f0;background:#fff;border-radius:10px;padding:16px 17px;box-shadow:0 4px 14px rgba(15,35,60,.045);min-height:88px}.context-hallpass .metric::before,.context-nurse .metric::before,.context-discipline .metric::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--blue)}.context-nurse .metric::before{background:var(--green)}.context-discipline .metric::before{background:var(--red)}.context-hallpass .metric b,.context-nurse .metric b,.context-discipline .metric b{font-size:1.55rem;color:#17263a}.context-hallpass .metric span,.context-nurse .metric span,.context-discipline .metric span{font-size:.72rem;color:#67758a;margin-top:5px}
.context-hallpass .table-wrap,.context-nurse .table-wrap,.context-discipline .table-wrap,.context-admin .table-wrap{border:1px solid #e1e7ee;border-radius:9px}.context-hallpass table,.context-nurse table,.context-discipline table,.context-admin table{border:0}.context-hallpass th,.context-nurse th,.context-discipline th,.context-admin th{background:#f6f8fb;color:#56657a;text-transform:uppercase;letter-spacing:.035em;font-size:.65rem;padding:10px 11px}.context-hallpass td,.context-nurse td,.context-discipline td,.context-admin td{padding:11px;font-size:.76rem;border-color:#edf1f5;vertical-align:middle}.context-hallpass tbody tr:hover,.context-nurse tbody tr:hover,.context-discipline tbody tr:hover,.context-admin tbody tr:hover{background:#fbfdff}
.context-hallpass .status,.context-nurse .status,.context-discipline .status,.context-admin .status{font-size:.65rem;font-weight:800;letter-spacing:.01em;padding:4px 7px;border-radius:999px}
.context-hallpass .request-grid,.context-nurse .request-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}.context-hallpass .request-card,.context-nurse .request-card{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px;border:1px solid #e2e8f0;border-radius:9px;background:#fbfdff}.context-hallpass .request-card strong,.context-nurse .request-card strong{font-size:.87rem;color:#17263a}.context-hallpass .request-card p,.context-nurse .request-card p{font-size:.75rem;margin:4px 0;color:#475569}.context-hallpass .incoming-requests,.context-nurse .incoming-requests{border-left:4px solid #d89a22}
.context-hallpass .long-out{background:#fff6f6}.context-hallpass .long-out:hover{background:#fff0f0}

/* Hall Pass */
.context-hallpass .page-narrow>.card:first-child{padding:0;overflow:hidden}.context-hallpass .page-narrow>.card:first-child>h1{padding:20px 22px 0;margin-bottom:3px;font-size:1.45rem;color:#17263a}.context-hallpass .page-narrow>.card:first-child>p{padding:0 22px 16px;margin:0;border-bottom:1px solid #e8edf2}.context-hallpass .page-narrow>.card:first-child>form{padding:20px 22px}.context-hallpass .form-grid{gap:14px}.context-hallpass .field label{font-size:.72rem;color:#445268;font-weight:800}.context-hallpass .field input,.context-hallpass .field select,.context-hallpass .field textarea{border-color:#d9e1ea;border-radius:7px;background:#fff}.context-hallpass .field input:focus,.context-hallpass .field select:focus,.context-hallpass .field textarea:focus{border-color:#8bb8e8;box-shadow:0 0 0 3px rgba(18,99,214,.08);outline:none}

/* Nurse / Health */
.context-nurse .metric:nth-child(1){background:#f6fff9}.context-nurse .metric:nth-child(2){background:#f5f9ff}.context-nurse .metric:nth-child(3){background:#fff9f2}.context-nurse tr[data-status="waiting"] td:first-child{border-left:3px solid #37a269}.context-nurse tr[data-status="being_seen"] td:first-child{border-left:3px solid #287ec7}.context-nurse tr[data-status="sent_back"] td:first-child{border-left:3px solid #de8b24}.context-nurse .nurse-action{min-width:88px}.context-nurse .card form.form-grid{background:#fbfcfe;border:1px solid #edf1f5;border-radius:8px;padding:14px}

/* Discipline */
.context-discipline .session-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px}.context-discipline .session-card{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 15px;border:1px solid #e1e7ef;border-radius:9px;background:#fbfcfe;color:#25364c}.context-discipline .session-card:hover{border-color:#bac9da;background:#fff;box-shadow:0 5px 14px rgba(15,35,60,.06)}.context-discipline .session-card strong{font-size:.82rem}.context-discipline .session-card p{margin:4px 0 2px;font-size:.72rem}.context-discipline .session-card small{font-size:.67rem;color:#69778a}.context-discipline .schedule-mode-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0 16px}.context-discipline .schedule-mode-grid label{display:flex;align-items:center;gap:8px;padding:12px;border:1px solid #dde5ee;border-radius:8px;background:#fafbfd;font-size:.73rem;font-weight:750;cursor:pointer}.context-discipline .schedule-panel{padding:15px;border:1px solid #e4eaf1;border-radius:9px;background:#fbfcfe;margin-bottom:13px}.context-discipline .roster-actions{display:grid;gap:7px}.context-discipline .reschedule-form select{min-width:220px}.context-discipline .field label{font-size:.72rem;color:#445268;font-weight:800}.context-discipline .field input,.context-discipline .field select,.context-discipline .field textarea{border-radius:7px;border-color:#d9e1ea}.context-discipline .field input:focus,.context-discipline .field select:focus,.context-discipline .field textarea:focus{border-color:#8bb8e8;box-shadow:0 0 0 3px rgba(18,99,214,.08);outline:none}.context-discipline .page-narrow form>.card{position:relative}.context-discipline .page-narrow form>.card>h2{padding-bottom:10px;border-bottom:1px solid #edf1f5}.context-discipline .page-narrow form>.card:nth-of-type(1)>h2::before{content:"1"}.context-discipline .page-narrow form>.card:nth-of-type(2)>h2::before{content:"2"}.context-discipline .page-narrow form>.card:nth-of-type(3)>h2::before{content:"3"}.context-discipline .page-narrow form>.card>h2::before{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:8px;border-radius:50%;background:#edf3fa;color:var(--blue);font-size:.7rem;vertical-align:1px}

/* Admin */
.context-admin .module-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:11px}.context-admin .module-card{min-height:155px;border-radius:10px;box-shadow:0 5px 18px rgba(15,35,60,.055);padding:17px 18px;border-color:#e0e7ef}.context-admin .module-card:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(15,35,60,.08)}.context-admin .module-card .module-icon{font-size:1.35rem;margin-bottom:9px}.context-admin .module-card h2{font-size:.93rem;color:#18283d;margin-bottom:5px}.context-admin .module-card p{font-size:.72rem;line-height:1.4}.context-admin .module-card .module-link{margin-top:11px;font-size:.7rem;color:var(--blue)}
.context-admin .permission-table th:not(:first-child),.context-admin .permission-table td:not(:first-child){min-width:105px;text-align:center}.context-admin .permission-table input[type=checkbox]{width:18px;height:18px;accent-color:var(--blue)}.context-admin .permission-group td{background:#eaf0f6!important;color:#31465e!important;text-transform:uppercase;font-size:.64rem;font-weight:900;letter-spacing:.08em}.context-admin .branding-preview{display:flex;align-items:center;gap:16px;padding:14px;border:1px dashed #ccd6e2;border-radius:9px;background:#fafbfd}.context-admin .branding-preview img{width:96px;height:68px;object-fit:contain;border-radius:8px;background:#fff;border:1px solid #e3e8ef;padding:6px}.context-admin .color-field{display:flex;gap:8px}.context-admin .color-field input[type=color]{width:48px;padding:2px}.context-admin .brand-sample{margin-top:14px;padding:16px;border-radius:9px;background:var(--sample-primary);color:white;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.context-admin .brand-sample span{opacity:.82}.context-admin .brand-sample button{margin-left:auto;border:0;border-radius:6px;padding:8px 12px;background:var(--sample-accent);color:#fff;font-weight:800}.context-admin .checkbox-line{gap:9px}.context-admin .checkbox-line input[type=checkbox]{accent-color:var(--blue)}
.context-admin .admin-settings-index,.context-admin .settings-section{scroll-margin-top:130px}.context-admin code{padding:2px 5px;background:#edf2f7;border-radius:5px;font-size:.75em}.context-admin .note{border-radius:8px}

/* Consistent module form/action treatments */
.context-hallpass .form-actions,.context-nurse .form-actions,.context-discipline .form-actions,.context-admin .form-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.context-hallpass .btn,.context-nurse .btn,.context-discipline .btn,.context-admin .btn{font-size:.74rem;font-weight:800}.context-hallpass .btn-small,.context-nurse .btn-small,.context-discipline .btn-small,.context-admin .btn-small{font-size:.66rem;min-height:31px;padding:6px 9px}.context-hallpass .empty,.context-nurse .empty,.context-discipline .empty,.context-admin .empty{border:1px dashed #d5dee8;border-radius:9px;background:#fafbfd;padding:24px;text-align:center;color:#64748b}

@media(max-width:860px){.section-contextbar{top:62px;padding:0 12px;gap:9px}.section-context-label strong{display:none}.section-context-link{padding-inline:10px}.context-hallpass .hero,.context-nurse .hero,.context-discipline .hero,.context-admin .hero{align-items:flex-start}.context-discipline .schedule-mode-grid{grid-template-columns:1fr 1fr}.context-admin .permission-table th:not(:first-child),.context-admin .permission-table td:not(:first-child){min-width:90px}}
@media(max-width:560px){.section-contextbar{min-height:48px}.section-context-link{min-height:47px;font-size:.71rem}.context-hallpass .hero,.context-nurse .hero,.context-discipline .hero,.context-admin .hero{gap:10px}.context-hallpass .hero .quick-actions,.context-nurse .hero .quick-actions,.context-discipline .hero .quick-actions,.context-admin .hero .quick-actions{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.context-hallpass .metric-row,.context-nurse .metric-row,.context-discipline .metric-row{grid-template-columns:1fr 1fr}.context-hallpass .request-card,.context-nurse .request-card{align-items:flex-start;flex-direction:column}.context-discipline .schedule-mode-grid{grid-template-columns:1fr}.context-admin .branding-preview{align-items:flex-start;flex-direction:column}.context-admin .brand-sample button{margin-left:0}.context-discipline .reschedule-form select{min-width:180px;max-width:100%}}
.context-hallpass .page-narrow>.hero+.card{padding:20px 22px}.context-hallpass .page-narrow>.hero+.card>h2{padding-bottom:10px;border-bottom:1px solid #edf1f5}.context-hallpass .page-narrow>.hero+.card>p{margin-top:-4px;margin-bottom:16px}.context-hallpass .page-narrow>.hero+.card>form{padding:0}
.context-admin .metric-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:0 0 16px}.context-admin .metric{position:relative;overflow:hidden;border:1px solid #dee7f0;background:#fff;border-radius:10px;padding:16px 17px;box-shadow:0 4px 14px rgba(15,35,60,.045);min-height:82px}.context-admin .metric::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--blue)}.context-admin .metric b{display:block;font-size:1.45rem;color:#17263a}.context-admin .metric span{display:block;font-size:.72rem;color:#67758a;margin-top:5px}.context-admin .pending-card{border-left:4px solid #d89a22}

/* ===== v1.4.0 Phase C — installed PWA, mobile, accessibility & final polish ===== */
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{min-height:100dvh}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid color-mix(in srgb,var(--blue) 40%,#fff);outline-offset:2px}
.btn:disabled,.topbar-action:disabled{cursor:not-allowed;opacity:.58;filter:none}
.app-sidebar{padding-top:calc(16px + env(safe-area-inset-top));padding-left:calc(10px + env(safe-area-inset-left));padding-bottom:calc(12px + env(safe-area-inset-bottom))}
.workspace-topbar{padding-top:calc(10px + env(safe-area-inset-top));padding-right:calc(22px + env(safe-area-inset-right))}
.workspace-footer{padding-bottom:calc(28px + env(safe-area-inset-bottom))}
.public-topbar{padding-top:calc(10px + env(safe-area-inset-top));padding-left:calc(clamp(14px,3vw,32px) + env(safe-area-inset-left));padding-right:calc(clamp(14px,3vw,32px) + env(safe-area-inset-right))}
.mobile-policy-gate{padding-top:calc(20px + env(safe-area-inset-top));padding-right:calc(20px + env(safe-area-inset-right));padding-bottom:calc(20px + env(safe-area-inset-bottom));padding-left:calc(20px + env(safe-area-inset-left));overflow:auto}
.mobile-policy-card{max-height:calc(100dvh - 40px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto}
.mobile-policy-footnote{margin-top:12px;font-size:.8rem}

/* Update and connectivity notices are floating so sticky navigation never jumps. */
.update-banner,.network-banner{position:fixed;left:50%;transform:translateX(-50%);z-index:100000;width:min(620px,calc(100% - 24px));border-radius:12px;box-shadow:0 12px 34px rgba(15,35,60,.18);padding:10px 12px}
.update-banner{top:calc(12px + env(safe-area-inset-top));border:1px solid #ead58a;justify-content:space-between;background:#fff8dc}
.network-banner{bottom:calc(12px + env(safe-area-inset-bottom));display:flex;justify-content:center;background:#a51419;color:#fff;border:1px solid rgba(255,255,255,.24);font-weight:750;font-size:.82rem;text-align:center}
.network-banner.is-online{background:#16794b}
.network-banner[hidden]{display:none}
.update-banner.is-applying #applyUpdate{pointer-events:none;opacity:.7}

/* Smoother app entry without making operational screens feel animated. */
.workspace-content>.page,.workspace-content>.page-narrow,.workspace-content>.card{animation:tvops-enter .16s ease-out both}
@keyframes tvops-enter{from{opacity:.72;transform:translateY(3px)}to{opacity:1;transform:none}}

/* Dense operational tables stay usable with touch and keyboard. */
.table-wrap{position:relative;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}
.table-wrap th{position:sticky;top:0;z-index:2}
.table-scroll-hint{display:none;align-items:center;gap:6px;margin:7px 2px 0;color:#6b7788;font-size:.71rem;font-weight:700}
.table-scroll-hint::before{content:"↔";font-size:.9rem;color:var(--blue)}
.table-wrap.is-scrollable+.table-scroll-hint{display:flex}
.row-actions{flex-wrap:wrap}

/* Touch-friendly controls, but retain compact desktop density. */
@media (pointer:coarse){.btn,.topbar-action,.notification-bell,.mobile-menu-btn,.section-context-link,.sidebar-link{min-height:44px}.checkbox-line input,.permission-table input[type=checkbox],.schedule-mode-grid input,.weekday-row input{min-width:22px;min-height:22px}.field input,.field select,.field textarea,.search-input{min-height:44px}}

@media(max-width:860px){
  .workspace-topbar{height:calc(62px + env(safe-area-inset-top));padding-top:calc(9px + env(safe-area-inset-top));padding-left:calc(12px + env(safe-area-inset-left));padding-right:calc(12px + env(safe-area-inset-right))}
  .section-contextbar{top:calc(62px + env(safe-area-inset-top))}
  .app-sidebar{width:min(84vw,288px);left:min(-86vw,-290px)}
  .app-shell.mobile-nav-open .app-sidebar{left:0}
  .mobile-menu-btn{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:8px}
  .global-search{min-width:0}
  .workspace-actions{flex:0 0 auto}
  .topbar-bell{width:42px;height:42px}
  .has-app-shell .page{padding-left:calc(12px + env(safe-area-inset-left));padding-right:calc(12px + env(safe-area-inset-right));padding-bottom:calc(34px + env(safe-area-inset-bottom))}
  .workspace-content>.flash{margin-left:calc(12px + env(safe-area-inset-left));margin-right:calc(12px + env(safe-area-inset-right));width:auto}
  .section-context-nav{scroll-snap-type:x proximity}.section-context-link{scroll-snap-align:start}
}

@media(max-width:640px){
  /* Prevent iOS form-focus zoom and make forms thumb-friendly. */
  .field input,.field select,.field textarea,.search-input,.global-search input{font-size:16px}
  .form-actions{position:relative;gap:8px}.form-actions>.btn{flex:1 1 140px}
  .toolbar{align-items:stretch}.toolbar-group{width:100%}.toolbar-group>.btn,.toolbar-group>form{flex:1 1 auto}
  .card{overflow-wrap:anywhere}
  .table-wrap{border-radius:9px}
  .table-wrap table{min-width:660px}
  .context-admin .permission-table{min-width:780px}
  .metric-row,.context-hallpass .metric-row,.context-nurse .metric-row,.context-discipline .metric-row,.context-admin .metric-row{gap:8px}
  .metric,.context-hallpass .metric,.context-nurse .metric,.context-discipline .metric,.context-admin .metric{padding:13px 14px;min-height:78px}
  .request-card .quick-actions,.session-card .quick-actions{width:100%}.request-card .quick-actions>.btn,.session-card .quick-actions>.btn{flex:1 1 120px}
  .update-banner{align-items:center;gap:9px;top:calc(8px + env(safe-area-inset-top));font-size:.78rem}.update-banner .btn{white-space:nowrap}
  .network-banner{bottom:calc(8px + env(safe-area-inset-bottom));font-size:.76rem}
  .mobile-policy-card{padding:22px 18px;border-radius:18px}.mobile-install-help{padding:13px}.mobile-install-help ol{padding-left:20px}.mobile-policy-card>img{width:68px;height:68px}
  .workspace-footer{flex-direction:column;gap:4px;text-align:center}
}

@media(max-width:430px){
  .global-search{padding-inline:9px}.global-search span{display:none}
  .summary-grid,.context-hallpass .metric-row,.context-nurse .metric-row,.context-discipline .metric-row{grid-template-columns:1fr 1fr}
  .summary-card{min-width:0}.summary-card span,.metric span{line-height:1.2}
  .section-contextbar{padding-inline:8px}.section-context-label{display:none}.section-context-nav{width:100%}.section-context-link{padding-inline:11px}
  .has-app-shell .page-narrow{width:auto;margin-left:12px;margin-right:12px}
}

@media(display-mode:standalone){
  body{user-select:none;-webkit-user-select:none}
  input,textarea,[contenteditable="true"]{user-select:text;-webkit-user-select:text}
  .public-shell .public-topbar{padding-top:calc(10px + env(safe-area-inset-top))}
}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* v1.4.1 desktop PWA install recovery */
.public-topbar{justify-content:space-between;gap:16px}.public-install-btn{flex:0 0 auto}.install-help-card{max-width:520px}.install-help-card ol{padding-left:1.25rem;line-height:1.55}.install-help-card li+li{margin-top:.35rem}@media(max-width:560px){.public-install-btn{display:none}}


/* ===== v1.5.0 Time Clock ===== */
.context-timeclock .hero{padding:2px 0 0;margin-bottom:17px}.context-timeclock .hero h1{font-size:1.65rem;color:#162438}.context-timeclock .hero p{font-size:.82rem}
.context-timeclock .card{border-radius:11px;box-shadow:0 5px 18px rgba(15,35,60,.055);border-color:#e0e7ef}.context-timeclock .card>h2{font-size:1rem;color:#1a2b40;margin-bottom:13px}
.context-timeclock .table-wrap{border:1px solid #e1e7ee;border-radius:9px}.context-timeclock table{border:0}.context-timeclock th{background:#f6f8fb;color:#56657a;text-transform:uppercase;letter-spacing:.035em;font-size:.65rem;padding:10px 11px}.context-timeclock td{padding:11px;font-size:.76rem;border-color:#edf1f5;vertical-align:middle}.context-timeclock tbody tr:hover{background:#fbfdff}
.context-timeclock .metric-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:0 0 16px}.context-timeclock .metric{position:relative;overflow:hidden;border:1px solid #dee7f0;background:#fff;border-radius:10px;padding:16px 17px;box-shadow:0 4px 14px rgba(15,35,60,.045);min-height:82px}.context-timeclock .metric::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--blue)}.context-timeclock .metric b{display:block;font-size:1.45rem;color:#17263a}.context-timeclock .metric span{display:block;font-size:.72rem;color:#67758a;margin-top:5px}
.tc-status-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:16px;margin-bottom:16px}.tc-punch-card{position:relative;overflow:hidden}.tc-punch-card::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:#94a3b8}.tc-punch-card.is-clocked::before{background:#16a05d}.tc-punch-state{display:flex;gap:12px;align-items:center;margin-bottom:16px}.tc-state-dot{width:14px;height:14px;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 5px #eef2f6}.is-clocked .tc-state-dot{background:#18a561;box-shadow:0 0 0 5px #e4f7ed}.tc-punch-state small{display:block;color:#6a788b;font-weight:850;font-size:.67rem;letter-spacing:.08em}.tc-punch-state h2{margin:3px 0 0;font-size:1.25rem}.tc-live-time{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:14px;border:1px solid #e1e7ef;border-radius:9px;background:#fafcfe;margin-bottom:14px}.tc-live-time span{color:#68768a;font-size:.78rem}.tc-live-time strong{font-size:1.6rem;color:#14253a}.tc-punch-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tc-punch-actions form{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.tc-switch-form select{min-width:170px}.tc-clockin-form{max-width:480px}.tc-presence-message{display:block;font-size:.7rem;font-weight:750;color:#69778a;min-height:1em}.tc-presence-message.is-working{color:#9a6700}.tc-presence-message.is-ok{color:#087443}.tc-presence-message.is-error{color:#b42318;max-width:300px}.tc-week-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0 14px}.tc-week-metrics>div{background:#f7f9fc;border:1px solid #e3e9ef;border-radius:9px;padding:12px}.tc-week-metrics strong{display:block;font-size:1.3rem;color:#182a40}.tc-week-metrics span{display:block;color:#6a788b;font-size:.69rem;margin-top:4px}.tc-week-metrics .tc-ot{background:#fff7e5;border-color:#f2d494}.tc-job-summary{display:grid;gap:7px;margin-top:12px}.tc-job-summary>div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #edf1f5;font-size:.77rem}.tc-presence-card{display:flex;justify-content:space-between;align-items:center;gap:14px}.tc-presence-pill{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:9px;background:#f2f5f8;border:1px solid #e0e6ed}.tc-presence-pill.ok{background:#ecf9f2;border-color:#bfe7cf;color:#116c43}.tc-presence-pill>span{font-size:1.2rem}.tc-presence-pill strong,.tc-presence-pill small{display:block}.tc-presence-pill small{font-size:.66rem;margin-top:2px;color:#68768a}
.card-heading-row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}.card-heading-row h2{margin:0 0 4px}.tc-job-breakdown{display:grid;gap:8px}.tc-job-breakdown>div{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:18px;align-items:center;border-bottom:1px solid #edf1f5;padding:10px 0}.tc-job-breakdown small{display:block;color:#6a788b;margin-top:2px}.tc-approval-actions{display:flex;gap:6px;align-items:flex-start;flex-wrap:wrap}.tc-approval-actions details{position:relative}.tc-approval-actions summary{list-style:none;cursor:pointer}.tc-approval-actions summary::-webkit-details-marker{display:none}.tc-reject-form{position:absolute;z-index:20;right:0;top:36px;min-width:280px;padding:10px;background:#fff;border:1px solid #e0e6ed;border-radius:9px;box-shadow:0 12px 30px rgba(15,35,60,.16);display:flex;gap:7px}.tc-reject-form input{min-width:170px}.tc-admin-jumps{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 16px}.tc-admin-jumps a{padding:8px 10px;border:1px solid #dce5ee;border-radius:999px;background:#fff;font-size:.72rem;font-weight:800;color:#2c4666}.tc-admin-jumps a:hover{background:#f3f7fb}.tc-assignment-create{display:grid;grid-template-columns:1.2fr 1fr .6fr 1.2fr auto auto;gap:10px;align-items:end;margin-bottom:16px}.tc-location-create,.tc-location-row{display:grid;grid-template-columns:1fr 1.5fr .75fr .75fr .7fr auto auto;gap:10px;align-items:end;padding:12px;border:1px solid #e1e7ee;border-radius:10px;margin-bottom:10px;background:#fbfcfe}.tc-location-delete{display:flex;justify-content:flex-end;margin:-4px 4px 12px}
.status-green{background:#e7f7ef!important;color:#126a43!important}.status-amber{background:#fff4da!important;color:#8a6111!important}.status-red{background:#fdecec!important;color:#a51d26!important}

@media(max-width:1000px){.tc-status-grid{grid-template-columns:1fr}.tc-assignment-create{grid-template-columns:1fr 1fr 1fr}.tc-location-create,.tc-location-row{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:640px){.context-timeclock .metric-row{grid-template-columns:1fr 1fr}.tc-week-metrics{grid-template-columns:1fr 1fr 1fr}.tc-punch-actions,.tc-punch-actions form{width:100%}.tc-punch-actions form .btn{flex:1}.tc-switch-form select{min-width:0;flex:1}.tc-presence-card{align-items:flex-start;flex-direction:column}.tc-presence-pill{width:100%}.card-heading-row{flex-direction:column}.tc-job-breakdown>div{grid-template-columns:1fr auto}.tc-job-breakdown>div>b{grid-column:2}.tc-assignment-create,.tc-location-create,.tc-location-row{grid-template-columns:1fr}.tc-reject-form{position:fixed;left:12px;right:12px;top:auto;bottom:calc(12px + env(safe-area-inset-bottom));min-width:0}.context-timeclock .table-wrap table{min-width:720px}}

/* v1.6.0 bug reporting */
.bug-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.82fr);gap:20px;align-items:start}.bug-report-list,.admin-bug-list{display:grid;gap:14px}.bug-report-item{border:1px solid #dde5ee;border-radius:10px;padding:15px;background:#fbfcfe}.bug-report-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.bug-report-head>div:first-child{min-width:0}.bug-report-head strong,.bug-report-head h2{display:block;margin:0 0 5px}.bug-report-head small{display:block}.bug-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.badge-danger{background:#fee4e2!important;color:#b42318!important}.badge-warning{background:#fff3d6!important;color:#9a6700!important}.badge-info{background:#e6f0ff!important;color:#175cd3!important}.badge-success{background:#dcfae6!important;color:#067647!important}.badge-muted{background:#eef2f6!important;color:#475467!important}.filter-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:16px 0}.filter-tabs a{padding:8px 12px;border:1px solid #d8e0e9;background:white;border-radius:999px;color:#475467;font-size:.82rem;font-weight:700}.filter-tabs a.active{background:var(--blue);border-color:var(--blue);color:white}.bug-admin-card{scroll-margin-top:100px}.bug-focus{outline:3px solid color-mix(in srgb,var(--blue) 24%,transparent)}.bug-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;margin:14px 0}.bug-detail-grid h3{font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;color:#667085;margin:14px 0 5px}.bug-meta{background:#f7f9fc;border:1px solid #e1e7ef;border-radius:9px;padding:13px}.bug-meta dl{margin:0 0 12px}.bug-meta dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:#667085;font-weight:800;margin-top:9px}.bug-meta dd{margin:2px 0 0;overflow-wrap:anywhere}.ua-text{font-size:.75rem;color:#667085}.bug-admin-form{display:grid;grid-template-columns:220px 180px minmax(0,1fr);gap:12px;align-items:end;border-top:1px solid #e3e8ef;padding-top:14px}.bug-admin-form .field.full{grid-column:1/-1}.required{color:#b42318}.sidebar-link .nav-icon{line-height:1}
@media(max-width:980px){.bug-layout,.bug-detail-grid{grid-template-columns:1fr}.bug-admin-form{grid-template-columns:1fr 1fr}.bug-admin-form .field.full,.bug-admin-form .form-actions{grid-column:1/-1}}
@media(max-width:640px){.bug-report-head{flex-direction:column}.bug-badges{justify-content:flex-start}.bug-admin-form{grid-template-columns:1fr}}


/* v1.7.0 diagnostics + announcements */
.floating-bug-button{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:44;display:inline-flex;align-items:center;gap:7px;padding:9px 12px;border-radius:999px;background:#172033;color:#fff;box-shadow:0 8px 24px rgba(15,23,42,.22);font-size:.78rem;font-weight:800;border:1px solid rgba(255,255,255,.15)}.floating-bug-button:hover{color:#fff;transform:translateY(-1px)}
.system-emergency-banner{position:relative;z-index:46;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;background:#a10f1b;color:white;border-bottom:3px solid #6f0811;padding:12px clamp(14px,3vw,30px);box-shadow:0 4px 18px rgba(105,0,10,.22)}.system-emergency-icon{font-size:1.6rem}.system-emergency-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.system-emergency-copy strong{font-size:1.08rem}.system-emergency-copy span{line-height:1.35}.system-emergency-copy small{opacity:.85;margin-top:2px}.system-emergency-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.system-emergency-actions form{margin:0}.emergency-acknowledged{font-size:.8rem;font-weight:800;background:rgba(255,255,255,.16);padding:7px 10px;border-radius:999px}
.announcement-list,.announcement-admin-list{display:grid;gap:14px}.announcement-card,.announcement-admin-item{position:relative;border-left:5px solid #8aa0b8}.announcement-admin-item{padding:16px;border:1px solid #dfe6ee;border-left-width:5px;border-radius:11px;background:#fff}.announcement-regular{border-left-color:#53789e}.announcement-update{border-left-color:#175cd3}.announcement-warning{border-left-color:#d97706}.announcement-emergency{border-left-color:#b42318;background:linear-gradient(90deg,#fff5f5 0,#fff 180px)}.announcement-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.announcement-head h2,.announcement-head h3{margin:7px 0 3px}.announcement-body{font-size:1rem;line-height:1.5;margin:12px 0}.announcement-ack{margin-top:14px}.announcement-focus{outline:3px solid color-mix(in srgb,var(--blue) 24%,transparent);scroll-margin-top:120px}.ack-meter{display:grid;grid-template-columns:auto 1fr;gap:2px 9px;align-items:center;margin:12px 0}.ack-meter strong{font-size:1rem}.ack-meter span{font-size:.76rem;color:var(--muted)}.ack-meter progress{grid-column:1/-1;width:100%;height:8px}.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:9px;padding:10px;border:1px solid #dce3ec;border-radius:10px;background:#fafbfd}.inline-form{display:inline-flex}.bug-diagnostics{margin:12px 0}.bug-diagnostics summary{cursor:pointer;font-weight:800;color:var(--blue)}.bug-diagnostics pre{max-height:320px;overflow:auto;background:#0f172a;color:#d8e3f0;padding:12px;border-radius:8px;font-size:.68rem;white-space:pre-wrap;overflow-wrap:anywhere}.bug-meta code{overflow-wrap:anywhere}
@media(max-width:720px){.system-emergency-banner{grid-template-columns:auto 1fr}.system-emergency-actions{grid-column:1/-1}.floating-bug-button span{display:none}.floating-bug-button{right:12px;bottom:calc(12px + env(safe-area-inset-bottom));width:44px;height:44px;padding:0;justify-content:center;font-size:1.1rem}.announcement-head{flex-direction:column}.choice-grid{grid-template-columns:1fr}}
