:root {
  --navy: #0b3154;
  --navy-2: #144b74;
  --blue: #1b78b4;
  --teal: #0d8b86;
  --gold: #f2b134;
  --cream: #f7f4ec;
  --ink: #1d2733;
  --muted: #64748b;
  --line: #dbe3ea;
  --card: #ffffff;
  --bg: #f3f6f8;
  --success: #16834f;
  --danger: #c83b44;
  --warning: #b26900;
  --purple: #7257b8;
  --shadow: 0 12px 30px rgba(19, 48, 74, 0.08);
  --radius: 18px;
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; font-family: Inter, system-ui, sans-serif; color: var(--ink); background: var(--bg); }
body { display: flex; }
button, select, input, textarea { font: inherit; }
button { cursor: pointer; }
.hidden { display: none !important; }
.mobile-only { display: none; }

.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  width: 286px;
  background: linear-gradient(180deg, #092b4b 0%, #0c3c60 100%);
  color: #fff;
  display: flex;
  flex-direction: column;
  padding: 24px 18px;
  z-index: 40;
}
.brand-wrap { display: flex; gap: 12px; align-items: center; padding: 0 6px 20px; }
.brand-mark { width: 46px; height: 46px; border-radius: 14px; display: block; flex: none; box-shadow: 0 5px 16px rgba(0,0,0,.14); }
.brand { font-size: 22px; font-weight: 800; letter-spacing: -0.04em; }
.brand-in { color: var(--navy); }
.brand-place { color: #2faa43; }
.sidebar-wordmark .brand-in { color: #fff; }
.brand-sub { font-size: 10px; opacity: .72; line-height: 1.35; max-width: 170px; }
.school-chip { margin: 4px 0 20px; display: flex; align-items: center; gap: 10px; padding: 12px; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.12); border-radius: 14px; }
.school-chip strong, .school-chip small { display: block; }
.school-chip strong { font-size: 12px; }
.school-chip small { margin-top: 3px; font-size: 10px; opacity: .68; }
.school-dot { width: 9px; height: 9px; border-radius: 50%; background: #5be0a3; box-shadow: 0 0 0 4px rgba(91,224,163,.12); }
.nav { display: grid; gap: 6px; overflow: auto; }
.nav button { display: flex; width: 100%; gap: 12px; align-items: center; padding: 12px 14px; border: 0; border-radius: 12px; background: transparent; color: rgba(255,255,255,.76); text-align: left; font-weight: 600; }
.nav button:hover, .nav button.active { background: rgba(255,255,255,.11); color: white; }
.nav .nav-icon { width: 24px; text-align: center; }
.sidebar-footer { margin-top: auto; display: grid; gap: 10px; padding: 16px 6px 0; color: rgba(255,255,255,.55); }

.app-shell { margin-left: 286px; min-height: 100vh; width: calc(100% - 286px); }
.topbar { height: 88px; display: flex; align-items: center; justify-content: space-between; padding: 0 30px; background: rgba(255,255,255,.93); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 30; backdrop-filter: blur(10px); }
.topbar h1 { margin: 0; font-size: 24px; letter-spacing: -.03em; }
.topbar p { margin: 6px 0 0; color: var(--muted); font-size: 13px; }
.top-actions { display: flex; align-items: center; gap: 12px; }
.role-switcher { display: flex; align-items: center; gap: 9px; background: var(--bg); border: 1px solid var(--line); border-radius: 12px; padding: 6px 8px 6px 12px; }
.role-switcher label { font-size: 11px; color: var(--muted); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.role-switcher select { border: 0; background: transparent; font-weight: 700; color: var(--navy); outline: none; }
.icon-btn { border: 1px solid var(--line); background: white; min-width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; color: var(--ink); }
.notification-btn { position: relative; }
.badge { position: absolute; right: -5px; top: -6px; min-width: 21px; height: 21px; padding: 0 5px; border-radius: 999px; display: grid; place-items: center; background: var(--danger); color: #fff; font-size: 10px; font-weight: 800; border: 2px solid #fff; }
.content { padding: 26px 30px 50px; }

.page-grid { display: grid; gap: 20px; }
.grid-4 { grid-template-columns: repeat(4, minmax(0,1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
.grid-2 { grid-template-columns: repeat(2, minmax(0,1fr)); }
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); }
.card-pad { padding: 20px; }
.section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.section-head h2, .section-head h3 { margin: 0; }
.section-head h2 { font-size: 18px; }
.section-head h3 { font-size: 15px; }
.section-head p { margin: 5px 0 0; color: var(--muted); font-size: 12px; }

.stat-card { padding: 20px; position: relative; overflow: hidden; }
.stat-card::after { content: ""; position: absolute; width: 95px; height: 95px; border-radius: 50%; background: rgba(27,120,180,.08); right: -28px; bottom: -35px; }
.stat-top { display: flex; align-items: center; justify-content: space-between; }
.stat-icon { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: #edf4f9; }
.stat-value { font-size: 30px; font-weight: 800; letter-spacing: -.05em; margin: 16px 0 5px; }
.stat-label { font-size: 12px; color: var(--muted); }
.stat-foot { margin-top: 12px; font-size: 11px; font-weight: 700; }
.good { color: var(--success); }
.warn { color: var(--warning); }
.bad { color: var(--danger); }

.primary-btn, .secondary-btn, .danger-btn, .ghost-btn, .soft-btn { border-radius: 11px; padding: 10px 14px; font-weight: 700; border: 0; }
.primary-btn { background: var(--navy); color: #fff; }
.primary-btn:hover { background: var(--navy-2); }
.secondary-btn { background: var(--blue); color: #fff; }
.danger-btn { background: var(--danger); color: #fff; }
.ghost-btn { background: transparent; border: 1px solid currentColor; color: inherit; }
.soft-btn { background: #eef4f8; color: var(--navy); }
.full { width: 100%; }
.small-btn { padding: 7px 10px; border-radius: 9px; font-size: 11px; }
.button-row { display: flex; flex-wrap: wrap; gap: 9px; }

.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th { text-align: left; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .06em; padding: 10px 12px; border-bottom: 1px solid var(--line); }
td { padding: 13px 12px; border-bottom: 1px solid #edf1f4; font-size: 13px; vertical-align: middle; }
tr:last-child td { border-bottom: 0; }
.student-name { display: flex; align-items: center; gap: 10px; }
.avatar { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: #e9f0f5; color: var(--navy); font-weight: 800; font-size: 11px; flex: none; }
.muted { color: var(--muted); }
.tiny { font-size: 11px; }

.status-pill { display: inline-flex; align-items: center; gap: 6px; padding: 6px 9px; border-radius: 999px; font-size: 11px; font-weight: 800; }
.status-present { color: #14633e; background: #e7f6ee; }
.status-absent { color: #9d2630; background: #fdecee; }
.status-late { color: #925600; background: #fff4df; }
.status-excused { color: #5b4497; background: #f1edfb; }
.status-pending { color: #7c5c13; background: #fff5cf; }
.status-neutral { color: #425466; background: #eef2f5; }

.class-card { padding: 18px; display: grid; gap: 15px; }
.class-card-top { display: flex; justify-content: space-between; gap: 12px; }
.class-code { font-size: 18px; font-weight: 800; color: var(--navy); }
.class-meta { color: var(--muted); font-size: 12px; margin-top: 5px; }
.class-count { min-width: 44px; height: 44px; border-radius: 14px; display: grid; place-items: center; background: var(--cream); font-weight: 800; color: var(--navy); }
.class-schedule { font-size: 12px; padding: 10px 12px; border-radius: 12px; background: #f7fafc; border: 1px solid var(--line); }

.alert-item { display: flex; gap: 12px; align-items: flex-start; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: white; }
.alert-icon { width: 38px; height: 38px; border-radius: 12px; display: grid; place-items: center; flex: none; }
.alert-critical .alert-icon { background: #fdecee; }
.alert-warning .alert-icon { background: #fff4df; }
.alert-info .alert-icon { background: #eaf4fb; }
.alert-body { min-width: 0; flex: 1; }
.alert-body strong { display: block; font-size: 13px; }
.alert-body p { margin: 4px 0 0; color: var(--muted); font-size: 12px; line-height: 1.45; }
.alert-time { color: var(--muted); font-size: 10px; white-space: nowrap; }

.attendance-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding: 15px; background: #f8fafc; border: 1px solid var(--line); border-radius: 14px; margin-bottom: 14px; }
.attendance-summary { display: flex; flex-wrap: wrap; gap: 8px; }
.status-controls { display: grid; grid-template-columns: repeat(4, 38px); gap: 6px; }
.status-controls button { width: 38px; height: 34px; border-radius: 9px; border: 1px solid var(--line); background: #fff; font-size: 11px; font-weight: 800; }
.status-controls button.active[data-status="P"] { background: #daf2e5; border-color: #9ed8b8; color: #14633e; }
.status-controls button.active[data-status="A"] { background: #fde4e6; border-color: #efb0b5; color: #9d2630; }
.status-controls button.active[data-status="L"] { background: #fff0d4; border-color: #efce8f; color: #925600; }
.status-controls button.active[data-status="LE"] { background: #eee8fb; border-color: #c9baef; color: #5b4497; }

.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }
.form-group { display: grid; gap: 7px; }
.form-group label { font-size: 11px; color: var(--muted); font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.form-group input, .form-group select, .form-group textarea { width: 100%; border: 1px solid var(--line); border-radius: 11px; padding: 11px 12px; outline: none; background: #fff; color: var(--ink); }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(27,120,180,.1); }
.form-group textarea { min-height: 90px; resize: vertical; }
.form-span-2 { grid-column: span 2; }
.checkbox-row { display: flex; align-items: center; gap: 8px; font-size: 12px; }
.student-picker { max-height: 300px; overflow: auto; border: 1px solid var(--line); border-radius: 12px; }
.student-picker label { display: flex; align-items: center; gap: 10px; padding: 11px 12px; border-bottom: 1px solid #edf1f4; font-size: 12px; }
.student-picker label:last-child { border-bottom: 0; }

.schedule-grid { display: grid; grid-template-columns: 90px repeat(5, minmax(110px,1fr)); gap: 8px; overflow-x: auto; }
.schedule-cell { min-height: 76px; border: 1px solid var(--line); border-radius: 12px; padding: 8px; background: #fff; font-size: 11px; }
.schedule-cell.header { min-height: auto; background: transparent; border: 0; font-weight: 800; color: var(--muted); text-transform: uppercase; }
.schedule-cell.period { display: flex; flex-direction: column; justify-content: center; font-weight: 800; color: var(--navy); background: #f6f9fb; }
.lesson-chip { background: #edf5fa; border-left: 4px solid var(--blue); border-radius: 8px; padding: 7px; }
.lesson-chip strong, .lesson-chip small { display: block; }
.lesson-chip small { color: var(--muted); margin-top: 3px; }

.empty-state { text-align: center; padding: 38px 20px; color: var(--muted); }
.empty-state .empty-icon { font-size: 34px; margin-bottom: 10px; }
.empty-state h3 { color: var(--ink); margin: 0 0 6px; }
.empty-state p { margin: 0 auto 14px; max-width: 420px; line-height: 1.5; }

.drawer { position: fixed; top: 0; right: -440px; width: min(440px, 95vw); height: 100vh; background: #fff; z-index: 90; box-shadow: -18px 0 40px rgba(17,36,55,.18); transition: right .25s ease; }
.drawer.open { right: 0; }
.drawer-head { display: flex; align-items: flex-start; justify-content: space-between; padding: 22px; border-bottom: 1px solid var(--line); }
.drawer-head h2 { margin: 0; font-size: 20px; }
.drawer-head p { margin: 5px 0 0; color: var(--muted); font-size: 12px; }
.drawer-body { padding: 16px; display: grid; gap: 10px; overflow-y: auto; max-height: calc(100vh - 90px); }
.backdrop, .modal-backdrop { position: fixed; inset: 0; background: rgba(6,24,38,.48); backdrop-filter: blur(2px); z-index: 80; }

.modal { position: fixed; width: min(720px, calc(100vw - 28px)); max-height: 88vh; overflow: hidden; left: 50%; top: 50%; transform: translate(-50%,-50%); z-index: 100; background: #fff; border-radius: 20px; box-shadow: 0 30px 80px rgba(6,24,38,.28); }
.modal-head { display: flex; justify-content: space-between; align-items: flex-start; padding: 21px 22px; border-bottom: 1px solid var(--line); }
.modal-head h2 { margin: 0; }
.modal-head p { margin: 5px 0 0; color: var(--muted); font-size: 12px; }
.modal-body { padding: 22px; max-height: calc(88vh - 145px); overflow-y: auto; }
.modal-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 9px; padding: 15px 22px; border-top: 1px solid var(--line); background: #fafcfd; }
.toast { position: fixed; left: 50%; bottom: 26px; transform: translate(-50%, 20px); background: #12283d; color: #fff; border-radius: 12px; padding: 12px 16px; z-index: 120; opacity: 0; pointer-events: none; transition: .2s ease; box-shadow: var(--shadow); font-size: 12px; font-weight: 700; }
.toast.show { opacity: 1; transform: translate(-50%,0); }

.role-banner { padding: 14px 16px; border-radius: 14px; background: linear-gradient(90deg, #fff9e6, #f4f8fb); border: 1px solid #eadca8; display: flex; justify-content: space-between; align-items: center; gap: 14px; }
.role-banner strong { display: block; }
.role-banner p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }

.progress-bar { height: 8px; background: #edf1f4; border-radius: 99px; overflow: hidden; }
.progress-bar span { display: block; height: 100%; background: linear-gradient(90deg, var(--teal), var(--blue)); border-radius: inherit; }

@media (max-width: 1100px) {
  .grid-4 { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .grid-3 { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

@media (max-width: 820px) {
  .mobile-only { display: grid; }
  .sidebar { transform: translateX(-100%); transition: transform .25s ease; }
  .sidebar.open { transform: translateX(0); }
  .app-shell { margin-left: 0; width: 100%; }
  .topbar { padding: 0 16px; height: 78px; }
  .topbar h1 { font-size: 20px; }
  .topbar p { display: none; }
  .role-switcher label { display: none; }
  .content { padding: 18px 14px 40px; }
  .grid-4, .grid-3, .grid-2 { grid-template-columns: 1fr; }
  .form-grid { grid-template-columns: 1fr; }
  .form-span-2 { grid-column: auto; }
}

@media (max-width: 560px) {
  .role-switcher select { max-width: 128px; }
  .top-actions { gap: 7px; }
  .status-controls { grid-template-columns: repeat(4, 34px); }
  .status-controls button { width: 34px; }
  .section-head { align-items: stretch; flex-direction: column; }
  .section-head .button-row { width: 100%; }
  .section-head .button-row button { flex: 1; }
}

/* ---- InPlace Pilot PWA additions ---- */
.network-chip { display:inline-flex; align-items:center; gap:6px; padding:7px 10px; border-radius:999px; background:#e8f6ee; color:var(--success); font-size:11px; font-weight:800; white-space:nowrap; }
.network-chip.offline { background:#fff1dc; color:var(--warning); }
.install-btn { padding:9px 12px; }
.mobile-nav { display:none; }
.mobile-register { display:none; }
.device-cache-banner { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 18px; border-radius:16px; background:linear-gradient(135deg,#eaf6f4,#eef5fb); border:1px solid #cfe3e2; }
.device-cache-banner strong { color:var(--navy); }
.device-cache-banner p { margin:4px 0 0; color:var(--muted); font-size:12px; line-height:1.45; max-width:760px; }
.device-cache-status { flex:none; border-radius:999px; background:white; border:1px solid var(--line); padding:7px 10px; color:var(--teal); font-weight:800; font-size:11px; }
.teacher-main-action { min-width:150px; }
.empty-state.compact { padding:18px 12px; }
.large-avatar { width:48px; height:48px; font-size:14px; }
.first-seen-card { display:grid; gap:18px; }
.first-seen-card > p { margin:0; line-height:1.5; }
.late-slip-question { display:grid; gap:5px; padding:14px; border-radius:14px; background:#fff7e7; border:1px solid #efd8a6; }
.late-slip-question span { color:var(--muted); font-size:12px; line-height:1.45; }
.install-steps { display:grid; gap:12px; }
.install-steps > div { display:flex; gap:12px; align-items:flex-start; padding:12px; border:1px solid var(--line); border-radius:13px; }
.install-steps strong { width:28px; height:28px; border-radius:50%; display:grid; place-items:center; background:var(--navy); color:white; flex:none; }
.install-steps span { line-height:1.5; }
.attendance-student-card { background:#fff; border:1px solid var(--line); border-radius:16px; padding:14px; display:grid; gap:12px; }
.attendance-student-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.mobile-status { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.mobile-status button { width:auto; min-height:44px; }
.attendance-detail { min-height:24px; display:flex; align-items:center; }

@media (max-width: 820px) {
  body { padding-bottom: calc(72px + env(safe-area-inset-bottom)); }
  .app-shell { margin-left:0; width:100%; }
  .topbar { height:72px; padding:0 12px; padding-top:env(safe-area-inset-top); }
  .topbar > div:first-of-type { min-width:0; }
  .topbar h1 { font-size:18px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:42vw; }
  .topbar p { display:none; }
  .role-switcher { padding:5px 7px; }
  .role-switcher select { max-width:120px; font-size:12px; }
  .network-chip { display:none; }
  .install-btn { font-size:11px; padding:8px 9px; }
  .content { padding:14px 12px 26px; }
  .mobile-nav { position:fixed; left:0; right:0; bottom:0; z-index:70; height:calc(64px + env(safe-area-inset-bottom)); padding:6px 6px env(safe-area-inset-bottom); display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); background:rgba(255,255,255,.96); border-top:1px solid var(--line); box-shadow:0 -10px 30px rgba(16,43,67,.08); backdrop-filter:blur(14px); }
  .mobile-nav button { border:0; background:transparent; color:var(--muted); border-radius:12px; display:grid; place-items:center; align-content:center; gap:2px; min-width:0; }
  .mobile-nav button > span { font-size:18px; line-height:1; }
  .mobile-nav button small { font-size:9px; font-weight:800; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
  .mobile-nav button.active { color:var(--navy); background:#eef4f8; }
  .device-cache-banner { padding:13px 14px; align-items:flex-start; }
  .device-cache-banner p { font-size:11px; }
  .device-cache-status { display:none; }
  .teacher-stats { display:none; }
  .teacher-priority { grid-template-columns:1fr; }
  .next-lesson-card { border:0; background:linear-gradient(145deg,#0b3154,#145b82); color:white; }
  .next-lesson-card h2, .next-lesson-card .class-code { color:white; }
  .next-lesson-card .section-head p, .next-lesson-card .class-meta { color:rgba(255,255,255,.72); }
  .next-lesson-card .class-count { background:rgba(255,255,255,.14); color:white; }
  .next-lesson-card .primary-btn { background:var(--gold); color:var(--navy); }
  .next-lesson-card .soft-btn { background:rgba(255,255,255,.12); color:white; }
  .desktop-register { display:none; }
  .mobile-register { display:grid; gap:10px; }
  .attendance-toolbar { position:sticky; top:80px; z-index:12; background:rgba(248,250,252,.96); backdrop-filter:blur(10px); }
  .attendance-summary { gap:5px; }
  .attendance-summary .status-pill { font-size:9px; padding:5px 7px; }
  .modal { width:calc(100vw - 16px); max-height:92vh; border-radius:18px 18px 10px 10px; top:auto; bottom:8px; transform:translateX(-50%); }
  .modal-body { max-height:calc(92vh - 150px); padding:18px; }
  .modal-actions { padding:12px 14px; }
  .modal-actions button { flex:1; min-height:44px; }
}

@media (max-width: 430px) {
  .notification-btn { min-width:38px; width:38px; height:38px; }
  .role-switcher select { max-width:104px; }
  .attendance-student-head { align-items:center; }
  .attendance-student-head .status-pill { font-size:9px; max-width:130px; text-align:center; }
  .button-row { width:100%; }
  .teacher-main-action { min-width:0; flex:1; }
}


/* ---- InPlace v1.0.1: system access layers ---- */
.ministry-banner,
.detail-access-banner {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:20px;
  padding:20px;
  border-radius:18px;
  background:linear-gradient(135deg,#0b3154,#164f75);
  color:#fff;
}
.ministry-banner h2,
.detail-access-banner h2 { margin:4px 0 6px; color:#fff; }
.ministry-banner p,
.detail-access-banner p { margin:0; color:rgba(255,255,255,.78); line-height:1.5; max-width:760px; }
.eyebrow { display:block; font-size:10px; font-weight:900; letter-spacing:.14em; color:rgba(255,255,255,.68); }
.detail-access-banner { background:linear-gradient(135deg,#3b2d14,#77581d); }
.detail-access-banner .ghost-btn { color:#fff; border-color:rgba(255,255,255,.28); background:rgba(255,255,255,.08); }
.ministry-metric-list { display:grid; gap:0; }
.ministry-metric-list > div { display:flex; justify-content:space-between; gap:18px; padding:13px 0; border-bottom:1px solid var(--line); }
.ministry-metric-list > div:last-child { border-bottom:0; }
.ministry-metric-list span { color:var(--muted); }
.ministry-metric-list strong { color:var(--navy); }
.school-summary-row { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:13px 14px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.school-summary-row strong,
.school-summary-row span { display:block; }
.school-summary-row span { margin-top:4px; font-size:11px; color:var(--muted); }
.privacy-callout { display:flex; align-items:flex-start; gap:10px; padding:15px 16px; border-radius:14px; background:#eef5f8; border:1px solid #d4e4eb; color:var(--navy); }
.privacy-callout strong { flex:none; }
.privacy-callout span { color:var(--muted); line-height:1.45; }
.metric-panel { padding:16px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.metric-panel span,
.metric-panel strong { display:block; }
.metric-panel span { font-size:11px; color:var(--muted); margin-bottom:5px; }
.metric-panel strong { font-size:22px; color:var(--navy); }

@media (max-width: 820px) {
  .ministry-banner,
  .detail-access-banner { flex-direction:column; padding:16px; }
  .detail-access-banner .ghost-btn { width:100%; }
  .privacy-callout { flex-direction:column; }
}

/* v1.1 setup + teacher builder */
.selection-summary { margin-top: 10px; padding: 12px 14px; border: 1px solid var(--line); background: #f8fafc; border-radius: 12px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.schedule-row { display: grid; grid-template-columns: 1fr 1.4fr auto; gap: 8px; align-items: center; }
.schedule-row select { width: 100%; border: 1px solid var(--line); border-radius: 11px; padding: 10px 11px; background: white; color: var(--ink); }
.upload-zone { position: relative; border: 2px dashed #b9cbd9; background: #f8fbfd; border-radius: 16px; padding: 24px; display: grid; gap: 7px; text-align: center; color: var(--muted); }
.upload-zone strong { color: var(--navy); font-size: 15px; }
.upload-zone input { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
.upload-mini { position: relative; display: flex; align-items: center; gap: 12px; padding: 13px 14px; border: 1px solid var(--line); border-radius: 13px; background: #f8fafc; cursor: pointer; }
.upload-mini input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.upload-mini strong, .upload-mini small { display:block; }
.upload-mini small { color: var(--muted); margin-top: 3px; }
.metric-panel { border: 1px solid var(--line); border-radius: 13px; padding: 14px; background: #fafcfd; }
.metric-panel span { display:block; color: var(--muted); font-size: 11px; }
.metric-panel strong { display:block; margin-top: 5px; font-size: 24px; color: var(--navy); }
@media (max-width: 560px){ .schedule-row { grid-template-columns: 1fr; } }


/* ---- InPlace v1.2 authentication / landing ---- */
.auth-hidden { display:none !important; }
.login-screen { min-height:100vh; display:grid; place-items:center; padding:28px 18px; background:radial-gradient(circle at top right,#e7f6f4 0,#f4f7f9 34%,#eef3f7 100%); }
.login-card { width:min(100%,520px); background:#fff; border:1px solid var(--line); border-radius:24px; padding:28px; box-shadow:0 24px 70px rgba(12,49,84,.12); display:grid; gap:24px; }
.login-brand { display:flex; align-items:center; gap:14px; }
.brand-mark.large { width:56px; height:56px; border-radius:16px; box-shadow:0 7px 20px rgba(11,49,84,.14); }
.login-title { color:var(--navy); font-size:24px; }
.login-copy h1 { margin:0 0 8px; color:var(--navy); font-size:28px; }
.login-copy p { margin:0; color:var(--muted); line-height:1.55; }
.login-form { display:grid; gap:14px; }
.login-form label { display:grid; gap:7px; font-size:12px; font-weight:800; color:var(--navy); }
.login-form input { width:100%; box-sizing:border-box; border:1px solid var(--line); border-radius:13px; padding:13px 14px; font:inherit; color:var(--navy); background:#fff; }
.login-form input:focus { outline:3px solid rgba(31,160,154,.16); border-color:var(--teal); }
.login-button { width:100%; min-height:46px; }
.login-error { margin:0; padding:10px 12px; border-radius:10px; background:#fff0f0; color:#9d2525; font-size:12px; }
.login-note { display:grid; gap:4px; padding:14px; border-radius:14px; background:#f3f7fa; border:1px solid var(--line); }
.login-note strong { color:var(--navy); }
.login-note span { color:var(--muted); font-size:12px; line-height:1.5; }
.signed-user { display:grid; gap:2px; padding:10px 2px; }
.signed-user strong { color:#fff; font-size:13px; }
.signed-user small { color:rgba(255,255,255,.65); }
@media (max-width:560px){ .login-screen{padding:18px 12px;} .login-card{padding:22px 18px;border-radius:20px;} .login-copy h1{font-size:24px;} }

/* ---- InPlace v1.3: timetable-first teacher day + cover roster ---- */
.teacher-tt-wrap { overflow-x:auto; padding:2px 0 8px; scrollbar-width:thin; }
.teacher-tt-grid {
  display:grid;
  grid-template-columns:88px repeat(5,minmax(148px,1fr));
  grid-template-rows:42px repeat(7,86px);
  gap:6px;
  min-width:900px;
  position:relative;
  align-items:stretch;
}
.tt-head,
.tt-period,
.tt-slot { border:1px solid var(--line); border-radius:10px; background:#f8fafc; }
.tt-head { display:grid; place-items:center; padding:8px; font-size:11px; font-weight:900; color:var(--navy); text-align:center; }
.tt-corner { grid-column:1; grid-row:1; }
.tt-period { display:grid; align-content:center; gap:4px; padding:8px; color:var(--navy); }
.tt-period strong { font-size:11px; }
.tt-period span { font-size:9px; color:var(--muted); line-height:1.25; }
.tt-slot { background:#fbfcfd; min-width:0; }
.tt-slot.tt-today,
.tt-head.tt-today { background:#f7f2df; border-color:#e7d9a8; }
.tt-slot.tt-current { box-shadow:inset 0 0 0 2px var(--gold); background:#fff9e8; }
.tt-lesson {
  z-index:3;
  min-width:0;
  margin:3px;
  padding:9px 10px;
  border-radius:10px;
  border:1px solid #bed6e7;
  border-left:4px solid var(--blue);
  background:#eaf4fb;
  color:var(--ink);
  text-align:left;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:flex-start;
  gap:3px;
  overflow:hidden;
  box-shadow:0 4px 12px rgba(19,48,74,.06);
}
button.tt-lesson { width:auto; cursor:pointer; }
button.tt-lesson:hover { border-color:#8ebbd7; background:#e0f0fa; }
.tt-lesson strong { font-size:12px; line-height:1.25; color:var(--navy); }
.tt-lesson small { font-size:10px; line-height:1.3; color:var(--muted); }
.tt-lesson em { margin-top:auto; font-size:9px; line-height:1.2; font-style:normal; font-weight:800; color:#6a5518; }
.tt-range { font-size:9px; line-height:1; font-weight:900; letter-spacing:.04em; color:var(--blue); text-transform:uppercase; }
.tt-cover { background:#fff5d8; border-color:#e8d28d; border-left-color:var(--gold); }
.tt-cover strong { color:#5f4710; }
.tt-current-lesson { box-shadow:0 0 0 2px var(--gold), 0 8px 18px rgba(19,48,74,.10); }
.workload-picker label { align-items:flex-start; }
.workload-picker label span { line-height:1.4; }
.workload-picker input { margin-top:3px; }

@media (max-width: 820px) {
  .teacher-tt-grid { min-width:790px; grid-template-columns:78px repeat(5,136px); grid-template-rows:40px repeat(7,82px); gap:5px; }
  .tt-lesson { padding:8px; }
  .role-banner { align-items:flex-start; flex-direction:column; }
  .role-banner > .button-row { width:100%; }
}

/* InPlace v1.5 */
.staff-badge{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;background:#eef4ff;color:#1849a9;font-size:11px;font-weight:700;white-space:nowrap;vertical-align:middle}
.today-lessons{display:grid;gap:10px}.today-lesson-card{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:left;border:1px solid var(--border);border-radius:14px;padding:14px 16px;background:#fff;color:inherit;cursor:pointer;min-height:74px}.today-lesson-card>div{display:grid;gap:3px}.today-lesson-card strong{font-size:16px}.today-lesson-card small{color:var(--muted)}.lesson-state-label{font-size:12px;font-weight:800;white-space:nowrap}.today-lesson-card:disabled{cursor:not-allowed;opacity:.72}
.lesson-status-complete{background:#ecfdf3!important;border-color:#86d9aa!important}.lesson-status-complete .lesson-state-label,.lesson-status-complete em{color:#067647!important}.lesson-status-due{background:#fffaeb!important;border-color:#fedf89!important}.lesson-status-due .lesson-state-label,.lesson-status-due em{color:#b54708!important}.lesson-status-overdue,.lesson-status-missed{background:#fff1f0!important;border-color:#fda29b!important}.lesson-status-overdue .lesson-state-label,.lesson-status-overdue em,.lesson-status-missed .lesson-state-label{color:#b42318!important}
.period-checks{display:flex;flex-wrap:wrap;gap:8px}.period-checks label{display:flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:10px;padding:9px 12px;background:#fff}.period-checks input{width:18px;height:18px}
.inline-select{min-width:220px;max-width:320px}.live-timeline{display:grid;gap:8px;margin-top:14px}.live-row{display:grid;grid-template-columns:52px 1fr auto;gap:12px;align-items:center;border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:#fff}.live-row>span{font-weight:800;color:var(--muted)}.live-row>div{display:grid;gap:2px}.live-row small{color:var(--muted)}.live-current{border-color:#84adff;background:#eff4ff}.search-row{display:grid;grid-template-columns:1fr auto;gap:8px}.student-search-results{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.student-live-card{margin-top:14px;border:1px solid var(--border);border-radius:14px;padding:16px;display:flex;justify-content:space-between;gap:16px;align-items:center}.student-live-card>div:first-child{display:flex;gap:12px;align-items:center}.student-live-card h3{margin:0 0 4px}.student-live-card p{margin:0;color:var(--muted)}.student-live-status{display:grid;justify-items:end;gap:5px}.student-live-status small{color:var(--muted);text-align:right}
@media(max-width:700px){.today-lesson-card{align-items:flex-start;flex-direction:column}.lesson-state-label{white-space:normal}.live-row{grid-template-columns:44px 1fr}.live-row>.status-pill{grid-column:2}.search-row{grid-template-columns:1fr}.student-live-card{align-items:flex-start;flex-direction:column}.student-live-status{justify-items:start}.student-live-status small{text-align:left}.inline-select{min-width:0;max-width:100%;width:100%}}

/* InPlace v1.5.1 substitution workload bands */
.workload-option{border-left:4px solid transparent!important;transition:background .15s ease,border-color .15s ease}
.workload-option.workload-amber{background:#fffaeb!important;border-color:#fedf89!important;border-left-color:#f79009!important}
.workload-option.workload-red{background:#fff1f0!important;border-color:#fda29b!important;border-left-color:#d92d20!important}
.workload-warning{display:inline-flex;margin-top:6px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:800}
.workload-amber .workload-warning,.workload-status-amber{background:#fef0c7;color:#b54708}
.workload-red .workload-warning,.workload-status-red{background:#fee4e2;color:#b42318}
.workload-status{display:inline-flex;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}
.workload-status-normal{background:#ecfdf3;color:#067647}
.workload-row.workload-amber td{background:#fffcf5}
.workload-row.workload-red td{background:#fff7f6}

/* InPlace v1.6 Fair Cover Engine */
.fair-recommended-option{box-shadow:inset 0 0 0 1px #98a2b3;background:#f8fafc!important}
.fair-recommended-badge{display:inline-flex;margin-left:6px;padding:2px 7px;border-radius:999px;background:#eaf2ff;color:#1849a9;font-size:10px;font-weight:900;vertical-align:middle}
.fair-engine-note{display:grid;gap:4px;border:1px solid #b2ccff;background:#eff4ff;border-radius:12px;padding:12px 14px;margin-bottom:12px}
.fair-engine-note strong{color:#1849a9}.fair-engine-note span{color:#475467;font-size:12px;line-height:1.45}
.fair-override-fields{margin:10px 0 14px;padding:12px;border:1px dashed #d0d5dd;border-radius:12px;background:#fcfcfd}

/* ---- InPlace v1.7 authentication ---- */
.auth-card-wide { width:min(100%,620px); }
.auth-choice-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.auth-choice { appearance:none; border:1px solid var(--line); border-radius:16px; background:#fff; padding:16px; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:12px; text-align:left; cursor:pointer; color:var(--navy); transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease; }
.auth-choice:hover { transform:translateY(-1px); border-color:#b7cedd; box-shadow:0 10px 28px rgba(12,49,84,.08); }
.auth-choice span:nth-child(2) { display:grid; gap:4px; }
.auth-choice strong { font-size:14px; }
.auth-choice small { color:var(--muted); line-height:1.4; }
.auth-choice b { font-size:20px; }
.auth-choice-icon { width:38px; height:38px; border-radius:12px; display:grid; place-items:center; background:#edf4f8; color:var(--navy); font-weight:900; }
.ministry-choice .auth-choice-icon { background:#eaf6f4; color:var(--teal); }
.demo-access { border-top:1px solid var(--line); padding-top:14px; }
.demo-access summary { cursor:pointer; color:var(--muted); font-size:12px; font-weight:800; }
.demo-login-form { margin-top:14px; }
.build-label { font-size:12px; color:#667085; }
.pending-status-icon { width:54px; height:54px; border-radius:18px; display:grid; place-items:center; background:#fff6df; color:#8b6500; font-size:24px; }
.access-decision { display:grid; gap:8px; min-width:230px; }
.access-decision .button-row { justify-content:flex-end; }

@media (max-width:680px){
  .auth-choice-grid { grid-template-columns:1fr; }
  .access-decision { width:100%; min-width:0; }
  .alert-item { flex-wrap:wrap; }
}

/* ---- InPlace v1.7.3 split authentication ---- */
.auth-login-grid { align-items:start; }
.auth-panel { border:1px solid var(--line); border-radius:18px; background:#fff; padding:18px; display:grid; gap:15px; min-height:100%; }
.auth-panel p { margin:0; color:var(--muted); font-size:12px; line-height:1.55; }
.auth-panel-head { display:flex; align-items:center; gap:11px; }
.auth-panel-head > div { display:grid; gap:3px; }
.auth-panel-head strong { color:var(--navy); font-size:15px; }
.auth-panel-head small { color:var(--muted); font-size:11px; }
.google-icon { color:#1769aa; }
.ministry-icon { background:#eaf6f4; color:var(--teal); }
.auth-action { min-height:46px; }
.compact-login-form { gap:11px; }
.compact-login-form label { font-size:11px; }
.compact-login-form input { padding:11px 12px; border-radius:11px; }
.text-btn { border:0; background:transparent; color:var(--blue); padding:3px 0; font-weight:800; font-size:11px; text-align:center; }
.text-btn:hover { text-decoration:underline; }
.auth-footnote { color:var(--muted); font-size:10px; line-height:1.45; }
.ministry-auth-panel { background:linear-gradient(180deg,#fff 0%,#fbfefd 100%); }
@media (max-width:760px){ .auth-login-grid{grid-template-columns:1fr;} }

/* v1.7.5 school self-onboarding */
.onboarding-card{width:min(100%,650px)}
.responsibility-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.responsibility-card{border:1px solid var(--line);border-radius:16px;padding:16px;display:grid;gap:11px;background:#fff;cursor:pointer}
.responsibility-card:has(input[type="checkbox"]:checked){border-color:#8db8d1;background:#f8fbfd;box-shadow:0 0 0 2px rgba(27,120,180,.06)}
.responsibility-check{display:flex;align-items:center;gap:9px;color:var(--navy)}
.responsibility-check input{width:19px;height:19px}
.responsibility-card small{color:var(--muted);line-height:1.45}
.responsibility-card select,.responsibility-card input[type="text"]{width:100%;border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:#fff;color:var(--ink)}
.responsibility-card select:disabled,.responsibility-card input[type="text"]:disabled{opacity:.5;background:#f3f5f7}
@media(max-width:620px){.responsibility-grid{grid-template-columns:1fr}}

/* v1.7.5 Ministry school-user registry */
.toolbar-row{display:flex;align-items:center}.search-input{border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:#fff;color:var(--ink);outline:none}.search-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(27,120,180,.1)}
@media(max-width:700px){.toolbar-row{align-items:stretch;flex-direction:column}.search-input{width:100%;box-sizing:border-box}}


/* v1.7.6 hidden Test School */
.test-role-switch{text-decoration:none;text-align:center;box-sizing:border-box}
.test-school-card{width:min(100%,760px)}
.test-school-warning{border:1px solid #fedf89;background:#fffaeb;border-radius:14px;padding:12px 14px;color:#7a4d00;font-size:12px;line-height:1.5}
.test-role-section{display:grid;gap:10px}
.test-role-section h2{font-size:13px;margin:0;color:var(--navy)}
.test-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.test-role-btn{border:1px solid var(--line);border-radius:14px;background:#fff;padding:13px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;cursor:pointer;color:var(--navy);font-weight:800}
.test-role-btn:hover{border-color:#9dbfd2;background:#f8fbfd}.test-role-btn small{display:block;color:var(--muted);font-weight:600;margin-top:3px}.test-role-btn span:last-child{font-size:18px;color:var(--blue)}
@media(max-width:620px){.test-role-grid{grid-template-columns:1fr}}


/* v1.8.0 Phase 1 — teacher-first interface */
.simple-school-login-copy{text-align:center}.simple-school-login-copy p{font-size:14px}.simple-google-btn{min-height:48px;font-size:15px;margin-top:2px}
.nav-count{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:inline-grid;place-items:center;background:rgba(255,255,255,.16);font-size:10px;font-weight:800;color:#fff}.mobile-nav .nav-count{position:absolute;right:15%;top:5px;background:var(--danger);color:#fff;border:2px solid #fff;min-width:19px;height:19px;padding:0 4px}.mobile-nav button{position:relative}
.teacher-today-shell{max-width:760px;margin:0 auto;display:grid;gap:14px}.teacher-today-date{font-size:12px;font-weight:800;color:var(--muted);letter-spacing:.02em;padding:2px 2px 0}.teacher-now-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;display:flex;align-items:center;justify-content:space-between;gap:18px;box-shadow:var(--shadow)}.teacher-now-card.now-current{border-color:#b9d2e3}.teacher-now-card.now-urgent,.teacher-now-card.now-registration{border-color:#e4c875;background:#fffdf5}.teacher-now-card.now-complete{border-color:#b9dcc9;background:#fbfefc}.teacher-now-card.now-quiet{box-shadow:none;background:#f8fafc}.now-card-copy{display:grid;gap:5px;min-width:0}.now-kicker{font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:900;color:var(--muted)}.now-card-copy strong{font-size:21px;color:var(--navy);letter-spacing:-.02em}.now-card-copy small{font-size:12px;color:var(--muted)}.teacher-now-action{min-height:46px;white-space:nowrap}.now-done{font-size:12px;font-weight:800;color:var(--success);white-space:nowrap}.teacher-section-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:var(--muted);padding:5px 2px}.teacher-attention-list,.teacher-inbox-list,.teacher-page-actions{display:grid;gap:8px}.teacher-alert-line,.teacher-menu-row,.teacher-next-line{width:100%;border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px 16px;display:flex;align-items:center;gap:12px;text-align:left;color:inherit}.teacher-alert-line>span:nth-child(2),.teacher-menu-row>span{display:grid;gap:3px;flex:1;min-width:0}.teacher-alert-line strong,.teacher-menu-row strong{font-size:14px}.teacher-alert-line small,.teacher-menu-row small{font-size:11px;color:var(--muted)}.teacher-alert-line b,.teacher-menu-row b{margin-left:auto;color:var(--muted)}.teacher-alert-dot{width:9px;height:9px;border-radius:50%;background:var(--blue);flex:none}.teacher-alert-dot.urgent{background:var(--warning)}.teacher-next-wrap{padding-top:2px}.teacher-next-line{box-shadow:none;background:transparent;border-style:dashed}.teacher-next-line>span{font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:var(--muted)}.teacher-next-line>strong{font-size:14px;color:var(--navy)}.teacher-next-line>small{margin-left:auto;color:var(--muted);font-size:11px}.teacher-next-button{cursor:pointer}.teacher-simple-page{max-width:760px;margin:0 auto;display:grid;gap:16px}.teacher-inbox-item{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:11px;padding:13px 2px;border-bottom:1px solid #edf1f4}.teacher-inbox-item:last-child{border-bottom:0}.teacher-inbox-item>div{display:grid;gap:3px}.teacher-inbox-item strong{font-size:13px}.teacher-inbox-item small{font-size:11px;color:var(--muted);line-height:1.4}.teacher-inbox-item time{font-size:10px;color:var(--muted);white-space:nowrap}.teacher-inbox-item.unread strong{color:var(--navy)}.teacher-empty-simple{padding:42px 10px;text-align:center;display:grid;gap:5px;color:var(--muted)}.teacher-empty-simple strong{color:var(--ink)}
@media(max-width:820px){.mobile-nav.teacher-compact-nav{grid-template-columns:repeat(4,minmax(0,1fr))}.teacher-today-shell,.teacher-simple-page{max-width:none}.teacher-now-card{padding:17px;align-items:flex-start;flex-direction:column}.teacher-now-action{width:100%}.now-done{white-space:normal}.teacher-next-line{display:grid;grid-template-columns:auto 1fr;gap:4px 10px}.teacher-next-line>small{grid-column:2;margin-left:0}.teacher-inbox-item{grid-template-columns:auto 1fr}.teacher-inbox-item time{grid-column:2}}

/* v1.8.1 phases 2–4: focused teacher workflow */
.teacher-cover-task,.teacher-urgent-task{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border:1px solid var(--border);border-radius:16px;background:var(--card);}
.teacher-cover-task.needs-ack,.teacher-urgent-task{border-color:#e7b96b;background:#fffaf1;}
.teacher-cover-task>div:first-child,.teacher-urgent-task>div:first-child{display:flex;flex-direction:column;gap:3px;min-width:0;}
.teacher-cover-task strong,.teacher-urgent-task strong{font-size:1rem;}
.teacher-cover-task small,.teacher-urgent-task small{color:var(--muted);}
.teacher-inbox-item.inbox-action{width:100%;border:0;text-align:left;font:inherit;cursor:pointer;}
.teacher-inbox-item.inbox-action:hover{background:#f7fafc;}
.registration-submit-row{position:sticky;bottom:12px;justify-content:flex-end;padding-top:14px;background:linear-gradient(to bottom,rgba(255,255,255,0),#fff 28%);}
@media (max-width:700px){.teacher-cover-task,.teacher-urgent-task{align-items:flex-start;flex-direction:column}.teacher-cover-task .button-row,.teacher-urgent-task .button-row{width:100%}.teacher-cover-task .button-row button,.teacher-urgent-task .button-row button{flex:1}.registration-submit-row .primary-btn{width:100%;min-height:48px}}
/* v1.8.3 dynamic Test School staff switcher */
.test-staff-search-wrap{margin:2px 0 4px}.test-staff-search-wrap input{width:100%;box-sizing:border-box}.test-no-users{padding:16px 2px}.test-role-section+.test-role-section{margin-top:14px}

/* v1.9.0 operational coordination */
.teacher-date-switcher{display:flex;align-items:center;gap:8px;justify-content:flex-start;flex-wrap:wrap}.teacher-date-switcher input[type="date"]{min-height:40px;border:1px solid var(--line);border-radius:11px;padding:8px 10px;background:#fff;color:var(--ink);font:inherit}.teacher-date-switcher .icon-btn{width:40px;height:40px;border-radius:11px;border:1px solid var(--line);background:#fff;color:var(--navy);font-size:22px;display:grid;place-items:center;cursor:pointer}.teacher-date-switcher .icon-btn:hover{border-color:#9dbfd2;background:#f8fbfd}
.permission-grid{display:grid;gap:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:14px 0}.permission-row{display:grid;grid-template-columns:minmax(180px,1fr) 100px 110px;gap:10px;align-items:center;padding:11px 13px;border-bottom:1px solid var(--line);background:#fff}.permission-row:last-child{border-bottom:0}.permission-row.permission-head{background:#f8fafc;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.permission-row label{display:flex;align-items:center;gap:7px;font-size:12px}.permission-row input{width:18px;height:18px}
.meeting-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:300px;overflow:auto;padding:2px}.meeting-person{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:11px 12px;background:#fff;cursor:pointer}.meeting-person:has(input:checked){border-color:#9dbfd2;background:#f8fbfd}.meeting-person input{width:18px;height:18px;margin-top:2px;flex:none}.meeting-person span{display:grid;gap:2px;min-width:0}.meeting-person strong{font-size:12px;color:var(--navy)}.meeting-person small{font-size:10px;color:var(--muted);line-height:1.4}
@media(max-width:700px){.teacher-date-switcher{justify-content:space-between}.teacher-date-switcher input[type="date"]{flex:1;min-width:145px}.permission-row{grid-template-columns:1fr auto auto}.permission-row.permission-head strong{font-size:10px}.meeting-picker{grid-template-columns:1fr}}
.meeting-free-list{display:inline-flex;gap:5px;flex-wrap:wrap;margin-left:4px}.meeting-free-chip{border:1px solid #b7cedd;background:#fff;color:var(--navy);border-radius:999px;padding:4px 9px;font-size:11px;font-weight:800;cursor:pointer}.meeting-free-chip:hover{background:#f2f8fb}

/* v1.9.6 bulk cover + least-disruptive meetings */
.bulk-cover-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;margin-bottom:12px;border:1px solid var(--line);border-radius:14px;background:#f8fbfd}.bulk-cover-bar>div:first-child{display:grid;gap:2px}.bulk-cover-bar strong{font-size:13px;color:var(--navy)}.bulk-cover-bar span{font-size:11px;color:var(--muted)}.bulk-cover-check{display:grid;place-items:center;flex:none}.bulk-cover-check input{width:19px;height:19px}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@media(max-width:760px){.bulk-cover-bar{align-items:flex-start;flex-direction:column}.bulk-cover-bar .button-row{width:100%;flex-wrap:wrap}.bulk-cover-bar .button-row button{flex:1 1 140px}}
