:root {
  font-family: "Segoe UI", Tahoma, Arial, sans-serif;
  color: #152238;
  background: #f4f7fb;
  font-synthesis: none;
}
* { box-sizing: border-box; }
body { margin: 0; background: #f4f7fb; color: #152238; }
a { color: #1558a6; text-decoration: none; }
button, input, select { font: inherit; }
button, .btn { min-height: 40px; }
.app-shell { display: grid; grid-template-columns: 250px minmax(0,1fr); min-height: 100vh; }
.sidebar { background: #102f5b; color: white; padding: 22px 16px; display: flex; flex-direction: column; gap: 24px; }
.brand { display: flex; gap: 12px; align-items: center; }
.brand-mark { width: 44px; height: 44px; border-radius: 12px; background: white; color: #102f5b; display: grid; place-items: center; font-weight: 800; font-size: 22px; }
.brand strong, .brand small { display: block; }
.brand small { opacity: .75; margin-top: 4px; }
.sidebar nav { display: grid; gap: 7px; }
.sidebar nav a { color: white; padding: 11px 13px; border-radius: 9px; opacity: .86; }
.sidebar nav a.active, .sidebar nav a:hover { background: rgba(255,255,255,.13); opacity: 1; }
.sidebar-note { margin-top: auto; font-size: 12px; opacity: .65; line-height: 1.7; }
.content { min-width: 0; padding: 30px; }
.page-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
h1 { margin: 0 0 6px; font-size: 30px; }
h2 { margin: 0 0 16px; font-size: 20px; }
p { margin: 0; line-height: 1.8; color: #607087; }
.panel { background: white; border: 1px solid #dbe4ef; border-radius: 14px; padding: 20px; margin-bottom: 18px; }
.grid-2 { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.stats-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 14px; margin-bottom: 18px; }
.stat { background: white; border: 1px solid #dbe4ef; border-radius: 13px; padding: 17px; }
.stat span { display: block; color: #6f7e91; font-size: 13px; margin-bottom: 6px; }
.stat strong { font-size: 27px; }
.stat.good { border-color: #9fd5bd; background: #f2fbf7; }
.stat.bad { border-color: #e8a5a5; background: #fff6f6; }
.flow-row { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; }
.flow-row div { padding: 14px; background: #f7f9fc; border-radius: 10px; display: flex; gap: 10px; align-items: center; }
.flow-row b { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; background: #e5edf7; }
.flow-row span { font-size: 13px; line-height: 1.5; }
label { display: grid; gap: 6px; font-size: 13px; font-weight: 600; margin-bottom: 12px; }
input, select { width: 100%; min-height: 42px; border: 1px solid #cbd7e6; border-radius: 8px; padding: 8px 10px; background: white; color: #152238; }
input:focus, select:focus { outline: 2px solid #6ea7e7; outline-offset: 1px; }
.form-row { display: grid; grid-template-columns: repeat(auto-fit,minmax(130px,1fr)); gap: 10px; }
.check { display: flex; align-items: center; gap: 8px; }
.check input { width: 18px; min-height: 18px; }
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 14px; border-radius: 8px; border: 1px solid #c8d4e2; background: white; color: #173a67; cursor: pointer; }
.btn:hover { filter: brightness(.98); }
.btn:disabled { opacity: .55; cursor: not-allowed; }
.btn.primary { background: #1558a6; color: white; border-color: #1558a6; }
.btn.success { background: #19724d; color: white; border-color: #19724d; }
.btn.danger { background: #fff5f5; color: #9b2c2c; border-color: #f0c6c6; }
.btn.small { min-height: 32px; padding: 5px 9px; font-size: 12px; }
.btn.big { min-height: 48px; padding-inline: 22px; font-weight: 700; }
.actions { display: flex; flex-wrap: wrap; gap: 8px; }
.hint { color: #718197; display: block; line-height: 1.6; margin: -3px 0 12px; }
.notice { border-radius: 10px; padding: 12px 15px; margin-bottom: 16px; }
.notice.ok { background: #eef9f4; border: 1px solid #b9e2cf; color: #175a3f; }
.notice.error { background: #fff1f1; border: 1px solid #efc2c2; color: #8b2525; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th, td { text-align: right; padding: 11px 10px; border-bottom: 1px solid #e5ebf2; font-size: 13px; vertical-align: middle; }
th { color: #586b83; background: #f7f9fc; font-weight: 700; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { border: 1px solid #cbd8e6; border-radius: 999px; background: #f8fafc; padding: 8px 12px; cursor: pointer; color: #32465f; }
.period-list { display: grid; gap: 8px; }
.period-card { display: grid; grid-template-columns: 1fr auto auto; gap: 12px; align-items: center; border: 1px solid #dce5ef; border-radius: 9px; padding: 11px; }
.period-card.noninstruction { background: #fff8e8; border-color: #ead8a7; }
.engine-summary { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 14px; }
.engine-summary div { padding: 13px; border-inline-start: 3px solid #c5d5e8; }
.engine-summary span, .engine-summary b { display: block; }
.engine-summary span { color: #718197; font-size: 12px; margin-bottom: 5px; }
.engine-summary b { line-height: 1.7; font-size: 13px; }
.result-card { border-radius: 14px; padding: 22px; margin-bottom: 18px; border: 1px solid; }
.result-card.success { background: #f0faf6; border-color: #9fd5bd; }
.result-card.failure { background: #fff5f5; border-color: #e7b0b0; }
.result-stats { display: flex; gap: 20px; margin: 12px 0; }
.errors { line-height: 1.8; }
.toolbar { display: flex; gap: 16px; align-items: end; flex-wrap: wrap; }
.toolbar label { margin: 0; min-width: 180px; }
.selection-info { margin-inline-start: auto; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; font-size: 12px; color: #64768d; }
.timetable-wrap { overflow-x: auto; background: white; border: 1px solid #dbe4ef; border-radius: 14px; }
.timetable { min-width: 1000px; table-layout: fixed; }
.timetable th, .timetable td { text-align: center; min-width: 125px; height: 92px; border: 1px solid #e4eaf1; padding: 6px; }
.timetable th.sticky { position: sticky; right: 0; z-index: 2; min-width: 85px; background: #f2f6fb; }
.noninstruction-head, .noninstruction-cell { background: #fff8e8 !important; color: #765e23; }
.lesson { width: 100%; height: 100%; min-height: 76px; border: 1px solid #bfd2e7; background: #f1f6fc; border-radius: 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; cursor: pointer; color: #173a67; }
.lesson span { font-size: 11px; color: #526a84; }
.lesson small { font-size: 10px; }
.lesson.selected { outline: 3px solid #2f78c7; background: #e3effc; }
.lesson.locked { border-style: dashed; border-color: #9b7626; }
.empty { color: #bdc6d1; }

@media (max-width: 900px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar { position: static; }
  .sidebar nav { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .content { padding: 18px; }
  .grid-2, .stats-grid, .engine-summary, .flow-row { grid-template-columns: 1fr; }
  .page-head { align-items: stretch; flex-direction: column; }
}

/* v0.2 authentication / commercial control */
.public-content { min-height: 100%; padding: 40px 18px; display: grid; place-items: center; }
.login-shell { width: min(440px, 100%); margin: 0 auto; }
.login-card { background: var(--panel, #fff); border: 1px solid var(--border, #d9dee7); border-radius: 18px; padding: 28px; }
.login-brand { margin-bottom: 26px; }
.login-form { display: grid; gap: 14px; }
.login-form .big { width: 100%; justify-content: center; }
.link-button { border: 0; background: transparent; color: inherit; cursor: pointer; padding: 4px 0; text-decoration: underline; font: inherit; }
.actions.wrap { flex-wrap: wrap; }
.auth-message { max-width: 520px; margin: 70px auto; }
.sidebar-note { display: grid; gap: 5px; }

.interactive-form { display: block; }

/* v0.2.8 separated master-data registers */
.action-card { display:block; color:inherit; text-decoration:none; transition:border-color .15s ease, transform .15s ease; }
.action-card:hover { border-color:#9fb7d3; transform:translateY(-1px); }
.action-card p { margin-bottom:0; }
.period-inline-form { display:grid; grid-template-columns:1.4fr .7fr 1fr .9fr .9fr auto; gap:8px; align-items:center; }
.period-inline-form input, .period-inline-form select { min-width:0; width:100%; }
td form { margin:0; }
@media (max-width:900px) { .period-inline-form { grid-template-columns:1fr 1fr; } }

/* v0.3.2 — safe manual timetable editing */
.cell-edit-link{display:block;margin-top:.35rem;font-size:.78rem;text-decoration:none;white-space:nowrap}
.manual-source .result-stats{align-items:stretch}
.conflict-panel.safe{border-inline-start:5px solid #1d7a46}
.conflict-panel.blocked{border-inline-start:5px solid #a92f2f}
.issue-list{display:grid;gap:.55rem;margin:.8rem 0 1rem}
.issue{padding:.7rem .85rem;border-radius:.65rem;border:1px solid var(--border,#d8dde5)}
.issue.error{background:rgba(169,47,47,.08)}
.issue.warning{background:rgba(180,126,0,.09)}
.suggestion-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}
.suggestion-card{display:flex;flex-direction:column;gap:.3rem;padding:.9rem;border:1px solid var(--border,#d8dde5);border-radius:.75rem;text-decoration:none;color:inherit;background:rgba(127,127,127,.04)}
.suggestion-card:hover{border-color:currentColor}
.manual-apply-form{margin-top:1rem}

/* v0.3.3 master-data inline editors */
.row-editor { min-width: 150px; }
.row-editor > summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; justify-content: center; }
.row-editor > summary::-webkit-details-marker { display: none; }
.mini-edit-form { margin-top: .65rem; min-width: 260px; display: grid; gap: .55rem; padding: .75rem; border: 1px solid var(--border, #d7dce2); border-radius: 10px; background: var(--card, #fff); }
.mini-edit-form label { display: grid; gap: .25rem; font-size: .9rem; }
.mini-edit-form input { width: 100%; }

/* v0.3.4 — reliable section switching and A4 operational reports */
.print-only { display: none; }
.report-summary { display:flex; flex-wrap:wrap; gap:12px; padding:12px 14px; margin-bottom:16px; background:#fff; border:1px solid #dbe4ef; border-radius:10px; }
.report-summary span, .report-summary b { padding-inline-end:12px; border-inline-end:1px solid #dbe4ef; }
.report-actions-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-bottom:18px; }
.report-action-card { display:flex; flex-direction:column; gap:7px; min-height:105px; padding:17px; border:1px solid #d7e1ec; border-radius:13px; background:#fff; color:inherit; }
.report-action-card:hover { border-color:#8caed2; }
.report-action-card strong { color:#173a67; font-size:16px; }
.report-action-card span { color:#667990; font-size:13px; line-height:1.6; }
.print-report-title { text-align:center; margin:0 0 12px; }
.print-report-title h1 { margin:0 0 4px; font-size:22px; }
.print-report-title p { margin:0; }
.report-table-wrap { width:100%; overflow-x:auto; }
.report-table { width:100%; border-collapse:collapse; table-layout:fixed; background:#fff; }
.report-table th, .report-table td { border:1px solid #cfd8e4; padding:6px; text-align:center; vertical-align:middle; font-size:12px; }
.report-table th { background:#f3f6fa; color:#253a53; }
.report-table td b, .report-table td small, .report-table th small { display:block; }
.report-table td small, .report-table th small { margin-top:3px; color:#607087; font-weight:400; }
.school-wide-table th:first-child { width:100px; }
.school-wide-table td { height:52px; }
.section-week-table th:first-child { width:85px; }
.section-week-table td { height:68px; }
.teacher-week-table th:first-child { width:145px; }
.teacher-week-table th:last-child, .teacher-week-table th:nth-last-child(2) { width:58px; }
.teacher-day-cell { text-align:right !important; vertical-align:top !important; }
.teacher-slot { display:grid; grid-template-columns:auto 1fr; gap:1px 6px; padding:3px 0; border-bottom:1px dotted #d5dde7; }
.teacher-slot:last-child { border-bottom:0; }
.teacher-slot b { grid-row:1 / span 2; min-width:24px; color:#173a67; }
.teacher-slot span { font-weight:600; }
.teacher-slot small { margin:0 !important; }
.center { text-align:center !important; }
.print-page { margin-bottom:22px; }

@media (max-width:900px) {
  .report-actions-grid { grid-template-columns:1fr; }
}

@media print {
  @page { size: A4 landscape; margin: 7mm; }
  :root, body { background:#fff !important; color:#000 !important; }
  .sidebar, .no-print, .cell-edit-link { display:none !important; }
  .print-only { display:block !important; }
  .app-shell { display:block !important; min-height:0 !important; }
  .content { padding:0 !important; }
  .panel, .timetable-wrap { border:0 !important; border-radius:0 !important; box-shadow:none !important; }
  .timetable-wrap, .report-table-wrap { overflow:visible !important; }
  .timetable { min-width:0 !important; width:100% !important; table-layout:fixed !important; }
  .timetable th, .timetable td { min-width:0 !important; height:auto !important; padding:4px !important; font-size:9pt !important; }
  .timetable th.sticky { position:static !important; }
  .lesson { min-height:0 !important; height:auto !important; border:0 !important; background:transparent !important; padding:2px !important; color:#000 !important; }
  .lesson span { color:#333 !important; font-size:8pt !important; }
  .report-table th, .report-table td { padding:4px !important; font-size:8.5pt !important; color:#000 !important; }
  .report-table td small, .report-table th small { color:#333 !important; font-size:7.5pt !important; }
  .print-report-title h1 { font-size:15pt !important; }
  .print-report-title p { font-size:9pt !important; color:#333 !important; }
  .school-wide-table td { height:12mm !important; }
  .section-week-table td { height:18mm !important; }
  .teacher-slot { padding:1px 0 !important; }
  .teacher-week-table th:first-child { width:32mm !important; }
  .teacher-week-table th:last-child, .teacher-week-table th:nth-last-child(2) { width:12mm !important; }
  .print-page { break-after:page; page-break-after:always; margin:0; }
  .print-page:last-child { break-after:auto; page-break-after:auto; }
  .teacher-report { break-inside:auto; }
  a { color:#000 !important; text-decoration:none !important; }
}

/* v0.3.5 — one-page weekly master matrices */
.one-page-matrix { background:#fff; }
.compact-title { margin-bottom:7px; }
.compact-title h1 { font-size:18px; }
.compact-title p { font-size:11px; color:#596b80; }
.matrix-table th, .matrix-table td { padding:2px 3px; font-size:9px; line-height:1.05; }
.matrix-table td { height:21px; }
.matrix-table td b { font-size:9px; white-space:nowrap; }
.matrix-table td small { font-size:7.5px; margin-top:1px; white-space:nowrap; }
.matrix-table .day-col { width:54px; }
.matrix-table .period-col, .school-master-table .period-col { width:30px; }
.matrix-day { font-weight:700; background:#eaf0f7 !important; }
.matrix-period { font-weight:700; background:#f6f8fb !important; }
.teacher-matrix-table { min-width:max(100%, 900px); }
.teacher-matrix-table thead th:not(.day-col):not(.period-col) { min-width:48px; font-size:8px; overflow:hidden; text-overflow:ellipsis; }
.section-matrix-table thead th:not(.day-col):not(.period-col) { min-width:56px; }
.matrix-legend { display:flex; flex-wrap:wrap; gap:3px 9px; margin-top:6px; font-size:8.5px; line-height:1.25; }
.matrix-legend span { white-space:nowrap; }
.school-master-table th, .school-master-table td { padding:3px; }
.school-master-table .period-col { width:42px; }
.school-master-cell { vertical-align:top !important; padding:2px !important; }
.school-master-line { display:grid; grid-template-columns:30px 1fr 24px; align-items:center; gap:2px; border-bottom:1px dotted #d8dee7; padding:1px 2px; font-size:8px; line-height:1.05; }
.school-master-line:last-child { border-bottom:0; }
.school-master-line b { font-size:8px; white-space:nowrap; }
.school-master-line span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.school-master-line small { margin:0 !important; font-size:7px !important; white-space:nowrap; }

@media print {
  @page { size:A4 landscape; margin:4mm; }
  .one-page-matrix { width:100% !important; height:auto !important; break-inside:avoid !important; page-break-inside:avoid !important; }
  .one-page-matrix .report-table-wrap { overflow:visible !important; }
  .compact-title { margin-bottom:2mm !important; }
  .compact-title h1 { font-size:10pt !important; margin:0 !important; }
  .compact-title p { font-size:6.5pt !important; margin:1mm 0 0 !important; }
  .matrix-table { width:100% !important; min-width:0 !important; table-layout:fixed !important; }
  .matrix-table th, .matrix-table td { padding:.45mm .35mm !important; font-size:4.9pt !important; line-height:1.0 !important; height:auto !important; }
  .matrix-table td b { font-size:5pt !important; }
  .matrix-table td small { font-size:4.1pt !important; margin-top:.2mm !important; }
  .matrix-table .day-col { width:11mm !important; }
  .matrix-table .period-col { width:5mm !important; }
  .teacher-matrix-table thead th:not(.day-col):not(.period-col),
  .section-matrix-table thead th:not(.day-col):not(.period-col) { min-width:0 !important; font-size:4.6pt !important; overflow:hidden !important; }
  .matrix-legend { margin-top:1.5mm !important; gap:.5mm 2mm !important; font-size:4.2pt !important; line-height:1.1 !important; }
  .school-master-table { width:100% !important; table-layout:fixed !important; }
  .school-master-table th, .school-master-table td { padding:.55mm !important; font-size:5pt !important; }
  .school-master-table .period-col { width:8mm !important; }
  .school-master-line { grid-template-columns:9mm 1fr 7mm !important; gap:.3mm !important; padding:.25mm .4mm !important; font-size:4.5pt !important; line-height:1 !important; }
  .school-master-line b { font-size:4.5pt !important; }
  .school-master-line small { font-size:3.8pt !important; }
}

/* ===== Smart drag & drop timetable editor ===== */
.drag-help { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.drag-help > span:first-of-type { flex:1; min-width:260px; }
.drag-legend { display:flex; align-items:center; gap:6px; font-size:.88rem; }
.drag-legend i { width:15px; height:15px; display:inline-block; border-radius:4px; border:1px solid currentColor; }
.legend-valid { background:#dcfce7; color:#15803d; }
.legend-invalid { background:#fee2e2; color:#b91c1c; margin-inline-start:8px; }
.drag-status { display:grid; gap:8px; margin-bottom:12px; border-inline-start:4px solid #2563eb; }
.drag-status > div:first-child { display:flex; gap:7px; flex-wrap:wrap; }
.drag-evaluating { color:#1d4ed8; font-weight:700; }
.drag-hover-result { padding:8px 10px; border-radius:8px; display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.drag-hover-result.valid { background:#dcfce7; color:#166534; }
.drag-hover-result.invalid { background:#fee2e2; color:#991b1b; }
.drag-hover-result small { width:100%; }
.drag-timetable td { position:relative; transition:background-color .12s ease, box-shadow .12s ease; }
.drag-timetable td.drop-valid { background:#dcfce7 !important; box-shadow:inset 0 0 0 2px #22c55e; }
.drag-timetable td.drop-invalid { background:#fee2e2 !important; box-shadow:inset 0 0 0 2px #ef4444; }
.drag-timetable td.drop-noop { background:#f1f5f9 !important; box-shadow:inset 0 0 0 2px #94a3b8; }
.drag-timetable td.drop-origin { background:#dbeafe !important; box-shadow:inset 0 0 0 2px #3b82f6; }
.drag-timetable td.drop-pending { background:#f8fafc; }
.draggable-lesson[draggable="true"] { cursor:grab; }
.draggable-lesson[draggable="true"]:active { cursor:grabbing; opacity:.72; }
.drag-handle { display:block; margin-top:4px; opacity:.7; font-size:.72rem; }
.drag-target-overlay { position:absolute; inset:3px; z-index:4; border-radius:7px; padding:5px; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; pointer-events:none; line-height:1.15; }
.drag-target-overlay.valid { background:rgba(220,252,231,.95); color:#166534; border:1px solid #22c55e; }
.drag-target-overlay.invalid { background:rgba(254,226,226,.96); color:#991b1b; border:1px solid #ef4444; }
.drag-target-overlay.noop { background:rgba(241,245,249,.96); color:#475569; border:1px solid #94a3b8; }
.drag-target-overlay b { font-size:.78rem; }
.drag-target-overlay small { font-size:.64rem; margin-top:3px; max-height:2.4em; overflow:hidden; }
@media (max-width: 760px) {
  .drag-target-overlay small { display:none; }
  .drag-target-overlay b { font-size:.7rem; }
}
@media print {
  .drag-help, .drag-status, .drag-target-overlay, .drag-handle { display:none !important; }
  .drag-timetable td { background:transparent !important; box-shadow:none !important; }
}

/* v0.3.6.1 - reliable native drag/drop (Chromium/Edge + Blazor Server) */
.drag-token-form { display:none !important; }
.draggable-lesson[draggable="true"] {
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
  -webkit-user-drag: element;
}
.draggable-lesson[draggable="true"]:active { cursor: grabbing; }
.draggable-lesson.is-dragging { opacity:.55; outline:2px dashed #2563eb; }
.drag-status.info { border-inline-start-color:#2563eb; }
.drag-status.valid { border-inline-start-color:#16a34a; background:#f0fdf4; }
.drag-status.invalid { border-inline-start-color:#dc2626; background:#fef2f2; }
.drag-timetable td.drop-hover { box-shadow:inset 0 0 0 3px #0f172a; }

/* v0.3.7 — CP-SAT smart chain repair */
.legend-smart { background:#fef3c7; color:#b45309; margin-inline-start:8px; }
.drag-status.smart { border-inline-start-color:#d97706; background:#fffbeb; }
.drag-timetable td.drop-smart { background:#fef3c7 !important; box-shadow:inset 0 0 0 2px #f59e0b; }
.drag-timetable td.drop-smart-pending { background:#fff7ed !important; box-shadow:inset 0 0 0 2px #f59e0b; }
.drag-target-overlay.smart { background:rgba(254,243,199,.97); color:#92400e; border:1px solid #f59e0b; }
.drag-target-overlay.smart-pending { background:rgba(255,247,237,.96); color:#9a3412; border:1px dashed #f59e0b; }
@media print {
  .drag-timetable td.drop-smart, .drag-timetable td.drop-smart-pending { background:transparent !important; box-shadow:none !important; }
}

/* v0.3.8 — adjacency controls and visual block identity */
.adjacency-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .45rem;border-radius:999px;font-size:.78rem;font-weight:700;white-space:nowrap}
.adjacency-badge.single{background:#eef2f7;color:#52606d}
.adjacency-badge.linked{background:#e7f5ff;color:#0b5f8a;border:1px solid #b6e0fe}
.assignment-actions{display:flex;gap:.4rem;align-items:flex-start;flex-wrap:wrap}
.inline-editor summary{list-style:none;cursor:pointer}.inline-editor summary::-webkit-details-marker{display:none}
.edit-card{min-width:420px;max-width:650px;margin-top:.5rem;padding:.75rem;border:1px solid #d9e2ec;border-radius:.75rem;background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.08);position:absolute;z-index:40}
.form-row.compact{gap:.55rem}.form-row.compact label{min-width:120px}
.lesson.linked-block{outline:2px solid rgba(14,116,144,.22);outline-offset:-2px}
.block-badge{display:block;margin:.18rem auto 0;padding:.12rem .35rem;border-radius:999px;background:#e0f2fe;color:#075985;font-weight:800;font-size:.72rem;width:max-content;max-width:100%}
@media(max-width:900px){.edit-card{position:static;min-width:0;max-width:none}}
@media print{.block-badge{background:transparent!important;border:0!important;color:#111!important;padding:0}}


/* v0.3.8.1 — human-readable optimization settings */
.settings-title-row{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:.7rem}
.optimization-grid{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:.9rem;margin:1rem 0}
.setting-card{display:grid;gap:.45rem;padding:.9rem 1rem;border:1px solid #dbe4ef;border-radius:.8rem;background:#fbfdff}
.setting-card .setting-name{font-weight:800;color:#173a67}
.setting-card small{color:#667990;line-height:1.55;min-height:2.8em}
.setting-card select,.setting-card input{width:100%;margin:0}
.settings-note{margin:.85rem 0 1rem;padding:.75rem .9rem;border-radius:.65rem;background:#f5f8fc;border:1px solid #dbe4ef;color:#40556f;line-height:1.6}
@media(max-width:900px){.optimization-grid{grid-template-columns:1fr}}

/* v0.3.8.2 - adjacency management from Subjects */
.adjacency-manager-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.55rem 0;border-bottom:1px solid #e5e7eb}
.adjacency-manager-row:last-child{border-bottom:0}
.adjacency-manager-row>div{min-width:220px;flex:1}
.adjacency-manager-row small{display:block;color:#64748b;margin-top:.15rem}

/* v0.4.0 import UI */
.notice.warn { background:#fff8e8; border:1px solid #ead7a2; color:#765e23; }
.page-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.plan-detail-card { margin-top:10px; max-height:420px; overflow:auto; min-width:620px; }
.plan-detail-card table { width:100%; }
@media (max-width:900px){ .plan-detail-card{min-width:0;} }

/* ============================================================
   v0.4.2 — JW / جدولي visual identity
   Brand: #0F1B2D navy / #1E3A6B blue / #C89D4A gold /
          #16A085 teal / #E6E8EC light neutral
   ============================================================ */
:root {
  --jw-navy:#0F1B2D;
  --jw-blue:#1E3A6B;
  --jw-gold:#C89D4A;
  --jw-gold-soft:#F4E7C8;
  --jw-teal:#16A085;
  --jw-light:#E6E8EC;
  --jw-paper:#F7F9FC;
  --jw-ink:#16263B;
  --jw-line:#D9E2EC;
  --jw-shadow:0 14px 38px rgba(15,27,45,.09);
  color:var(--jw-ink);
  background:var(--jw-paper);
}
body {
  background:
    radial-gradient(circle at 12% 8%, rgba(30,58,107,.055), transparent 28%),
    linear-gradient(180deg,#f9fbfd 0%,#f3f6fa 100%);
  color:var(--jw-ink);
}
a { color:var(--jw-blue); }
.app-shell { grid-template-columns:268px minmax(0,1fr); background:#f4f7fb; }
.app-workspace { min-width:0; min-height:100vh; display:flex; flex-direction:column; }
.sidebar {
  position:sticky; top:0; height:100vh; overflow:auto;
  background:
    linear-gradient(180deg,rgba(255,255,255,.03),transparent 24%),
    linear-gradient(180deg,#142845 0%,var(--jw-navy) 100%);
  padding:20px 15px 16px; gap:14px;
  border-inline-end:1px solid rgba(200,157,74,.26);
  box-shadow:8px 0 28px rgba(15,27,45,.08);
}
.sidebar::after {
  content:""; position:absolute; inset:auto 0 0 0; height:90px; pointer-events:none;
  background:linear-gradient(155deg,transparent 0 48%,rgba(200,157,74,.16) 49% 51%,transparent 52%),
             linear-gradient(25deg,transparent 0 68%,rgba(63,129,190,.12) 69% 71%,transparent 72%);
}
.brand-lockup { display:block; padding:5px 7px 2px; border-radius:14px; }
.brand-lockup:hover { background:rgba(255,255,255,.045); }
.brand-logo { width:100%; max-width:215px; height:auto; display:block; filter:drop-shadow(0 5px 13px rgba(0,0,0,.16)); }
.brand-role { color:#d7e2ee; opacity:.72; font-size:10px; letter-spacing:1.35px; padding:0 10px 8px; direction:ltr; text-align:left; }
.sidebar nav { gap:5px; }
.sidebar nav a {
  position:relative; color:#e7edf4; padding:7px 9px; border-radius:11px; opacity:.94;
  border:1px solid transparent; transition:.16s ease; font-size:13px;
  display:flex; align-items:center; gap:10px; min-height:43px; text-decoration:none;
}
.sidebar nav a::before { display:none !important; content:none !important; }
.sidebar nav a.active,.sidebar nav a:hover {
  background:linear-gradient(90deg,rgba(30,86,151,.48),rgba(255,255,255,.07));
  border-color:rgba(255,255,255,.09); opacity:1; color:#fff;
  transform:translateX(-1px);
}
.nav-icon {
  width:30px; height:30px; flex:0 0 30px; border-radius:9px;
  display:inline-flex; align-items:center; justify-content:center;
  color:#f5c66e; background:linear-gradient(145deg,rgba(200,157,74,.24),rgba(200,157,74,.09));
  border:1px solid rgba(230,191,114,.22); box-shadow:0 3px 10px rgba(0,0,0,.16), inset 0 1px 0 rgba(255,255,255,.06);
  transition:.16s ease;
}
.nav-icon svg { width:19px; height:19px; display:block; fill:currentColor; stroke:none; }
.nav-icon svg .nav-icon-cut { fill:none; stroke:#142845; stroke-width:2.1; stroke-linecap:round; stroke-linejoin:round; }
.nav-icon svg .nav-icon-cut-fill { fill:#142845; }
.nav-label { min-width:0; line-height:1.25; font-weight:650; }
.sidebar nav a.active .nav-icon,.sidebar nav a:hover .nav-icon {
  color:#fff1c9; background:linear-gradient(145deg,#bd8c34,#8f6625);
  border-color:rgba(255,228,171,.55); box-shadow:0 5px 14px rgba(0,0,0,.22),0 0 0 3px rgba(200,157,74,.10);
  transform:scale(1.05);
}
.sidebar nav a.active .nav-icon svg .nav-icon-cut,.sidebar nav a:hover .nav-icon svg .nav-icon-cut { stroke:#3b2b12; }
.sidebar nav a.active .nav-icon svg .nav-icon-cut-fill,.sidebar nav a:hover .nav-icon svg .nav-icon-cut-fill { fill:#3b2b12; }
.sidebar-note { position:relative; z-index:1; margin-top:auto; padding:12px; border-top:1px solid rgba(255,255,255,.08); opacity:.88; }
.sidebar-user { color:#fff; font-weight:700; }
.link-button { color:#d8e5f3; }
.topbar {
  min-height:64px; display:flex; align-items:center; justify-content:space-between; gap:18px;
  padding:9px 28px; background:rgba(255,255,255,.88); backdrop-filter:blur(14px);
  border-bottom:1px solid #e0e7ef; position:sticky; top:0; z-index:35;
}
.topbar-product { display:flex; align-items:center; gap:9px; direction:ltr; }
.topbar-product img { width:37px; height:37px; }
.topbar-product strong,.topbar-product small { display:block; }
.topbar-product strong { color:var(--jw-navy); letter-spacing:1.4px; font-size:13px; }
.topbar-product small { color:#73849a; font-size:9px; margin-top:2px; }
.topbar-user { display:flex; align-items:center; gap:8px; color:#52657a; font-size:12px; }
.status-dot { width:7px; height:7px; border-radius:50%; background:var(--jw-teal); box-shadow:0 0 0 4px rgba(22,160,133,.12); }
.content { position:relative; isolation:isolate; flex:1; padding:27px 30px 38px; }
.content::before {
  content:""; position:fixed; z-index:-1; pointer-events:none; inset:18% 7% auto auto;
  width:min(570px,44vw); aspect-ratio:700/430;
  background:none; opacity:0;
}
h1 { color:var(--jw-navy); letter-spacing:-.3px; }
h2 { color:#243b58; }
.panel,.stat,.timetable-wrap,.report-action-card {
  border-color:var(--jw-line); box-shadow:0 6px 19px rgba(15,27,45,.035);
}
.panel { background:rgba(255,255,255,.94); }
.btn { border-color:#cbd7e3; color:var(--jw-blue); border-radius:9px; }
.btn.primary { background:linear-gradient(135deg,var(--jw-blue),#16335d); border-color:var(--jw-blue); box-shadow:0 6px 14px rgba(30,58,107,.16); }
.btn.success { background:var(--jw-teal); border-color:var(--jw-teal); }
input:focus,select:focus { outline:2px solid rgba(30,58,107,.32); border-color:#6a8db7; }
th { color:#40556f; background:#f2f5f9; }
.timetable thead th { background:#edf2f8; color:#1e3654; border-bottom:2px solid rgba(30,58,107,.18); }
.timetable th.sticky { background:#e8eef6; color:var(--jw-navy); }
.noninstruction-head,.noninstruction-cell { background:#fbf5e8 !important; color:#74591f !important; }
.lesson.selected { outline:3px solid var(--jw-gold); background:#fff9ec; }
.lesson.linked-block { outline-color:rgba(22,160,133,.34); }
.block-badge { background:#e7f7f3; color:#0b715e; }
.report-action-card { border-top:3px solid transparent; }
.report-action-card:hover { border-color:#a9bcd2; border-top-color:var(--jw-gold); box-shadow:var(--jw-shadow); }
.stat strong { color:var(--jw-navy); }

/* Login */
.public-content { min-height:100vh; padding:0; display:block; }
.login-stage {
  min-height:100vh; display:grid; grid-template-columns:minmax(360px,1.05fr) minmax(390px,.95fr);
  align-items:center; position:relative; overflow:hidden; padding:52px max(5vw,36px); gap:clamp(40px,7vw,110px);
  background:
    radial-gradient(circle at 12% 80%,rgba(22,160,133,.08),transparent 28%),
    radial-gradient(circle at 90% 10%,rgba(30,58,107,.12),transparent 31%),
    linear-gradient(135deg,#f9fbfd 0%,#eef3f8 100%);
}
.login-digital-bg { position:absolute; inset:0; pointer-events:none; opacity:.52; }
.login-digital-bg::before,.login-digital-bg::after { content:""; position:absolute; width:42vw; height:42vw; border:1px solid rgba(76,142,202,.12); transform:rotate(45deg); }
.login-digital-bg::before { left:-22vw; bottom:-24vw; box-shadow:30px -30px 0 rgba(30,58,107,.025),60px -60px 0 rgba(30,58,107,.02); }
.login-digital-bg::after { right:-26vw; top:-28vw; box-shadow:-30px 30px 0 rgba(200,157,74,.025),-60px 60px 0 rgba(30,58,107,.02); }
.login-brand-panel { position:relative; z-index:2; max-width:610px; direction:rtl; }
.login-hero-logo { width:min(500px,92%); display:block; margin-bottom:18px; direction:ltr; }
.login-kicker { direction:ltr; text-align:left; color:var(--jw-gold); font-size:11px; font-weight:800; letter-spacing:2.2px; margin:8px 0 24px; }
.login-brand-panel h2 { font-size:clamp(25px,3vw,40px); max-width:570px; margin-bottom:12px; }
.login-brand-panel p { max-width:560px; color:#60758c; font-size:15px; }
.login-trust-row { direction:ltr; display:flex; flex-wrap:wrap; gap:10px; margin-top:28px; }
.login-trust-row span { border:1px solid #d6e1ec; background:rgba(255,255,255,.72); border-radius:999px; padding:7px 11px; font-size:9px; font-weight:800; letter-spacing:1px; color:#48617c; }
.login-card {
  position:relative; z-index:3; width:min(430px,100%); justify-self:center; border:1px solid rgba(197,210,224,.88);
  background:rgba(255,255,255,.93); backdrop-filter:blur(16px); border-radius:22px; padding:32px;
  box-shadow:0 28px 65px rgba(15,27,45,.13); overflow:hidden;
}
.login-card::before { content:""; position:absolute; top:0; inset-inline:0; height:4px; background:linear-gradient(90deg,var(--jw-blue),var(--jw-gold),var(--jw-teal)); }
.login-card-mark { width:58px; height:58px; display:block; margin:0 auto 9px; }
.login-card-title { direction:ltr; text-align:center; margin-bottom:20px; }
.login-card-title strong,.login-card-title small { display:block; }
.login-card-title strong { letter-spacing:2.2px; color:var(--jw-navy); font-size:12px; }
.login-card-title small { color:#8a99aa; font-size:8px; letter-spacing:1.4px; margin-top:4px; }
.login-card h1 { text-align:center; font-size:25px; margin-bottom:5px; }
.login-card > .hint { text-align:center; margin-bottom:20px; }
.login-form { gap:10px; }
.login-form label { color:#435970; }
.login-form input { min-height:46px; background:#fbfcfe; }
.login-card-footer { direction:ltr; text-align:center; color:#95a2b1; font-size:9px; letter-spacing:.55px; margin-top:20px; padding-top:15px; border-top:1px solid #e7ecf1; }

/* Branded reports + real printed watermark */
.print-report { position:relative; isolation:isolate; background:#fff; overflow:hidden; }
.print-report > *:not(.report-watermark) { position:relative; z-index:1; }
.report-watermark {
  position:absolute; z-index:0; pointer-events:none; width:47%; max-width:610px; height:auto;
  left:50%; top:52%; transform:translate(-50%,-50%) rotate(-8deg); opacity:.27;
}
.report-brand-strip { direction:ltr; display:flex; align-items:center; justify-content:space-between; gap:15px; border-bottom:1px solid #e0e6ed; padding:5px 2px 7px; margin-bottom:7px; }
.report-brand-strip img { width:148px; max-height:43px; object-fit:contain; object-position:left center; }
.report-brand-strip span { color:#8190a2; font-size:9px; text-transform:uppercase; letter-spacing:1px; }
.report-brand-footer { direction:ltr; text-align:center; margin-top:6px; padding-top:5px; border-top:1px solid #e5e9ee; color:#8a97a6; font-size:8px; letter-spacing:.75px; }
.report-table { background:rgba(255,255,255,.88); }
.report-table th { background:#edf2f7; color:#263d59; }
.matrix-day { background:#e8eef6 !important; color:var(--jw-navy) !important; }
.matrix-period { background:#f6f1e7 !important; color:#705621 !important; }
.timetable-print-report { overflow:visible; }

@media (max-width:900px) {
  .app-shell { display:block; }
  .sidebar { position:static; height:auto; overflow:visible; }
  .brand-logo { max-width:190px; }
  .sidebar nav { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .topbar { padding:8px 17px; position:static; }
  .content { padding:18px; }
  .content::before { width:74vw; inset:30% 10% auto auto; opacity:.07; }
  .login-stage { grid-template-columns:1fr; padding:30px 18px; gap:25px; }
  .login-brand-panel { text-align:center; margin:auto; }
  .login-hero-logo { margin-inline:auto; }
  .login-kicker { text-align:center; }
  .login-trust-row { justify-content:center; }
}
@media (max-width:580px) {
  .sidebar nav { grid-template-columns:1fr; }
  .topbar-product small { display:none; }
  .login-brand-panel h2 { font-size:24px; }
  .login-card { padding:25px 20px; }
}

@media print {
  /* Keep the watermark as an IMG element, so it prints even when browser background graphics are disabled. */
  .topbar { display:none !important; }
  .content::before { display:none !important; }
  .print-report { overflow:visible !important; }
  .report-watermark {
    display:block !important; width:43% !important; max-width:none !important;
    left:50% !important; top:54% !important; transform:translate(-50%,-50%) rotate(-9deg) !important;
    opacity:.30 !important; filter:grayscale(1) !important;
  }
  .report-brand-strip { display:flex !important; margin:0 0 1.3mm !important; padding:0 0 1mm !important; border-bottom:.25mm solid #cfd6de !important; }
  .report-brand-strip img { width:33mm !important; height:auto !important; }
  .report-brand-strip span { font-size:4.5pt !important; color:#555 !important; }
  .report-brand-footer { display:block !important; margin-top:1.2mm !important; padding-top:.8mm !important; font-size:4.2pt !important; color:#666 !important; }
  .timetable-wrap { background:transparent !important; }
  .report-table,.timetable { background:rgba(255,255,255,.82) !important; }
  .report-table th,.timetable th { -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}


/* v0.4.3 — period/day structure management */
.period-create-panel{border-top:3px solid var(--jw-gold,#C89D4A)}
.section-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.period-create-form{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:.75rem;align-items:end}
.period-create-form label,.period-editor label{display:flex;flex-direction:column;gap:.3rem;font-weight:700;font-size:.86rem}
.period-create-form label small{font-weight:400;color:#667085}
.period-create-actions{display:flex;align-items:end}
.period-quick-help{display:flex;gap:.65rem;flex-wrap:wrap;margin-top:1rem}
.period-quick-help span{background:#f6f8fb;border:1px solid #e4e9f1;border-radius:10px;padding:.55rem .75rem;font-size:.83rem;color:#344054}
.period-count{background:#eef3f9;color:#1E3A6B;border-radius:999px;padding:.45rem .8rem;font-weight:800;font-size:.82rem}
.periods-table .period-sequence{min-width:74px;text-align:center}
.periods-table .period-sequence strong{display:block;font-size:1.15rem;color:#0F1B2D}
.periods-table .period-sequence span{display:inline-block;margin-top:.25rem;padding:.15rem .45rem;border-radius:999px;background:#edf2f7;color:#475467;font-size:.72rem}
.period-editor{display:grid;grid-template-columns:1.4fr .7fr 1fr .85fr .85fr auto;gap:.55rem;align-items:end}
.period-editor label span{font-size:.72rem;color:#667085;font-weight:700}
.period-order-actions{white-space:nowrap;text-align:center}
.period-order-actions form{display:inline-block;margin:0 .1rem}
.icon-btn{min-width:36px;font-size:1.05rem;padding:.35rem .55rem}
.period-delete-cell{text-align:center}
.period-row.period-kind-1 td:first-child{border-right:4px solid #C89D4A}
.period-row.period-kind-2 td:first-child{border-right:4px solid #16A085}
.period-row.period-kind-3 td:first-child,.period-row.period-kind-4 td:first-child{border-right:4px solid #98A2B3}
.period-row.period-kind-0 td:first-child{border-right:4px solid #1E3A6B}
button:disabled{opacity:.35;cursor:not-allowed}
@media(max-width:1100px){.period-create-form{grid-template-columns:repeat(3,minmax(140px,1fr))}.period-editor{grid-template-columns:repeat(3,minmax(130px,1fr))}}
@media(max-width:700px){.period-create-form,.period-editor{grid-template-columns:1fr 1fr}.period-create-actions{grid-column:1/-1}}

/* v0.4.4 — approved JW parent identity + product naming system */
.brand-logo { max-width:220px; margin-inline:auto; }
.topbar-product strong { color:var(--jw-gold); font-size:15px; font-weight:800; letter-spacing:0; }
.topbar-product small { direction:ltr; letter-spacing:.45px; }
.login-hero-logo { max-width:480px; }
.login-card-mark { object-fit:contain; }
.report-brand-strip img { object-fit:contain; }

.global-print-watermark { display:none; }
@media print {
  .global-print-watermark {
    display:block !important; position:fixed; z-index:-1; pointer-events:none;
    width:42%; left:50%; top:50%; transform:translate(-50%,-50%) rotate(-8deg);
    opacity:.24; filter:grayscale(1);
  }
}

/* ============================================================
   v0.4.4 — Approved JW master identity / product-name system
   The emblem never changes. Product name is injected below it.
   ============================================================ */
.app-workspace { position:relative; isolation:isolate; }
.content { z-index:1; }
.content::before { display:none !important; }

.jw-brand-lockup {
  width:100%; max-width:420px; display:flex; flex-direction:column; align-items:center;
  justify-content:center; direction:rtl; line-height:1; margin-inline:auto;
}
.jw-brand-lockup .jw-emblem {
  display:block; width:62%; max-width:285px; height:auto; object-fit:contain;
  filter:drop-shadow(0 8px 16px rgba(0,0,0,.13));
}
.jw-product-row { width:78%; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:14px; margin-top:2px; }
.jw-product-line { display:block; height:1.5px; background:linear-gradient(90deg,transparent,var(--jw-gold),transparent); }
.jw-product-name { color:var(--jw-gold); font-size:clamp(24px,3vw,40px); font-family:Tahoma,"Segoe UI",Arial,sans-serif; font-weight:700; line-height:1.15; white-space:nowrap; }
.jw-descriptor { margin-top:10px; direction:ltr; color:#64758a; font-size:10px; font-weight:700; letter-spacing:3.2px; white-space:nowrap; }
.jw-brand-lockup.theme-dark .jw-descriptor { color:#c1ccd9; }

/* Sidebar keeps the exact JW emblem with product name below it. */
.sidebar .jw-brand-lockup.compact { max-width:218px; }
.sidebar .jw-brand-lockup.compact .jw-emblem { width:66%; max-width:142px; }
.sidebar .jw-brand-lockup.compact .jw-product-row { width:92%; gap:8px; }
.sidebar .jw-brand-lockup.compact .jw-product-name { font-size:25px; }
.sidebar .jw-brand-lockup.compact .jw-descriptor { font-size:7px; letter-spacing:1.55px; margin-top:7px; }

/* Login hero */
.login-brand-panel .jw-brand-lockup.hero { max-width:480px; margin-inline:0 auto; }
.login-brand-panel .jw-brand-lockup.hero .jw-emblem { width:61%; max-width:300px; }
.login-brand-panel .jw-brand-lockup.hero .jw-product-name { font-size:42px; }
.login-brand-panel .jw-brand-lockup.hero .jw-descriptor { font-size:11px; letter-spacing:3.6px; }

/* Screen watermark: real emblem + dynamic product name. */
.app-watermark {
  position:fixed; z-index:0; pointer-events:none; right:6.5%; top:24%; width:min(460px,38vw);
  display:flex; flex-direction:column; align-items:center; opacity:.055; filter:grayscale(1);
  transform:rotate(-7deg); user-select:none;
}
.app-watermark img { width:72%; height:auto; }
.app-watermark strong { margin-top:-8px; color:#33465c; font:700 48px/1.1 Tahoma,"Segoe UI",Arial,sans-serif; }
.app-watermark span { margin-top:8px; color:#5e6f82; font:700 10px/1 Arial,sans-serif; letter-spacing:3px; direction:ltr; }

/* Printed reports use the same exact emblem and product-name placement. */
.report-watermark {
  position:absolute; z-index:0; pointer-events:none; left:50%; top:53%; width:47%; max-width:520px;
  transform:translate(-50%,-50%) rotate(-8deg); opacity:.10; filter:grayscale(1);
  display:flex; flex-direction:column; align-items:center; user-select:none;
}
.report-watermark img { width:76%; height:auto; }
.report-watermark strong { margin-top:-8px; color:#566475; font:700 54px/1.05 Tahoma,"Segoe UI",Arial,sans-serif; }
.report-watermark span { margin-top:8px; color:#6c7988; font:700 10px/1 Arial,sans-serif; letter-spacing:3px; direction:ltr; }

.report-brand-strip .jw-brand-lockup.compact { margin:0; width:112px; max-width:112px; }
.report-brand-strip .jw-brand-lockup.compact .jw-emblem { width:62px !important; max-width:62px !important; height:auto !important; }
.report-brand-strip .jw-brand-lockup.compact .jw-product-row { width:102px; gap:5px; margin-top:-2px; }
.report-brand-strip .jw-brand-lockup.compact .jw-product-name { font-size:15px; }
.report-brand-strip .jw-brand-lockup.compact .jw-product-line { height:1px; }

/* Product identity in top bar */
.topbar-product strong { color:var(--jw-gold); font-size:16px; font-family:Tahoma,"Segoe UI",Arial,sans-serif; font-weight:800; letter-spacing:0; }
.topbar-product small { color:#6b7d91; }

.global-print-watermark {
  display:none;
}

@media (max-width:900px) {
  .app-watermark { width:70vw; right:15%; top:35%; opacity:.035; }
  .login-brand-panel .jw-brand-lockup.hero { margin-inline:auto; }
  .sidebar .jw-brand-lockup.compact { max-width:205px; }
}

@media print {
  .app-watermark { display:none !important; }
  .report-watermark {
    display:flex !important; width:42% !important; max-width:none !important; left:50% !important; top:54% !important;
    transform:translate(-50%,-50%) rotate(-8deg) !important; opacity:.095 !important; filter:grayscale(1) !important;
  }
  .report-watermark img { width:74% !important; height:auto !important; }
  .report-watermark strong { font-size:28pt !important; color:#596675 !important; }
  .report-watermark span { font-size:5pt !important; letter-spacing:1.6pt !important; color:#6e7884 !important; }
  .report-brand-strip .jw-brand-lockup.compact { width:27mm !important; max-width:27mm !important; }
  .report-brand-strip .jw-brand-lockup.compact .jw-emblem { width:14mm !important; max-width:14mm !important; height:auto !important; }
  .report-brand-strip .jw-brand-lockup.compact .jw-product-row { width:25mm !important; gap:1.2mm !important; }
  .report-brand-strip .jw-brand-lockup.compact .jw-product-name { font-size:8pt !important; }
  .global-print-watermark {
    display:flex !important; position:fixed; z-index:-1; pointer-events:none; width:42%; left:50%; top:50%;
    transform:translate(-50%,-50%) rotate(-8deg); opacity:.09; filter:grayscale(1);
    flex-direction:column; align-items:center;
  }
  .global-print-watermark img { width:74% !important; height:auto !important; }
  .global-print-watermark strong { font:700 30pt/1 Tahoma,"Segoe UI",Arial,sans-serif; color:#5b6774; }
  .global-print-watermark span { margin-top:2mm; font:700 5pt/1 Arial,sans-serif; letter-spacing:1.6pt; color:#6f7a86; direction:ltr; }
}

/* v0.4.5 — branded WhatsApp contact signature */
.brand-contact,
.sidebar-contact {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  white-space:nowrap;
}
.brand-contact img,
.sidebar-contact img {
  width:15px;
  height:15px;
  flex:0 0 auto;
}
.brand-contact span,
.sidebar-contact span {
  direction:rtl;
}
.brand-contact strong,
.sidebar-contact strong {
  font-weight:800;
  letter-spacing:.25px;
}
.brand-footer-main { display:block; }
.report-brand-footer .brand-contact {
  margin-inline-start:10px;
  padding-inline-start:10px;
  border-inline-start:1px solid #d8dee6;
  vertical-align:middle;
}
.login-card-footer .brand-contact {
  margin-top:7px;
  color:#66778b;
  font-size:10px;
}
.login-card-footer .brand-contact img { width:16px; height:16px; }
.sidebar-contact {
  justify-content:flex-start;
  color:#dce7f1;
  font-size:11px;
  margin-top:2px;
}
.sidebar-contact img { width:16px; height:16px; }
.sidebar-contact strong { color:#fff; }
@media print {
  .report-brand-footer .brand-contact {
    display:inline-flex !important;
    margin-inline-start:2mm !important;
    padding-inline-start:2mm !important;
    border-inline-start:.2mm solid #bbb !important;
    font-size:4.2pt !important;
  }
  .report-brand-footer .brand-contact img {
    width:3mm !important;
    height:3mm !important;
    print-color-adjust:exact;
    -webkit-print-color-adjust:exact;
  }
}


/* v0.4.7 — clickable WhatsApp contact */
.whatsapp-link {
  text-decoration:none;
  cursor:pointer;
  transition:transform .15s ease, opacity .15s ease, background-color .15s ease, box-shadow .15s ease;
}
.whatsapp-link:hover {
  text-decoration:none;
  transform:translateY(-1px);
}
.sidebar-contact.whatsapp-link {
  color:#eaf3f8;
  border:1px solid rgba(22,160,133,.28);
  background:rgba(22,160,133,.08);
  padding:7px 9px;
  border-radius:9px;
  margin-top:8px;
}
.sidebar-contact.whatsapp-link:hover {
  color:#fff;
  background:rgba(22,160,133,.16);
  border-color:rgba(22,160,133,.48);
  box-shadow:0 6px 16px rgba(0,0,0,.10);
}
.brand-contact.whatsapp-link { color:inherit; font-weight:700; }
.login-card-footer .whatsapp-link:hover { color:#0f8f72; }
@media print {
  .whatsapp-link { color:inherit !important; text-decoration:none !important; }
}

/* v0.4.8 — clearer study-plan adjacency guidance */
.adjacency-help {
  display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px;
  margin:4px 0 2px; padding:11px 13px; border:1px solid #dce5ef; border-radius:11px;
  background:linear-gradient(135deg,#f8fbff,#f2f7fb); color:#344b66; font-size:12px;
}
.adjacency-help strong { color:var(--jw-navy); flex-basis:100%; }
.adjacency-help span { background:#fff; border:1px solid #e1e8f0; border-radius:8px; padding:5px 8px; }
.adjacency-help span b { color:#9b6e22; }
.adjacency-help small { color:#64788e; flex-basis:100%; }

/* v0.5.0 — plan-driven teacher assignments */
.plan-authority-panel { border-inline-start:4px solid var(--jw-gold,#c89d4a); }
.plan-authority-flow { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:8px 0 10px; }
.plan-authority-flow span { background:#f7fafc; border:1px solid #dbe4ee; border-radius:10px; padding:8px 11px; font-weight:700; color:#243a54; }
.plan-authority-flow b { color:#b9852d; }
.assignment-teacher-picker { display:flex; flex-wrap:wrap; align-items:end; gap:12px; }
.assignment-teacher-picker label { min-width:280px; flex:1; }
.assignment-picker-hint { flex-basis:100%; margin-top:-2px; }
.teacher-load-strip { display:flex; flex-wrap:wrap; gap:9px; margin-top:12px; }
.teacher-load-strip span { background:#f7fafc; border:1px solid #dbe4ee; border-radius:9px; padding:7px 10px; font-size:12px; }
.active-teacher-context {
  position:sticky; top:76px; z-index:22; margin:-4px 0 18px; padding:11px 14px;
  display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap;
  border:1px solid rgba(200,157,74,.48); border-inline-start:5px solid var(--jw-gold,#c89d4a); border-radius:13px;
  background:rgba(255,253,247,.97); box-shadow:0 10px 28px rgba(20,40,69,.12); backdrop-filter:blur(10px);
}
.active-teacher-context-main { display:flex; align-items:center; gap:10px; min-width:240px; }
.active-teacher-context-main strong { color:var(--jw-navy,#0f2f57); font-size:16px; }
.active-context-label { display:inline-flex; padding:4px 8px; border-radius:999px; background:#f4e7c8; color:#79571d; font-size:11px; font-weight:800; white-space:nowrap; }
.active-teacher-context-stats { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.active-teacher-context-stats span { background:#fff; border:1px solid #e3e7ec; border-radius:9px; padding:6px 9px; font-size:11px; color:#566b80; }
.active-teacher-context-stats b { color:#173653; }
.assignment-section-block { margin:16px 0 20px; border:1px solid #dce5ef; border-radius:13px; overflow:hidden; background:#fff; }
.assignment-section-block h3 { margin:0; padding:11px 14px; background:#f6f9fc; border-bottom:1px solid #dce5ef; color:#173653; }
.assignment-section-block h3 small { font-weight:500; color:#6d7f91; margin-inline-start:8px; }
.assignment-plan-table .choice-col { width:70px; text-align:center; }
.assignment-choice { width:19px; height:19px; accent-color:#b9852d; cursor:pointer; }
.plan-value-badge { display:inline-flex; min-width:32px; justify-content:center; padding:4px 8px; border-radius:999px; background:#edf4fb; color:#153b63; font-weight:800; }
.status-badge { display:inline-flex; align-items:center; gap:4px; padding:4px 8px; margin:2px; border-radius:999px; border:1px solid #d9e2ec; background:#f7f9fb; color:#566b80; font-size:11px; font-weight:700; }
.status-badge.available { background:#eef9f5; border-color:#bfe7d9; color:#15785f; }
.status-badge.ok { background:#eef9f5; border-color:#a9dccb; color:#116b56; }
.status-badge.assigned { background:#fff7e7; border-color:#ead09b; color:#8a611c; }
.status-badge.error { background:#fff0f0; border-color:#e8b4b4; color:#9d3434; }
.status-badge.plan-source { background:#f5f0e5; border-color:#dfc58f; color:#77531b; }
.assignment-conflict-row { background:#fff8f8; }
.sticky-save-bar { position:sticky; bottom:10px; z-index:5; margin-top:14px; display:flex; justify-content:space-between; align-items:center; gap:12px; padding:10px 12px; border:1px solid #d7e0ea; border-radius:12px; background:rgba(255,255,255,.96); box-shadow:0 8px 26px rgba(18,39,60,.10); backdrop-filter:blur(6px); }
@media (max-width:900px) {
  .active-teacher-context { top:8px; }
}
@media (max-width:760px) {
  .sticky-save-bar { position:static; flex-direction:column; align-items:stretch; }
  .assignment-teacher-picker label { min-width:100%; }
  .active-teacher-context { align-items:stretch; }
  .active-teacher-context-main { min-width:0; justify-content:space-between; }
  .active-teacher-context-stats { width:100%; }
}

/* v0.5.1 — per-class/day instructional capacity */
.section-capacity-panel { border-inline-start:4px solid var(--jw-teal,#16a085); }
.section-capacity-table th,
.section-capacity-table td { text-align:center; vertical-align:middle; }
.section-capacity-table td:first-child { text-align:start; min-width:150px; }
.capacity-grade { display:block; margin-top:3px; font-size:10px; }
.capacity-select { min-width:92px; padding:6px 8px; font-weight:700; }
.capacity-note { margin-top:12px; }
.section-closed-cell {
  background:repeating-linear-gradient(135deg,#f2f4f6,#f2f4f6 7px,#e9edf1 7px,#e9edf1 14px) !important;
  color:#7f8b97 !important;
}
.section-closed-label { font-size:10px; font-weight:800; color:#7b8793; white-space:nowrap; }
.section-closed-conflict { outline:2px solid #c86c57; outline-offset:-2px; }
.section-slot-warning { display:block; margin-bottom:4px; color:#9d3f31; font-weight:800; line-height:1.25; }
.section-closed-line { opacity:.62; background:#eef1f4; }
.section-closed-line.section-closed-conflict { opacity:1; background:#fff0eb; }
@media (max-width:900px) {
  .section-capacity-table { min-width:820px; }
}
@media print {
  .section-closed-cell,
  .section-closed-line {
    background:#eceff2 !important;
    print-color-adjust:exact;
    -webkit-print-color-adjust:exact;
  }
  .section-closed-conflict { outline:1pt solid #8c4a3f !important; }
}
.capacity-copy-select { min-width:118px; padding:6px 8px; border-style:dashed; color:#6e531f; font-weight:700; }

/* v0.5.2 — study-plan-driven automatic class day capacity */
.capacity-auto-rule { margin-bottom: .8rem; }
.capacity-auto-form { margin-bottom: 1rem; }
.manual-capacity-details { margin-top: .5rem; border-top: 1px solid rgba(15,27,45,.10); padding-top: .8rem; }
.manual-capacity-details > summary { cursor: pointer; width: fit-content; list-style: none; }
.manual-capacity-details > summary::-webkit-details-marker { display: none; }
.manual-capacity-details[open] > summary { margin-bottom: .8rem; }


/* v0.5.3 — approved master reports: classes across / teachers across */
.report-action-primary { border-top-color:var(--jw-gold,#c89d4a); background:linear-gradient(180deg,#fffdf8,#fff); }
.report-action-card span b { color:#263d59; }
.matrix-primary { display:block; font-weight:800; color:#142f4d; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.matrix-secondary { display:block; color:#53667b; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.matrix-legends { display:grid; gap:3px; margin-top:5px; }
.teacher-column-head span,.teacher-column-head small { display:block; margin:0; line-height:1.05; }
.teacher-column-head span { font-weight:800; }
.teacher-column-head small { color:#52667b; font-weight:600; }
.matrix-density-normal th,.matrix-density-normal td { font-size:9.5px; }
.matrix-density-normal td b { font-size:9.6px; }
.matrix-density-normal td small { font-size:8px; }
.matrix-density-dense th,.matrix-density-dense td { font-size:8.5px; }
.matrix-density-ultra th,.matrix-density-ultra td { font-size:7.8px; }
.matrix-density-ultra td b { font-size:7.9px; }
.matrix-density-ultra td small { font-size:6.9px; }
@media print {
  .matrix-density-normal th,.matrix-density-normal td { font-size:5.8pt !important; padding:.55mm .45mm !important; }
  .matrix-density-normal td b { font-size:6pt !important; }
  .matrix-density-normal td small { font-size:5.1pt !important; }
  .matrix-density-dense th,.matrix-density-dense td { font-size:4.9pt !important; padding:.43mm .32mm !important; }
  .matrix-density-dense td b { font-size:5.05pt !important; }
  .matrix-density-dense td small { font-size:4.35pt !important; }
  .matrix-density-ultra th,.matrix-density-ultra td { font-size:4.15pt !important; padding:.32mm .22mm !important; }
  .matrix-density-ultra td b { font-size:4.25pt !important; }
  .matrix-density-ultra td small { font-size:3.7pt !important; }
  .teacher-column-head span { font-size:inherit !important; }
  .teacher-column-head small { font-size:90% !important; margin-top:.15mm !important; color:#222 !important; }
  .matrix-legends { gap:.5mm !important; margin-top:1mm !important; }
  .matrix-legends .matrix-legend { margin-top:0 !important; }
}

/* v0.5.9 - teacher-centered assignment workspace */
.teacher-assignment-summary{border-inline-start:4px solid var(--gold,#c89d4a)}
.teacher-assignment-table tfoot th{background:#f5f7fa;font-weight:800}
.all-assignments-details>summary{cursor:pointer;padding:.35rem 0;font-size:1.02rem}
.all-assignments-details[open]>summary{margin-bottom:.75rem}
.assignment-teacher-picker select{min-width:min(100%,32rem)}

/* v0.6.0 - independent sixth/seventh fairness and flexible seventh rotation */

/* v0.6.4 — visible study plans + individual teacher distribution sheets */
.study-plans-browser { display:grid; gap:14px; }
.study-plan-card { border:1px solid #d9e2ec; border-radius:14px; background:#fff; overflow:hidden; }
.study-plan-card.active-plan { border-top:4px solid var(--jw-gold,#C89D4A); }
.study-plan-card-head { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding:14px 16px; background:#f8fafc; border-bottom:1px solid #e5eaf0; }
.study-plan-card-head h3 { margin:0 0 6px; color:#173a67; }
.study-plan-meta { display:flex; flex-wrap:wrap; gap:7px 14px; color:#617286; font-size:.86rem; }
.plan-active-badge { color:#176b4b; font-weight:800; }
.study-plan-full-table-wrap { max-height:560px; overflow:auto; }
.study-plan-full-table { width:100%; border-collapse:collapse; }
.study-plan-full-table th,.study-plan-full-table td { padding:8px 10px; border-bottom:1px solid #e8edf3; text-align:center; }
.study-plan-full-table th { position:sticky; top:0; z-index:1; background:#edf2f7; color:#263d59; }
.study-plan-full-table td:nth-child(1),.study-plan-full-table td:nth-child(2) { text-align:right; }

.teacher-report-toolbar { display:flex; align-items:end; gap:12px; flex-wrap:wrap; }
.teacher-report-toolbar label { min-width:300px; }
.individual-teacher-reports { display:grid; gap:22px; }
.individual-teacher-report { border:1px solid #dbe3ec; border-radius:12px; padding:12px; box-shadow:0 8px 22px rgba(15,27,45,.06); }
.teacher-sheet-title { margin-bottom:8px; }
.teacher-sheet-title h1 { font-size:17px; margin-bottom:3px; }
.teacher-sheet-title h2 { margin:0 0 3px; color:#173a67; font-size:21px; }
.teacher-sheet-title p { color:#617286; }
.teacher-sheet-summary { display:flex; justify-content:center; flex-wrap:wrap; gap:7px 18px; padding:7px 10px; margin:0 0 9px; border:1px solid #e1e7ee; border-radius:9px; background:#f8fafc; font-size:12px; }
.individual-teacher-table { table-layout:fixed; }
.individual-teacher-table th,.individual-teacher-table td { height:63px; }
.individual-teacher-table thead th small { display:block; font-size:8px; color:#69798c; margin-top:2px; }
.teacher-sheet-day-col { width:78px; }
.teacher-sheet-day { background:#eaf0f7 !important; color:#173a67 !important; font-weight:800; }
.individual-teacher-table td strong,.individual-teacher-table td span { display:block; }
.individual-teacher-table td strong { color:#173a67; font-size:12px; }
.individual-teacher-table td span { margin-top:4px; font-size:10px; color:#5d6f83; }
.teacher-sheet-teaching { background:rgba(255,255,255,.90); }
.teacher-sheet-waiting { background:#fff8e8 !important; }
.teacher-sheet-waiting strong { color:#8a6114 !important; }
.teacher-sheet-note { margin-top:7px; color:#7a8795; font-size:9px; text-align:center; }

@media print {
  .study-plan-card { break-inside:auto !important; box-shadow:none !important; }
  .study-plan-full-table-wrap { max-height:none !important; overflow:visible !important; }
  .study-plan-full-table th { position:static !important; }
  .individual-teacher-reports { display:block !important; }
  .individual-teacher-report { border:0 !important; border-radius:0 !important; padding:0 !important; box-shadow:none !important; }
  .individual-teacher-table th,.individual-teacher-table td { height:19mm !important; padding:1.2mm !important; font-size:8pt !important; }
  .individual-teacher-table td strong { font-size:8pt !important; }
  .individual-teacher-table td span { font-size:7pt !important; margin-top:.7mm !important; }
  .teacher-sheet-day-col { width:18mm !important; }
  .teacher-sheet-title h1 { font-size:11pt !important; }
  .teacher-sheet-title h2 { font-size:14pt !important; margin:0 !important; }
  .teacher-sheet-title p { font-size:7pt !important; }
  .teacher-sheet-summary { margin:1.2mm 0 2mm !important; padding:1mm !important; font-size:7pt !important; border:.2mm solid #cfd6de !important; }
  .teacher-sheet-note { font-size:5pt !important; margin-top:1.5mm !important; }
}

/* v0.6.5 — economical distribution sheets: four teacher/section timetables per A4 landscape page */
.distribution-report-pages{display:grid;gap:18px}
.distribution-print-page{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.distribution-print-page.distribution-one-up{grid-template-columns:1fr}
.distribution-sheet{border:1px dashed #aeb8c4;border-radius:8px;padding:8px;box-shadow:0 5px 16px rgba(15,27,45,.05);min-width:0}
.distribution-brand-row{display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid #dce3ea;padding-bottom:4px;margin-bottom:4px}
.distribution-brand-row .jw-brand-lockup{transform-origin:right center}
.distribution-brand-row span{font-size:9px;color:#8a6728;font-weight:800}
.distribution-sheet-title{text-align:center;margin:0 0 4px;line-height:1.1}
.distribution-sheet-title strong{display:block;font-size:10px;color:#52657b}
.distribution-sheet-title h2{margin:2px 0;font-size:16px;color:#173a67}
.distribution-sheet-title small{display:block;font-size:8px;color:#6d7d8f}
.distribution-summary{display:flex;justify-content:center;gap:5px 11px;flex-wrap:wrap;margin:3px 0 5px;font-size:8px;color:#45596f}
.distribution-summary span{white-space:nowrap}
.distribution-mini-table{width:100%;border-collapse:collapse;table-layout:fixed;background:rgba(255,255,255,.88)}
.distribution-mini-table th,.distribution-mini-table td{border:1px solid #cfd8e2;text-align:center;vertical-align:middle;padding:2px;height:36px;font-size:8px;line-height:1.05;overflow:hidden}
.distribution-mini-table thead th{background:#edf2f7;color:#213a56;font-weight:800}
.distribution-mini-table tbody th{background:#f3f6f9;color:#24405f;font-weight:800}
.distribution-mini-table td b,.distribution-mini-table td small{display:block;overflow:hidden;text-overflow:ellipsis}
.distribution-mini-table td b{font-size:8px;white-space:nowrap;color:#173a67}
.distribution-mini-table td small{font-size:7px;margin-top:2px;color:#5d6f83;white-space:nowrap}
.distribution-day-col{width:54px}
.distribution-waiting{background:#fff7e3!important}
.distribution-waiting b{color:#8a6114!important}
.distribution-outside{background:#eef1f4!important;color:#8b949e!important}
.outside-label{font-size:7px;font-weight:700}
.distribution-sheet-footer{text-align:center;margin-top:4px;padding-top:3px;border-top:1px solid #e2e7ed;color:#7a8795;font-size:7px}
.distribution-one-up .distribution-sheet{max-width:100%;padding:12px}
.distribution-one-up .distribution-mini-table th,.distribution-one-up .distribution-mini-table td{height:62px;font-size:10px;padding:5px}
.distribution-one-up .distribution-mini-table td b{font-size:11px}
.distribution-one-up .distribution-mini-table td small{font-size:9px}
.distribution-one-up .distribution-sheet-title h2{font-size:22px}

@media print{
  @page{size:A4 landscape;margin:4mm}
  .distribution-report-pages{display:block!important}
  .distribution-print-page{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr))!important;gap:0!important;width:100%!important;height:202mm!important;margin:0!important;break-after:page!important;page-break-after:always!important}
  .distribution-print-page:last-child{break-after:auto!important;page-break-after:auto!important}
  .distribution-sheet{height:101mm!important;min-height:0!important;box-sizing:border-box!important;border:.22mm dashed #8f98a3!important;border-radius:0!important;padding:1.5mm!important;box-shadow:none!important;overflow:hidden!important;break-inside:avoid!important;page-break-inside:avoid!important}
  .distribution-sheet .report-watermark{width:30%!important;opacity:.12!important}
  .distribution-brand-row{height:7mm!important;margin:0 0 .7mm!important;padding:0 0 .6mm!important;border-bottom:.18mm solid #cfd6de!important}
  .distribution-brand-row .jw-brand-lockup{transform:scale(.68)!important;transform-origin:right center!important;max-width:34mm!important}
  .distribution-brand-row span{font-size:4.6pt!important}
  .distribution-sheet-title{margin:0 0 .7mm!important}
  .distribution-sheet-title strong{font-size:5.5pt!important}
  .distribution-sheet-title h2{font-size:8.6pt!important;margin:.3mm 0!important}
  .distribution-sheet-title small{font-size:4.7pt!important}
  .distribution-summary{margin:.6mm 0 .9mm!important;gap:.6mm 2mm!important;font-size:4.7pt!important;line-height:1!important}
  .distribution-mini-table{width:100%!important;table-layout:fixed!important}
  .distribution-mini-table th,.distribution-mini-table td{height:11mm!important;padding:.35mm!important;font-size:5.2pt!important;line-height:1.02!important;color:#000!important}
  .distribution-mini-table td b{font-size:5.4pt!important;white-space:nowrap!important}
  .distribution-mini-table td small{font-size:4.6pt!important;margin-top:.35mm!important;white-space:nowrap!important;color:#333!important}
  .distribution-mini-table thead th,.distribution-mini-table tbody th{print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}
  .distribution-day-col{width:13mm!important}
  .distribution-outside{background:#eceff2!important;print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}
  .outside-label{font-size:4.5pt!important}
  .distribution-sheet-footer{margin-top:.6mm!important;padding-top:.4mm!important;font-size:4.2pt!important;line-height:1!important}

  .distribution-print-page.distribution-one-up{display:block!important;height:auto!important}
  .distribution-one-up .distribution-sheet{height:auto!important;min-height:194mm!important;border:0!important;padding:0!important}
  .distribution-one-up .distribution-brand-row{height:auto!important}
  .distribution-one-up .distribution-brand-row .jw-brand-lockup{transform:none!important;max-width:none!important}
  .distribution-one-up .distribution-sheet-title strong{font-size:9pt!important}
  .distribution-one-up .distribution-sheet-title h2{font-size:14pt!important}
  .distribution-one-up .distribution-sheet-title small{font-size:7pt!important}
  .distribution-one-up .distribution-summary{font-size:7pt!important;margin:1.2mm 0 2mm!important}
  .distribution-one-up .distribution-mini-table th,.distribution-one-up .distribution-mini-table td{height:19mm!important;padding:1.2mm!important;font-size:8pt!important}
  .distribution-one-up .distribution-mini-table td b{font-size:8pt!important}
  .distribution-one-up .distribution-mini-table td small{font-size:7pt!important;margin-top:.7mm!important}
  .distribution-one-up .distribution-day-col{width:18mm!important}
  .distribution-one-up .distribution-sheet-footer{font-size:5pt!important;margin-top:1.5mm!important}
}

/* v0.6.8 duty constraints */
.inline-duty-form{display:flex;flex-wrap:wrap;align-items:end;gap:.45rem;min-width:520px}.inline-duty-form label{margin:0}.inline-duty-form input[type=number]{width:84px}.inline-duty-form .check{white-space:nowrap}

/* v0.6.9 — compact 4-up reports: branding must never cover teacher/section names. */
.distribution-mini-logo{display:block;width:26px;height:26px;object-fit:contain;flex:0 0 auto}
.compact-report-brand{justify-content:space-between;min-height:0}
.compact-report-brand + .distribution-sheet-title{position:relative;z-index:2}

@media print{
  .distribution-four-up .report-watermark{display:none!important}
  .distribution-four-up .distribution-brand-row{height:5mm!important;margin:0 0 .5mm!important;padding:0 0 .35mm!important;overflow:hidden!important}
  .distribution-four-up .distribution-mini-logo{width:4.3mm!important;height:4.3mm!important;object-fit:contain!important}
  .distribution-four-up .distribution-brand-row span{font-size:4.2pt!important;line-height:1!important}
  .distribution-four-up .distribution-sheet-title{margin:.15mm 0 .65mm!important;min-height:8mm!important;display:flex!important;flex-direction:column!important;justify-content:center!important}
  .distribution-four-up .distribution-sheet-title h2{position:relative!important;z-index:3!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;padding:0 .5mm!important}
}


/* v0.7.0 — school identity, stronger contact and destructive-action confirmation */
.school-dashboard-identity {
  display:flex; align-items:center; gap:10px; width:max-content; max-width:100%;
  margin:0 0 14px; padding:9px 13px; border:1px solid #d7e2ee; border-radius:12px;
  background:linear-gradient(135deg,#fff,#f5f8fc); box-shadow:0 5px 16px rgba(25,55,90,.05);
}
.school-dashboard-identity span { color:#77889b; font-size:11px; font-weight:700; }
.school-dashboard-identity strong { color:var(--jw-navy,#173a67); font-size:17px; line-height:1.2; }
.sidebar-contact.whatsapp-link {
  opacity:1; font-size:12px; font-weight:700; border-color:rgba(34,197,94,.55);
  background:rgba(34,197,94,.17); padding:9px 10px; box-shadow:0 5px 14px rgba(0,0,0,.10);
}
.sidebar-contact.whatsapp-link img { width:19px; height:19px; }
.sidebar-contact.whatsapp-link strong { font-size:12px; }
.confirm-dialog { border:0; padding:0; border-radius:14px; max-width:520px; width:calc(100% - 28px); box-shadow:0 22px 70px rgba(12,30,55,.28); }
.confirm-dialog::backdrop { background:rgba(10,25,45,.48); }
.confirm-dialog-body { padding:22px; }
.confirm-dialog-body h2 { margin-bottom:9px; color:#8f2626; }
.confirm-dialog-body p { color:#4f6176; }
.confirm-dialog-actions { display:flex; justify-content:flex-end; gap:9px; margin-top:20px; }
.confirm-dialog-actions form { margin:0; }
@media (max-width:600px) {
  .school-dashboard-identity { width:100%; }
  .confirm-dialog-actions { flex-direction:column-reverse; }
  .confirm-dialog-actions .btn { width:100%; }
}
.sidebar-note { opacity:1; }
.sidebar-note > .sidebar-user,
.sidebar-note > small,
.sidebar-note > form { opacity:.82; }
.brand-contact.whatsapp-link { opacity:1; font-weight:700; }
.login-card-footer .brand-contact.whatsapp-link {
  color:#0f6f5d; font-size:11.5px; padding:6px 9px; border:1px solid #cce9df;
  border-radius:8px; background:#f3fbf8;
}

/* v0.7.2 — per-version adjacency detach/relink */
.block-action-confirm{display:flex;align-items:center;justify-content:space-between;gap:18px;border-inline-start:4px solid #b7791f}
.block-action-confirm p{margin:.35rem 0 0;color:#586b82;max-width:850px}
.lesson.detached-block{outline:2px dashed rgba(183,121,31,.42);outline-offset:-2px}
.detached-block-badge{display:block;margin:.18rem auto 0;padding:.12rem .35rem;border-radius:999px;background:#fff7db;color:#8a5a00;font-weight:800;font-size:.72rem;width:max-content;max-width:100%}
@media (max-width:900px){.block-action-confirm{align-items:flex-start;flex-direction:column}}
@media print{.detached-block-badge{background:transparent!important;border:0!important;color:#111!important;padding:0}}


/* v0.7.3 — direct adjacency controls inside timetable cells */
.block-inline-action{display:block;width:calc(100% - .45rem);margin:.28rem auto 0;padding:.28rem .38rem;border-radius:7px;border:1px solid #d6dee8;background:#fff;font-size:.74rem;font-weight:800;cursor:pointer;line-height:1.25}
.block-inline-action.detach{border-color:#d9b56c;background:#fffaf0;color:#7b5200}
.block-inline-action.relink{border-color:#8dc7b7;background:#f1fbf7;color:#126451}
.block-inline-action:hover{filter:brightness(.98);transform:translateY(-1px)}
@media print{.block-inline-action{display:none!important}}


/* v0.7.4 — keep adjacency actions inside the visible timetable cell */
.lesson-cell-stack{display:flex;flex-direction:column;gap:.22rem;width:100%;height:100%;min-height:0;align-items:stretch;justify-content:center}
.lesson-cell-stack.has-adjacency-action{justify-content:flex-start}
.lesson-cell-stack.has-adjacency-action .lesson{height:auto;min-height:54px;flex:1 1 auto;padding:4px 3px}
.lesson-cell-stack.has-adjacency-action .block-badge,.lesson-cell-stack.has-adjacency-action .detached-block-badge{font-size:.66rem;margin-top:.08rem}
.lesson-cell-stack.has-adjacency-action .drag-handle{font-size:.65rem}
.lesson-cell-stack .block-inline-action{flex:0 0 auto;width:100%;margin:0;padding:.22rem .3rem;min-height:25px;position:relative;z-index:3}
.lesson-cell-stack .cell-edit-link{margin-top:0}
.drag-timetable td:has(.lesson-cell-stack.has-adjacency-action){height:118px}
@media print{.lesson-cell-stack{display:block!important;height:auto!important}.lesson-cell-stack .lesson{height:auto!important;min-height:0!important}}


/* v0.7.5 — keep adjacency confirmation visible at the current scroll position */
.block-action-confirm{
  position:fixed;
  top:20px;
  left:50%;
  transform:translateX(-50%);
  width:min(920px,calc(100vw - 32px));
  max-height:calc(100vh - 40px);
  overflow:auto;
  z-index:10050;
  background:#fff;
  border:1px solid #e6c878;
  box-shadow:0 18px 50px rgba(15,27,45,.28);
}
.block-action-confirm::before{content:"";position:fixed;inset:0;z-index:-1;background:rgba(15,27,45,.28);pointer-events:none}
@media (max-width:900px){.block-action-confirm{top:10px;width:calc(100vw - 20px);max-height:calc(100vh - 20px)}}


/* v0.7.6 — native server-post adjacency actions; independent of Blazor circuit */
.block-inline-form{display:block;width:100%;margin:0;padding:0}
.block-inline-form .block-inline-action{width:100%;margin:0}


/* ============================================================
   v0.7.7 — Approved master visual identity / Jadwali product
   Gold J + silver W sailboat, deep navy digital-ocean language.
   ============================================================ */
:root {
  --jw-navy:#071b35;
  --jw-blue:#123f72;
  --jw-gold:#d3a54c;
  --jw-gold-strong:#e2b760;
  --jw-silver:#c9d0d9;
  --jw-paper:#f5f8fc;
}

body { background:#f3f6fa; }

/* Master shell */
.sidebar {
  background:
    radial-gradient(circle at 18% 8%,rgba(211,165,76,.14),transparent 26%),
    linear-gradient(180deg,#0b2b51 0%,#071b35 54%,#06162a 100%);
  border-inline-start:1px solid rgba(211,165,76,.20);
  box-shadow:-14px 0 32px rgba(6,22,42,.10) inset;
}
.sidebar nav a {
  position:relative; border:1px solid transparent; opacity:.88;
  transition:background .16s ease,border-color .16s ease,opacity .16s ease,transform .16s ease;
}
.sidebar nav a.active,
.sidebar nav a:hover {
  background:linear-gradient(90deg,rgba(211,165,76,.16),rgba(255,255,255,.07));
  border-color:rgba(211,165,76,.18); opacity:1;
}
.sidebar nav a.active::after {
  content:""; position:absolute; inset-block:9px; inset-inline-end:2px; width:3px;
  border-radius:4px; background:linear-gradient(180deg,#f0c46c,#b98428);
  box-shadow:0 0 12px rgba(211,165,76,.30);
}
.sidebar-note { opacity:.88; color:#c7d3df; }
.sidebar-note > small { color:#8fa2b7; }
.sidebar-user { color:#f3f6fa; font-weight:800; }
.topbar {
  background:rgba(255,255,255,.94);
  border-bottom:1px solid rgba(211,165,76,.28);
  box-shadow:0 8px 24px rgba(7,27,53,.045);
  backdrop-filter:blur(12px);
}
.topbar-product img {
  width:42px; height:42px; object-fit:contain;
  filter:drop-shadow(0 4px 9px rgba(7,27,53,.12));
}
.topbar-product strong { color:#9f7424; }
.topbar-product small { color:#6f8094; }

/* Parent emblem + product label. The product is visually separate from the master mark. */
.jw-brand-lockup {
  width:100%; max-width:420px; display:flex; flex-direction:column;
  align-items:center; justify-content:center; direction:rtl; line-height:1; margin-inline:auto;
}
.jw-brand-lockup .jw-emblem {
  display:block; width:74%; max-width:318px; height:auto; object-fit:contain;
  filter:drop-shadow(0 10px 20px rgba(2,13,28,.20));
}
.jw-product-row {
  width:72%; display:flex; flex-direction:row; align-items:center; justify-content:flex-start;
  gap:10px; margin-top:4px; direction:rtl;
}
.jw-product-name {
  color:var(--jw-gold-strong); font-size:clamp(23px,2.8vw,39px);
  font-family:Tahoma,"Segoe UI",Arial,sans-serif; font-weight:700;
  line-height:1.1; white-space:nowrap; text-shadow:0 2px 7px rgba(7,27,53,.14);
}
.jw-product-line {
  display:block; flex:1; height:1px;
  background:linear-gradient(90deg,transparent,rgba(211,165,76,.75));
}
.jw-descriptor {
  width:72%; margin-top:8px; direction:ltr; text-align:right;
  color:#718399; font-size:9px; font-weight:700; letter-spacing:2.4px; white-space:nowrap;
}
.jw-brand-lockup.theme-dark .jw-descriptor { color:#91a4b8; }

.sidebar .jw-brand-lockup.compact { max-width:218px; margin-top:-4px; }
.sidebar .jw-brand-lockup.compact .jw-emblem { width:76%; max-width:154px; }
.sidebar .jw-brand-lockup.compact .jw-product-row { width:78%; margin-top:1px; }
.sidebar .jw-brand-lockup.compact .jw-product-name { font-size:22px; }
.sidebar .jw-brand-lockup.compact .jw-descriptor { width:78%; font-size:6.5px; letter-spacing:1.25px; margin-top:6px; }

/* corporate mark first; Jadwale/Jadwali is a lateral product label. */
.sidebar .jw-brand-lockup.compact.lateral { max-width:232px; align-items:stretch; margin-top:-4px; }
.sidebar .jw-brand-lockup.compact.lateral .jw-lateral-main {
  display:grid; grid-template-columns:minmax(94px,1.18fr) minmax(76px,.82fr);
  align-items:end; gap:7px; width:100%; direction:ltr;
}
.sidebar .jw-brand-lockup.compact.lateral .jw-emblem {
  width:100%; max-width:142px; justify-self:end; margin:0;
}
.sidebar .jw-brand-lockup.compact.lateral .jw-lateral-product {
  align-self:end; padding-bottom:10px; text-align:left; direction:ltr; min-width:0;
}
.sidebar .jw-brand-lockup.compact.lateral .jw-latin-name {
  display:block; color:#d3a54c; font:700 13px/1.05 Arial,"Segoe UI",sans-serif;
  letter-spacing:2.2px; white-space:nowrap;
}
.sidebar .jw-brand-lockup.compact.lateral .jw-arabic-name {
  display:block; margin-top:5px; color:#d3a54c; font:700 18px/1.05 Tahoma,"Segoe UI",Arial,sans-serif;
  text-align:right; direction:rtl; white-space:nowrap;
}
.sidebar .jw-brand-lockup.compact.lateral .jw-descriptor {
  width:100%; margin-top:4px; text-align:center; font-size:6.1px; letter-spacing:1.35px;
}

/* Login: use the approved full identity artwork, while the login card remains clean. */
.login-stage {
  background:
    radial-gradient(circle at 8% 70%,rgba(211,165,76,.11),transparent 28%),
    radial-gradient(circle at 88% 15%,rgba(18,63,114,.20),transparent 34%),
    linear-gradient(135deg,#07182f 0%,#0a2b50 58%,#071b35 100%);
}
.login-digital-bg { opacity:.16; }
.login-brand-panel { max-width:700px; }
.login-identity-hero {
  display:block; width:min(720px,100%); max-height:485px; object-fit:contain;
  object-position:center; border-radius:18px;
  filter:drop-shadow(0 26px 48px rgba(0,0,0,.24));
}
.login-brand-panel h2 { color:#f4f7fb; margin-top:18px; }
.login-brand-panel p { color:#b3c3d4; }
.login-trust-row span {
  color:#dce7f1; border-color:rgba(211,165,76,.24);
  background:rgba(7,27,53,.34); backdrop-filter:blur(8px);
}
.login-card {
  border-color:rgba(211,165,76,.23);
  box-shadow:0 30px 72px rgba(1,12,26,.30);
}
.login-card::before {
  background:linear-gradient(90deg,#123f72,#d3a54c,#c9d0d9);
}
.login-card-mark { width:66px; height:66px; }
.login-card-title strong { color:#9f7424; letter-spacing:2.8px; }

/* Screen watermark: ownership signal, not decoration. */
.app-watermark {
  position:fixed; z-index:0; pointer-events:none;
  right:8%; top:28%; width:min(390px,32vw);
  display:flex; flex-direction:column; align-items:center;
  opacity:.033; filter:grayscale(.55); transform:rotate(-5deg);
  user-select:none;
}
.app-watermark img { width:78%; height:auto; }
.app-watermark .jw-watermark-meta {
  width:78%; display:flex; align-items:center; justify-content:space-between;
  gap:10px; margin-top:-2px; color:#203a58;
}
.app-watermark strong { color:#203a58; font:700 30px/1 Tahoma,"Segoe UI",Arial,sans-serif; }
.app-watermark span { color:#203a58; font:600 9px/1 Tahoma,"Segoe UI",Arial,sans-serif; letter-spacing:0; direction:rtl; }

/* Printed watermark deliberately small/faint so it never obscures teacher/class names. */
.report-watermark {
  position:absolute; z-index:0; pointer-events:none; left:50%; top:55%;
  width:30%; max-width:330px; transform:translate(-50%,-50%) rotate(-6deg);
  opacity:.055; filter:grayscale(1); display:flex; flex-direction:column;
  align-items:center; user-select:none;
}
.report-watermark img { width:78%; height:auto; }
.report-watermark .jw-watermark-meta {
  width:78%; display:flex; align-items:center; justify-content:center; gap:8px; margin-top:-2px;
}
.report-watermark strong { color:#4f5c6a; font:700 24px/1 Tahoma,"Segoe UI",Arial,sans-serif; }
.report-watermark span { color:#4f5c6a; font:600 7px/1 Tahoma,"Segoe UI",Arial,sans-serif; direction:rtl; }

/* Report header uses the same parent emblem and product label without overpowering data. */
.report-brand-strip .jw-brand-lockup.compact { margin:0; width:122px; max-width:122px; }
.report-brand-strip .jw-brand-lockup.compact .jw-emblem { width:74px !important; max-width:74px !important; height:auto !important; }
.report-brand-strip .jw-brand-lockup.compact .jw-product-row { width:105px; gap:5px; margin-top:-1px; }
.report-brand-strip .jw-brand-lockup.compact .jw-product-name { font-size:14px; }
.report-brand-strip .jw-brand-lockup.compact .jw-descriptor { display:none; }
.report-brand-footer { color:#748294; }
.brand-footer-main { color:inherit; }

/* Keep the economic four-up layouts especially clean. */
.distribution-sheet .report-watermark,
.four-up-sheet .report-watermark,
.economic-report .report-watermark {
  width:20% !important; opacity:.038 !important;
}

@media (max-width:900px) {
  .login-stage { grid-template-columns:1fr; }
  .login-identity-hero { width:min(680px,100%); margin-inline:auto; }
  .app-watermark { width:58vw; right:21%; opacity:.024; }
}
@media (max-width:580px) {
  .login-identity-hero { max-height:330px; }
  .sidebar .jw-brand-lockup.compact .jw-emblem { max-width:138px; }
}
@media (max-width:580px) {
  .sidebar .jw-brand-lockup.compact.lateral .jw-lateral-main { grid-template-columns:minmax(82px,1.15fr) minmax(70px,.85fr); gap:5px; }
  .sidebar .jw-brand-lockup.compact.lateral .jw-emblem { max-width:128px; }
  .sidebar .jw-brand-lockup.compact.lateral .jw-latin-name { font-size:11px; letter-spacing:1.8px; }
  .sidebar .jw-brand-lockup.compact.lateral .jw-arabic-name { font-size:16px; }
}

@media print {
  .report-watermark {
    display:flex !important; width:27% !important; max-width:none !important;
    left:50% !important; top:56% !important;
    transform:translate(-50%,-50%) rotate(-6deg) !important;
    opacity:.05 !important; filter:grayscale(1) !important;
  }
  .report-watermark img { width:78% !important; height:auto !important; }
  .report-watermark strong { font-size:14pt !important; color:#5f6974 !important; }
  .report-watermark span { font-size:4.3pt !important; color:#68727d !important; }
  .global-print-watermark {
    display:flex !important; position:fixed; z-index:-1; pointer-events:none;
    width:28%; left:50%; top:54%; transform:translate(-50%,-50%) rotate(-6deg);
    opacity:.045; filter:grayscale(1); flex-direction:column; align-items:center;
  }
  .global-print-watermark img { width:78% !important; height:auto !important; }
  .global-print-watermark .jw-watermark-meta { width:78%; display:flex; justify-content:center; gap:2mm; }
  .global-print-watermark strong { font:700 15pt/1 Tahoma,"Segoe UI",Arial,sans-serif; color:#5f6974; }
  .global-print-watermark span { font:600 4.5pt/1 Tahoma,"Segoe UI",Arial,sans-serif; color:#68727d; direction:rtl; }
}

/* v0.7.8 — teacher-centric live editing */
.teacher-edit-toolbar{align-items:end}
.teacher-edit-report .print-report-title{margin-bottom:.55rem}
.teacher-edit-summary{display:flex;gap:.55rem;flex-wrap:wrap;margin:0 0 .65rem}
.teacher-edit-summary span{background:#f8fafc;border:1px solid #dbe4ef;border-radius:999px;padding:.32rem .65rem;font-size:.8rem}
.teacher-timetable .lesson span{font-weight:700;color:#31516f}
.teacher-waiting-cell{background:#fffaf0}
.teacher-waiting-badge{display:flex;flex-direction:column;gap:.12rem;align-items:center;justify-content:center;min-height:54px;color:#8a5a00}
.teacher-waiting-badge small{font-size:.65rem;color:#8c6a2d;text-align:center}
.cell-edit-actions{display:flex;gap:.28rem;justify-content:center;align-items:center;flex-wrap:wrap}
.cell-edit-actions .cell-edit-link{display:inline-flex;padding:.12rem .28rem;border-radius:.35rem;background:#f8fafc;border:1px solid #dbe4ef;font-size:.68rem}
@media print{
  .teacher-edit-summary{display:none!important}
  .teacher-waiting-cell{background:transparent!important}
}

/* v0.7.9 — readable A4 school-wide master report */
@media print {
  .school-master-report.one-page-matrix {
    width:100% !important;
    break-inside:avoid !important;
    page-break-inside:avoid !important;
  }
  .school-master-report.multi-page-matrix {
    break-inside:auto !important;
    page-break-inside:auto !important;
    overflow:visible !important;
  }
  .school-master-report.multi-page-matrix .school-master-table thead {
    display:table-header-group !important;
  }
  .school-master-report.multi-page-matrix .school-master-table tr {
    break-inside:avoid !important;
    page-break-inside:avoid !important;
  }

  .school-master-report .compact-title { margin-bottom:1.2mm !important; }
  .school-master-report .compact-title h1 { font-size:10.5pt !important; line-height:1.05 !important; }
  .school-master-report .compact-title p { font-size:6.2pt !important; margin-top:.6mm !important; }
  .school-master-report .report-brand-strip { margin-bottom:.8mm !important; padding-bottom:.6mm !important; }
  .school-master-report .school-master-table { width:100% !important; table-layout:fixed !important; }
  .school-master-report .school-master-table th,
  .school-master-report .school-master-table td { padding:.35mm !important; }
  .school-master-report .school-master-table .period-col { width:7mm !important; }
  .school-master-report .school-master-cell { padding:.2mm !important; vertical-align:top !important; }
  .school-master-report .school-master-line {
    grid-template-columns:9mm minmax(0,1fr) 8mm !important;
    gap:.35mm !important;
    line-height:1.02 !important;
    padding:.22mm .35mm !important;
  }
  .school-master-report .school-master-line span,
  .school-master-report .school-master-line small,
  .school-master-report .school-master-line b {
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    white-space:nowrap !important;
  }
  .school-master-report .school-master-footer {
    margin-top:.7mm !important;
    padding-top:.45mm !important;
    font-size:4pt !important;
    line-height:1 !important;
  }
  .school-master-report .school-master-footer .brand-contact {
    margin-top:.25mm !important;
  }

  /* Adaptive density: keep ordinary school reports readable instead of forcing 4pt text. */
  .school-master-report.report-density-roomy .school-master-line,
  .school-master-report.report-density-roomy .school-master-line b { font-size:6.4pt !important; }
  .school-master-report.report-density-roomy .school-master-line small { font-size:5.4pt !important; }

  .school-master-report.report-density-standard .school-master-line,
  .school-master-report.report-density-standard .school-master-line b { font-size:5.8pt !important; }
  .school-master-report.report-density-standard .school-master-line small { font-size:4.9pt !important; }

  .school-master-report.report-density-dense .school-master-line,
  .school-master-report.report-density-dense .school-master-line b { font-size:5.1pt !important; }
  .school-master-report.report-density-dense .school-master-line small { font-size:4.4pt !important; }

  /* More than 12 sections is considered genuine pagination pressure: preserve readability and
     let print pagination occur rather than shrinking the report indefinitely. */
  .school-master-report.report-density-compact .school-master-line,
  .school-master-report.report-density-compact .school-master-line b { font-size:5pt !important; }
  .school-master-report.report-density-compact .school-master-line small { font-size:4.3pt !important; }
}

/* v0.8.1 timetable version management */
.version-name-editor { min-width: 270px; }
.inline-edit { display: inline-flex; gap: .4rem; align-items: center; }
.inline-edit input { min-width: 190px; max-width: 320px; }
@media (max-width: 760px) {
  .version-name-editor, .inline-edit, .inline-edit input { width: 100%; max-width: none; }
  .inline-edit { align-items: stretch; }
}

/* v0.8.2 schedule quality diagnostics */
.quality-head,.quality-inline,.quality-inline-metrics,.quality-metrics,.quality-issue>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.quality-head{justify-content:space-between}
.quality-score{min-width:94px;text-align:center;border:1px solid var(--border,#d9dee7);border-radius:14px;padding:10px 14px;background:#fff}
.quality-score strong{font-size:1.8rem;line-height:1}.quality-score span{font-size:.8rem;margin-inline-start:4px}
.quality-score.excellent,.quality-score.good{border-color:#9fd8b4}.quality-score.warn{border-color:#e4c46f}.quality-score.bad{border-color:#e3a5a5}
.quality-metrics{margin:12px 0}.quality-metrics span,.quality-inline-metrics span{background:var(--surface-soft,#f6f8fb);border-radius:999px;padding:6px 10px}
.quality-issues{display:grid;gap:8px}.quality-issue{border:1px solid var(--border,#d9dee7);border-radius:10px;padding:10px 12px;background:#fff}.quality-issue p{margin:5px 0 0}
.quality-badge{font-size:.78rem;border-radius:999px;padding:3px 8px}.quality-badge.constraint{background:#eef2f7}.quality-badge.improvable{background:#fff4d8}
.quality-inline{justify-content:space-between}.quality-inline>div:first-child span{font-size:1.15rem;font-weight:800}


/* v0.8.4 — whole-school timetable version management */
.timetable-manager-note { display:flex; gap:.75rem; align-items:flex-start; flex-wrap:wrap; }
.timetable-manager-note b { min-width:170px; }
.timetable-versions-table td { vertical-align:top; }
.timetable-versions-table .table-actions { gap:.35rem; flex-wrap:wrap; min-width:220px; }
.timetable-versions-table .approved-row { box-shadow: inset -4px 0 0 var(--success, #198754); }
.compact-stats { margin:0; }
.status-badge.neutral { background:#eef1f5; color:#536174; }
@media (max-width: 900px) {
  .timetable-versions-table .table-actions { min-width:170px; }
}


/* v0.8.6 — desktop sidebar must expose navigation, contact, rights and logout without page scrolling */
@media (min-width:901px) {
  .app-shell { min-height:100vh; }
  .sidebar {
    position:sticky; top:0; height:100vh; min-height:0; overflow:hidden;
    padding:clamp(8px,1.1vh,12px) 12px; gap:clamp(5px,.8vh,9px);
  }
  .sidebar .jw-brand-lockup.compact {
    max-width:190px; margin:0 auto; flex:0 0 auto;
  }
  .sidebar .jw-brand-lockup.compact .jw-emblem { width:62%; max-width:112px; }
  .sidebar .jw-brand-lockup.compact .jw-product-row { width:74%; margin-top:0; }
  .sidebar .jw-brand-lockup.compact .jw-product-name { font-size:18px; }
  .sidebar .jw-brand-lockup.compact .jw-descriptor { margin-top:3px; font-size:5.7px; }
  .sidebar nav {
    display:grid; gap:clamp(1px,.25vh,3px); min-height:0; flex:1 1 auto; align-content:start;
  }
  .sidebar nav a {
    min-height:0; padding:clamp(4px,.52vh,6px) 8px; border-radius:7px;
    font-size:clamp(11px,1.42vh,12.5px); line-height:1.15; gap:7px;
  }
  .nav-icon { width:25px; height:25px; min-width:25px; border-radius:7px; }
  .nav-icon svg { width:16px; height:16px; }
  .sidebar-note {
    margin-top:0; flex:0 0 auto; padding:clamp(5px,.65vh,8px) 5px 2px;
    gap:2px; line-height:1.25; font-size:10.5px;
  }
  .sidebar-note form { line-height:1; }
  .sidebar-note .link-button { padding:2px 0; }
  .sidebar-contact.whatsapp-link { min-height:0; padding:4px 6px; gap:5px; }
  .sidebar-contact.whatsapp-link img { width:15px; height:15px; }
  .sidebar-contact.whatsapp-link span, .sidebar-contact.whatsapp-link strong { font-size:10.5px; }
  .sidebar-note > small { font-size:9px; line-height:1.2; }
}
@media (min-width:901px) {
  .sidebar .brand-role { padding:0 4px 2px; font-size:8px; line-height:1.1; }
}
@media (min-width:901px) and (max-height:720px) {
  .sidebar { padding:6px 10px; gap:3px; }
  .sidebar .jw-brand-lockup.compact .jw-emblem { max-width:86px; }
  .sidebar .jw-brand-lockup.compact .jw-product-name { font-size:16px; }
  .sidebar .jw-brand-lockup.compact .jw-descriptor,
  .sidebar .brand-role { display:none; }
  .sidebar nav { gap:0; }
  .sidebar nav a { padding:3px 7px; font-size:10.8px; }
  .nav-icon { width:22px; height:22px; min-width:22px; }
  .nav-icon svg { width:14px; height:14px; }
  .sidebar-note { padding:4px 4px 0; font-size:9.5px; line-height:1.1; }
  .sidebar-contact.whatsapp-link { padding:2px 4px; }
  .sidebar-contact.whatsapp-link span { display:none; }
  .sidebar-note > small { font-size:8.4px; }
}

/* v0.8.7 — clearer timetable lifecycle: active work vs archive */
.workflow-note { border-inline-start:4px solid var(--primary,#123d70); }
.workflow-note span { line-height:1.8; }
.archive-panel { margin-top:18px; background:var(--surface-soft,#f7f9fc); }
.archive-panel h2 { margin-bottom:2px; }
.timetable-versions-table small.hint { display:block; margin-top:4px; }

/* v0.8.8 — approved/archived timetables are immutable; edit through a draft clone */
.approved-readonly { display:flex; align-items:center; justify-content:space-between; gap:16px; border:1px solid #d7b45a; background:#fffaf0; }
.approved-readonly p { margin:.35rem 0 0; }
@media (max-width: 800px) { .approved-readonly { align-items:stretch; flex-direction:column; } }


/* v0.8.9 — keep ordinary 7-period school-wide reports on one readable A4 landscape page.
   The tightening is scoped only to the school-wide report and only while it is still in
   the supported one-page range (<= 12 sections). Multi-page reports keep the prior rules. */
@media print {
  .school-master-report.one-page-matrix.fit-seven-periods {
    width:100% !important;
    margin:0 !important;
    padding:0 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .report-brand-strip {
    min-height:0 !important;
    margin:0 0 .35mm !important;
    padding:0 0 .3mm !important;
    line-height:.9 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .report-brand-strip .brand-lockup {
    transform:scale(.82);
    transform-origin:right center;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .compact-title {
    margin:0 0 .45mm !important;
    padding:0 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .compact-title h1 {
    margin:0 !important;
    font-size:9pt !important;
    line-height:1 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .compact-title p {
    margin:.2mm 0 0 !important;
    font-size:5.3pt !important;
    line-height:1 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .report-table-wrap {
    margin:0 !important;
    padding:0 !important;
    overflow:visible !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .school-master-table {
    border-collapse:collapse !important;
    border-spacing:0 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .school-master-table thead th {
    padding:.18mm .25mm !important;
    font-size:5.2pt !important;
    line-height:.95 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .school-master-table tbody th,
  .school-master-report.one-page-matrix.fit-seven-periods .school-master-table tbody td {
    padding:.06mm .15mm !important;
    line-height:.92 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .school-master-cell {
    padding:.03mm .1mm !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .school-master-line {
    grid-template-columns:8.2mm minmax(0,1fr) 7.2mm !important;
    gap:.18mm !important;
    min-height:0 !important;
    margin:0 !important;
    padding:0 .18mm !important;
    line-height:.9 !important;
    border-bottom-width:.12mm !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods.report-density-roomy .school-master-line,
  .school-master-report.one-page-matrix.fit-seven-periods.report-density-roomy .school-master-line b { font-size:5.7pt !important; }
  .school-master-report.one-page-matrix.fit-seven-periods.report-density-roomy .school-master-line small { font-size:4.8pt !important; }
  .school-master-report.one-page-matrix.fit-seven-periods.report-density-standard .school-master-line,
  .school-master-report.one-page-matrix.fit-seven-periods.report-density-standard .school-master-line b { font-size:5.2pt !important; }
  .school-master-report.one-page-matrix.fit-seven-periods.report-density-standard .school-master-line small { font-size:4.4pt !important; }
  .school-master-report.one-page-matrix.fit-seven-periods.report-density-dense .school-master-line,
  .school-master-report.one-page-matrix.fit-seven-periods.report-density-dense .school-master-line b { font-size:4.65pt !important; }
  .school-master-report.one-page-matrix.fit-seven-periods.report-density-dense .school-master-line small { font-size:3.95pt !important; }
  .school-master-report.one-page-matrix.fit-seven-periods .section-closed-label {
    font-size:3.9pt !important;
    line-height:.9 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .school-master-footer {
    margin:.25mm 0 0 !important;
    padding:.2mm 0 0 !important;
    font-size:3.7pt !important;
    line-height:.9 !important;
  }
  .school-master-report.one-page-matrix.fit-seven-periods .school-master-footer .brand-contact {
    margin-top:0 !important;
    font-size:3.7pt !important;
  }
}

/* v0.8.10 — unified adaptive A4 print policy for every timetable report.
   Goal: keep each logical report/sheet intact on one readable landscape A4 page whenever physically possible.
   Density tightens in this order: whitespace -> cell padding -> headings/legend -> bounded font reduction.
   Large batches (teacher/section distribution sheets) keep one logical sheet intact and paginate only between sheets. */
@media print {
  @page { size:A4 landscape; margin:3mm; }

  /* Shared report chrome: reclaim vertical space before shrinking table text. */
  .print-report { box-sizing:border-box !important; max-width:100% !important; }
  .print-report .report-brand-strip { min-height:0 !important; margin:0 0 .45mm !important; padding:0 0 .35mm !important; }
  .print-report .report-brand-strip .brand-lockup { transform:scale(.84); transform-origin:right center; }
  .print-report .compact-title,
  .timetable-print-report .print-report-title { margin:0 0 .7mm !important; padding:0 !important; }
  .print-report .compact-title h1,
  .timetable-print-report .print-report-title h1 { margin:0 !important; font-size:9.5pt !important; line-height:1 !important; }
  .print-report .compact-title p,
  .timetable-print-report .print-report-title p { margin:.25mm 0 0 !important; font-size:5.5pt !important; line-height:1 !important; }

  /* Whole teacher/section matrices: one A4 sheet, with existing density classes deciding legible font size. */
  .teacher-matrix-report.one-page-matrix,
  .section-matrix-report.one-page-matrix {
    width:100% !important; height:auto !important; margin:0 !important; padding:0 !important;
    break-inside:avoid-page !important; page-break-inside:avoid !important;
  }
  .teacher-matrix-report .report-table-wrap,
  .section-matrix-report .report-table-wrap { margin:0 !important; padding:0 !important; overflow:visible !important; }
  .teacher-matrix-report .matrix-table,
  .section-matrix-report .matrix-table { width:100% !important; min-width:0 !important; table-layout:fixed !important; border-collapse:collapse !important; }
  .teacher-matrix-report .matrix-table th,
  .teacher-matrix-report .matrix-table td,
  .section-matrix-report .matrix-table th,
  .section-matrix-report .matrix-table td { line-height:.92 !important; height:auto !important; }
  .teacher-matrix-report .matrix-legend,
  .section-matrix-report .matrix-legend { margin-top:.55mm !important; gap:.25mm 1.2mm !important; font-size:3.9pt !important; line-height:1 !important; }
  .teacher-matrix-report .matrix-legends,
  .section-matrix-report .matrix-legends { margin-top:.25mm !important; }

  /* Normal timetable views (teacher/class/manual timetable): keep the table intact and compact. */
  .timetable-print-report {
    width:100% !important; max-width:100% !important; margin:0 !important; padding:0 !important;
    break-inside:avoid-page !important; page-break-inside:avoid !important;
  }
  .timetable-print-report .timetable { width:100% !important; table-layout:fixed !important; border-collapse:collapse !important; }
  .timetable-print-report .timetable th,
  .timetable-print-report .timetable td { padding:.55mm .45mm !important; line-height:.98 !important; height:auto !important; }
  .timetable-print-report .lesson { min-height:0 !important; padding:.3mm !important; line-height:.98 !important; }
  .timetable-print-report .lesson b { font-size:6.2pt !important; }
  .timetable-print-report .lesson small { font-size:5pt !important; }

  /* Individual teacher/class sheets: never split one schedule across two pages.
     Four-up remains 2x2; pagination is allowed only between complete sheets/pages. */
  .distribution-sheet {
    break-inside:avoid-page !important; page-break-inside:avoid !important;
  }
  .distribution-mini-table { width:100% !important; table-layout:fixed !important; border-collapse:collapse !important; }
  .distribution-mini-table th,
  .distribution-mini-table td { line-height:.92 !important; }
  .distribution-print-page { break-inside:avoid-page !important; page-break-inside:avoid !important; }

  /* Do not let a footer/legend alone create an otherwise empty trailing page. */
  .print-report footer,
  .school-master-footer,
  .distribution-sheet-footer { break-before:avoid-page !important; page-break-before:avoid !important; }
}


/* v0.8.11 — inline system-admin school account editing */
.school-edit-row > td { background: #f8fbff; padding: 0.8rem !important; }
.school-edit-card { border: 1px solid #dbe6f3; border-radius: 14px; padding: 1rem; background: #fff; }
.school-edit-title { display: flex; gap: .6rem; align-items: baseline; flex-wrap: wrap; margin-bottom: .8rem; }
.school-edit-title span { color: #64748b; font-size: .88rem; }
.school-edit-grid { display: grid; grid-template-columns: repeat(4, minmax(160px, 1fr)); gap: .75rem; margin-bottom: .8rem; }
.school-edit-grid label { display: grid; gap: .35rem; font-size: .85rem; font-weight: 700; color: #334155; }
.school-edit-grid input { width: 100%; }
@media (max-width: 1000px) { .school-edit-grid { grid-template-columns: repeat(2, minmax(160px, 1fr)); } }
@media (max-width: 650px) { .school-edit-grid { grid-template-columns: 1fr; } }

/* v0.8.14 — guided school-admin workflow */
.work-center-head { align-items:center; }
.workflow-progress { padding:16px 18px; }
.workflow-progress-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:10px; }
.workflow-progress-head div { display:grid; gap:3px; }
.workflow-progress-head strong { color:#173a67; font-size:16px; }
.workflow-progress-head span { color:#728398; font-size:12px; }
.workflow-progress-head > b { color:#173a67; font-size:20px; }
.workflow-progress-track { height:9px; border-radius:999px; background:#e8edf3; overflow:hidden; direction:rtl; }
.workflow-progress-track span { display:block; height:100%; border-radius:inherit; background:#1d6a54; transition:width .2s ease; }
.guided-workflow { display:grid; gap:10px; margin:14px 0; }
.workflow-step { display:grid; grid-template-columns:48px minmax(0,1fr); gap:14px; padding:15px 17px; border:1px solid #dce4ed; border-radius:14px; background:#fff; box-shadow:0 2px 10px rgba(23,58,103,.035); }
.workflow-step.complete { border-color:#cfe2da; background:linear-gradient(90deg,#fff 0,#fbfefd 100%); }
.workflow-step-number { width:42px; height:42px; border-radius:50%; display:grid; place-items:center; background:#e9eef5; color:#173a67; font-weight:900; font-size:17px; }
.workflow-step.complete .workflow-step-number { background:#dff1e9; color:#176348; }
.workflow-step-body { min-width:0; }
.workflow-step-title { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.workflow-step-title h2 { margin:0; font-size:17px; color:#173a67; }
.workflow-step-body p { margin:6px 0 10px; color:#5f7084; line-height:1.7; font-size:13px; }
.workflow-state { flex:0 0 auto; padding:4px 9px; border-radius:999px; background:#f1f4f8; color:#68798c; font-size:11px; font-weight:800; }
.workflow-step.complete .workflow-state { background:#e5f4ed; color:#176348; }
.workflow-step-actions { display:flex; gap:7px; flex-wrap:wrap; }
.workflow-step-actions .btn { padding:6px 10px; font-size:12px; }
.work-attention { border-right:4px solid #b57a22; }
.work-attention h2 { margin-top:0; }
@media (max-width:720px) {
  .workflow-step { grid-template-columns:38px minmax(0,1fr); padding:12px; gap:9px; }
  .workflow-step-number { width:34px; height:34px; font-size:14px; }
  .workflow-step-title { align-items:flex-start; }
  .workflow-step-title h2 { font-size:15px; }
  .workflow-progress-head { align-items:flex-start; }
}
\n\n/* explicit generation lifecycle feedback */\n.generation-status-card {\n  display:grid; grid-template-columns:64px 1fr; gap:18px; align-items:start;\n  margin:0 0 22px; padding:20px 22px; border:1px solid var(--line, #d8e1ee);\n  border-radius:18px; background:#fff; box-shadow:0 12px 30px rgba(15, 45, 82, .08);\n}\n.generation-status-card.is-working { border-color:#b8d4f5; background:linear-gradient(135deg,#f8fbff,#eef6ff); }\n.generation-status-card.is-success { border-color:#9bd5b2; background:linear-gradient(135deg,#f7fff9,#ecfaf1); }\n.generation-status-card.is-error { border-color:#efb1b1; background:#fff7f7; }\n.generation-status-icon { width:58px; height:58px; border-radius:50%; display:flex; align-items:center; justify-content:center;\n  background:#fff; border:1px solid rgba(25,76,132,.16); font-size:30px; font-weight:800; }\n.generation-status-card.is-success .generation-status-icon { color:#16713b; }\n.generation-status-card.is-error .generation-status-icon { color:#b42318; }\n.generation-status-body h2 { margin:0 0 6px; font-size:1.25rem; }\n.generation-status-body p { margin:0 0 14px; line-height:1.8; }\n.generation-spinner { display:inline-block; width:30px; height:30px; border:4px solid rgba(20,77,139,.18); border-top-color:#144d8b; border-radius:50%; animation:generation-spin .8s linear infinite; }\n@keyframes generation-spin { to { transform:rotate(360deg); } }\n.generation-steps { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:14px 0 10px; }\n.generation-step { display:flex; align-items:center; gap:8px; padding:9px 10px; border-radius:12px; background:rgba(255,255,255,.72); opacity:.55; }\n.generation-step span { width:26px; height:26px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; border:1px solid #a8b7c9; flex:none; }\n.generation-step.active { opacity:1; outline:2px solid #84b5e8; }\n.generation-step.done { opacity:1; color:#176b3a; }\n.generation-step.done span { background:#e5f7ec; border-color:#83c89e; }\n.generation-step.failed { opacity:1; color:#b42318; }\n.generation-job-meta { display:block; margin-top:8px; direction:rtl; }\n.generation-status-actions { margin-top:10px; }\n.generation-submit-overlay { position:fixed; inset:0; z-index:10000; background:rgba(8,19,35,.38); backdrop-filter:blur(2px);\n  display:flex; align-items:center; justify-content:center; padding:20px; }\n.generation-submit-overlay[hidden] { display:none !important; }\n.generation-submit-box { width:min(560px,95vw); display:flex; gap:16px; align-items:center; background:#fff; border-radius:18px; padding:22px 24px; box-shadow:0 22px 70px rgba(0,0,0,.22); }\n.generation-submit-box strong { display:block; font-size:1.15rem; margin-bottom:5px; }\n@media (max-width:700px) {\n  .generation-status-card { grid-template-columns:1fr; }\n  .generation-status-icon { width:48px; height:48px; }\n  .generation-steps { grid-template-columns:1fr; }\n}\n
/* explicit approval for safe but degraded assignment distribution */
.generation-status-card.is-warning { border-color:#e9c46a; background:linear-gradient(135deg,#fffdf5,#fff8df); }
.generation-status-card.is-warning .generation-status-icon { color:#9a6700; }
.degraded-approval-actions { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:14px 0 8px; }
.degraded-approval-actions .btn.secondary { text-decoration:none; }

/* generation state follows the school across navigation */
.generation-global-banner {
  position:sticky; top:0; z-index:35; margin:0; padding:10px 18px;
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  border-bottom:1px solid #b8d4f5; background:linear-gradient(90deg,#f6fbff,#edf6ff);
  box-shadow:0 6px 18px rgba(15,45,82,.08);
}
.generation-global-banner.done { border-color:#9bd5b2; background:linear-gradient(90deg,#f7fff9,#ecfaf1); }
.generation-global-banner.failed { border-color:#efb1b1; background:#fff7f7; }
.generation-global-main { display:flex; align-items:center; gap:11px; min-width:0; }
.generation-global-main strong { display:block; color:#123d6d; margin-bottom:2px; }
.generation-global-banner.done .generation-global-main strong { color:#176b3a; }
.generation-global-banner.failed .generation-global-main strong { color:#9b1c1c; }
.generation-global-main small { display:block; line-height:1.55; color:#52677f; }
.generation-global-actions { display:flex; align-items:center; gap:8px; flex:none; }
.generation-global-mark { width:30px; height:30px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; background:#fff; font-weight:900; }
.generation-spinner.compact { width:24px; height:24px; border-width:3px; flex:none; }
@media (max-width:760px) {
  .generation-global-banner { align-items:flex-start; flex-direction:column; padding:10px 12px; }
  .generation-global-actions { width:100%; }
  .generation-global-actions .btn { flex:1; text-align:center; }
}

/* SystemAdmin solver operations dashboard */
.solver-monitor-head{align-items:flex-start}
.monitor-window-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 16px}
.monitor-window-bar small{margin-inline-start:auto;color:#718197}
.monitor-health-strip{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 18px;border-radius:14px;margin-bottom:16px;border:1px solid #dbe4ef;background:#fff}
.monitor-health-strip>div:first-child{display:flex;align-items:center;gap:10px}.monitor-health-strip strong,.monitor-health-strip small{display:block}.monitor-health-strip small{margin-top:3px;color:#607087}
.monitor-health-strip.good{background:#f2fbf7;border-color:#9fd5bd}.monitor-health-strip.warn{background:#fff9ea;border-color:#e4c46f}.monitor-health-strip.bad{background:#fff4f4;border-color:#e8a5a5}
.monitor-health-dot{width:11px;height:11px;border-radius:50%;background:#198754;box-shadow:0 0 0 5px rgba(25,135,84,.1)}.monitor-health-strip.warn .monitor-health-dot{background:#b88100}.monitor-health-strip.bad .monitor-health-dot{background:#b02a37}
.monitor-live-load{display:flex;gap:8px;flex-wrap:wrap}.monitor-live-load span{background:rgba(255,255,255,.75);border:1px solid rgba(127,145,165,.22);border-radius:999px;padding:6px 10px;font-size:12px}.monitor-live-load b{font-size:14px;margin-inline-start:4px}
.monitor-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.monitor-kpi{background:#fff;border:1px solid #dbe4ef;border-radius:14px;padding:15px;min-height:112px}.monitor-kpi span,.monitor-kpi strong,.monitor-kpi small{display:block}.monitor-kpi span{font-size:12px;color:#65778d}.monitor-kpi strong{font-size:25px;margin:7px 0 5px}.monitor-kpi small{color:#7a899a;line-height:1.5}.monitor-kpi.good{border-inline-start:4px solid #198754}.monitor-kpi.warn{border-inline-start:4px solid #c08a16}.monitor-kpi.bad{border-inline-start:4px solid #b02a37}
.monitor-grid{align-items:start}.monitor-table code{font-size:11px;color:#36526f}.monitor-subline{display:block;color:#8794a3;margin-top:2px}
.monitor-decision-list{display:grid;gap:9px}.monitor-decision-list>div{display:grid;grid-template-columns:1fr auto;gap:3px 12px;padding:10px 12px;border:1px solid #e2e8ef;border-radius:10px;background:#fafbfd}.monitor-decision-list span{color:#61748b}.monitor-decision-list b{font-size:15px}.monitor-decision-list small{grid-column:1/-1;color:#8491a0}
.monitor-note{margin-top:12px;margin-bottom:0;background:#f2f7fc;border:1px solid #ccdae9;color:#36526f}.monitor-recent-wrap{max-height:520px;overflow:auto}.monitor-recent-wrap thead th{position:sticky;top:0;z-index:1}
@media(max-width:1200px){.monitor-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.monitor-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.monitor-health-strip{align-items:flex-start;flex-direction:column}.monitor-window-bar small{margin-inline-start:0}}
@media(max-width:560px){.monitor-kpis{grid-template-columns:1fr}}

/* race-free monitoring filters and responsive refresh state */
.monitor-filter-divider{width:1px;height:28px;background:#dbe4ef;display:inline-block}
.monitor-current-panel{margin-bottom:14px}
.monitor-current-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.monitor-current-grid>div{padding:12px 14px;border:1px solid #dfe7f0;border-radius:12px;background:#fbfcfe}
.monitor-current-grid span,.monitor-current-grid b,.monitor-current-grid small{display:block}
.monitor-current-grid span{font-size:12px;color:#65778d}.monitor-current-grid b{font-size:22px;margin:5px 0}.monitor-current-grid small{font-size:11px;color:#8190a0;line-height:1.45}
.monitor-scope-note{margin:0 0 14px;line-height:1.8}.monitor-scope-note code{font-size:11px}
.monitor-section-title{margin:6px 0 10px}
@media(max-width:900px){.monitor-current-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.monitor-filter-divider{display:none}}
@media(max-width:560px){.monitor-current-grid{grid-template-columns:1fr}}


/* solver monitor filters use real GET navigation, independent of Blazor click events */
.monitor-window-bar a.btn { text-decoration:none; }

/* secure SystemAdmin test tenant + diagnostics */
.system-test-banner{margin:14px 18px 0;padding:12px 16px;border:1px solid rgba(173,119,20,.32);border-radius:14px;background:rgba(255,244,208,.94);display:flex;align-items:center;justify-content:space-between;gap:16px;position:relative;z-index:4}.system-test-banner>div{display:flex;flex-direction:column;gap:2px}.system-test-banner strong{font-size:15px}.system-test-banner span{font-size:12px;color:#6d561d}.system-diagnostic-overlay{margin:10px 18px 0;padding:14px 16px;border-radius:14px;border:1px dashed rgba(62,91,126,.45);background:rgba(244,248,252,.96);position:relative;z-index:4}.system-diagnostic-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.system-diagnostic-head>div{display:flex;flex-direction:column;gap:2px}.system-diagnostic-head small{color:#64748b}.diagnostic-live{font-size:11px;font-weight:700;padding:4px 8px;border-radius:999px;background:#e2e8f0}.diagnostic-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.diagnostic-grid>div{padding:8px 9px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;min-width:0}.diagnostic-grid span{display:block;font-size:10px;color:#64748b;margin-bottom:2px}.diagnostic-grid b{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.diagnostic-message{margin-top:10px}.diagnostic-message summary{cursor:pointer;font-weight:700;font-size:12px}.diagnostic-message pre{white-space:pre-wrap;word-break:break-word;max-height:180px;overflow:auto;background:#0f172a;color:#e2e8f0;padding:10px;border-radius:10px;font-size:11px;direction:ltr;text-align:left}.diagnostic-empty{font-size:12px;color:#64748b}.system-test-badge{margin-inline-start:7px}.system-test-admin-panel{border-color:rgba(173,119,20,.3)}.account-security-panel{max-width:760px}.account-password-form{max-width:620px}
@media(max-width:900px){.diagnostic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.system-test-banner{align-items:flex-start;flex-direction:column}}
@media(max-width:560px){.diagnostic-grid{grid-template-columns:1fr}}

/* critical mutations are normal server POSTs, so forms must behave like action buttons. */
.inline-action-form{display:inline-flex;align-items:center;margin:0;gap:.35rem}
.inline-action-details{display:inline-block;margin-top:.35rem}
.inline-action-details>summary{list-style:none;cursor:pointer;width:max-content}
.inline-action-details>summary::-webkit-details-marker{display:none}
.inline-action-details[open] .inline-edit{margin-top:.45rem;display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.server-action-form input[type="text"]{min-width:14rem}

/* live Worker boot/resource telemetry */
.monitor-workers-panel{margin-bottom:14px}.monitor-workers-panel .monitor-table th,.monitor-workers-panel .monitor-table td{white-space:nowrap}
.monitor-resource-grid{margin-bottom:18px}.worker-metric-legend{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0 12px}.worker-metric-legend span{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:#607087}.worker-metric-legend code{font-size:10px}
.metric-series-dot{width:9px;height:9px;border-radius:50%;display:inline-block;background:currentColor}.worker-chart-block{margin-top:14px}.worker-chart-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}.worker-chart-head span{font-size:11px;color:#7b8999}.worker-chart-frame{position:relative;padding-inline-start:38px;border:1px solid #e0e7ef;border-radius:12px;background:#fbfcfe;overflow:hidden}.worker-chart-frame svg{display:block;width:100%;height:154px;overflow:visible}.metric-grid-line{stroke:#dfe6ee;stroke-width:1;vector-effect:non-scaling-stroke}.metric-series-line{fill:none;stroke:currentColor;stroke-width:2.2;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.chart-y{position:absolute;inset-inline-start:5px;font-size:9px;color:#8b97a5;z-index:1}.chart-y.top{top:3px}.chart-y.mid{top:50%;transform:translateY(-50%)}.chart-y.bottom{bottom:3px}.worker-chart-axis{display:flex;justify-content:space-between;font-size:10px;color:#8995a2;margin-top:4px;padding-inline-start:38px}
.metric-series-0{color:#1d5f92}.metric-series-1{color:#8b5b23}.metric-series-2{color:#4d7a54}.metric-series-3{color:#76558d}.metric-series-4{color:#9a4f55}.metric-series-5{color:#4d7580}
@media(max-width:900px){.monitor-resource-grid{grid-template-columns:1fr}.monitor-workers-panel .table-wrap{overflow:auto}.worker-chart-frame svg{height:130px}}


/* password guidance and security UX */
.password-input-wrap { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.45rem; align-items:center; }
.password-input-wrap input { min-width:0; width:100%; }
.password-toggle { min-height:40px; padding:.45rem .7rem; border:1px solid var(--border,#d7dce2); border-radius:8px; background:var(--card,#fff); color:inherit; cursor:pointer; font:inherit; }
.password-toggle:hover { border-color:#8caed2; }
.password-policy { margin:.2rem 0 .8rem; padding:.8rem 1rem; border:1px solid #d7e1ec; border-radius:10px; background:#f8fafc; }
.password-policy.compact { padding:.6rem .8rem; }
.password-policy ul { margin:.4rem 0 0; padding-inline-start:1.25rem; display:grid; gap:.3rem; }
.password-policy li { color:#7a4b00; }
.password-policy li::marker { content:'○  '; }
.password-policy li.ok { color:#166534; }
.password-policy li.ok::marker { content:'✓  '; }
.password-strength { display:grid; grid-template-columns:auto auto minmax(80px,1fr); gap:.55rem; align-items:center; font-size:.9rem; }
.password-strength i { display:block; height:7px; background:#e5e7eb; border-radius:999px; overflow:hidden; }
.password-strength em { display:block; height:100%; width:0; background:#9ca3af; transition:width .18s ease; }
.password-strength em[data-level='weak'] { background:#b91c1c; }
.password-strength em[data-level='medium'] { background:#a16207; }
.password-strength em[data-level='strong'] { background:#15803d; }
.password-strength b[data-level='weak'] { color:#b91c1c; }
.password-strength b[data-level='medium'] { color:#a16207; }
.password-strength b[data-level='strong'] { color:#15803d; }
.password-match-ok { color:#166534; }
.password-match-error { color:#b91c1c; }
@media (max-width:520px) { .password-strength { grid-template-columns:auto auto; } .password-strength i { grid-column:1 / -1; } }

/* touch/hover field help. Never rely on hover alone. */
.field-help {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    margin-inline-start: .25rem;
    padding: 0;
    border: 1px solid color-mix(in srgb, currentColor 28%, transparent);
    border-radius: 999px;
    background: transparent;
    color: inherit;
    font: inherit;
    font-size: .78rem;
    cursor: help;
    vertical-align: middle;
}
.field-help::after {
    content: attr(data-help-text);
    position: absolute;
    z-index: 50;
    inset-inline-end: 0;
    top: calc(100% + .45rem);
    width: min(19rem, 76vw);
    padding: .65rem .75rem;
    border: 1px solid var(--border, #cbd5e1);
    border-radius: .7rem;
    background: var(--surface, #ffffff);
    color: var(--text, #102038);
    box-shadow: 0 8px 24px rgba(15, 23, 42, .14);
    font-size: .82rem;
    font-weight: 500;
    line-height: 1.65;
    white-space: normal;
    text-align: start;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}
.field-help.is-open::after,
.field-help:focus-visible::after { opacity: 1; visibility: visible; }
@media (hover: hover) and (pointer: fine) {
    .field-help:hover::after { opacity: 1; visibility: visible; }
}

/* grouped study-plan import/export */
.plan-preview-meta { display:flex; flex-wrap:wrap; gap:8px 14px; margin:8px 0 12px; color:#52677e; }
.plan-preview-meta span { background:#f7f9fc; border:1px solid #e0e7ef; border-radius:9px; padding:7px 10px; }
.plan-preview-summary { margin-bottom:14px; }
.plan-preview-detail .plan-grade-row td { background:#e8eef8; color:#17315b; text-align:right; border-top:2px solid #d5dfeb; }
@media (max-width: 720px) {
  .plan-preview-meta { display:grid; grid-template-columns:1fr 1fr; }
  .plan-preview-meta span { min-width:0; }
}

/* manual-first study plan editor */
.manual-plan-principle-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.manual-plan-principle-grid>div{display:grid;gap:4px;padding:12px 14px;border:1px solid #dde6ef;border-radius:12px;background:#f8fafc}.manual-plan-principle-grid strong{color:#173a67}.manual-plan-principle-grid span{font-size:.86rem;color:#62748a;line-height:1.55}.manual-plan-meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0 18px}.manual-plan-meta-grid label,.manual-level-name label{display:grid;gap:6px}.manual-plan-meta-grid input,.manual-level-name input,.manual-plan-table input,.manual-plan-table select{width:100%;min-height:40px}.manual-level-list{display:grid;gap:16px}.manual-level-card{border:1px solid #dbe4ee;border-radius:14px;overflow:hidden;background:#fff}.manual-level-head{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;gap:12px;align-items:end;padding:14px;background:#f7f9fc;border-bottom:1px solid #e2e8f0}.manual-level-summary{display:grid;gap:2px;text-align:center;color:#607087;font-size:.82rem}.manual-level-summary b{color:#173a67;font-size:.9rem}.manual-plan-table{width:100%;border-collapse:collapse}.manual-plan-table th,.manual-plan-table td{padding:8px 9px;vertical-align:middle}.manual-plan-table th{background:#eef3f8;color:#2f4662;white-space:nowrap}.manual-plan-table td:first-child{min-width:220px}.manual-level-card>.btn{margin:10px 14px 14px}.manual-plan-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;padding-top:14px;border-top:1px solid #e3e8ef}.manual-plan-save-side{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.manual-plan-save-side span{color:#66778a;font-size:.88rem}.plan-level-chips{display:flex;gap:8px;flex-wrap:wrap}.plan-level-chips span{padding:7px 10px;border:1px solid #d9e2ec;border-radius:999px;background:#f7f9fc;color:#314d6d;font-size:.86rem}.inline-label-help{display:inline-flex;align-items:center}.manual-plan-editor .section-title-row{align-items:flex-start}
@media(max-width:900px){.manual-plan-principle-grid{grid-template-columns:1fr 1fr}.manual-level-head{grid-template-columns:1fr auto}.manual-level-summary{grid-row:2;grid-column:1/-1;text-align:start;display:flex;gap:12px}.manual-plan-actions{align-items:stretch;flex-direction:column}.manual-plan-save-side{justify-content:space-between}}
@media(max-width:620px){.manual-plan-principle-grid,.manual-plan-meta-grid{grid-template-columns:1fr}.manual-level-head{grid-template-columns:1fr}.manual-level-head>.btn{justify-self:start}.manual-level-summary{grid-column:1}.manual-plan-table{min-width:720px}.manual-plan-save-side{align-items:stretch;flex-direction:column}.manual-plan-save-side .btn{width:100%}}

/* internal support center */
.support-form textarea,
.support-reply-form textarea { width: 100%; resize: vertical; }
.support-thread-panel { display: grid; gap: 1rem; }
.support-thread { display: grid; gap: .8rem; }
.support-message { max-width: 86%; padding: .9rem 1rem; border-radius: 14px; border: 1px solid var(--line, #d7dde6); background: #fff; }
.support-message.from-school { margin-inline-start: auto; background: #f7f9fc; }
.support-message.from-support { margin-inline-end: auto; background: #f2f7ff; }
.support-message header { display: flex; gap: .75rem; justify-content: space-between; align-items: baseline; margin-bottom: .45rem; }
.support-message header span { font-size: .78rem; opacity: .7; }
.support-message p { margin: 0; white-space: pre-wrap; line-height: 1.8; }
.support-attachments { margin-top: .7rem; display: flex; flex-wrap: wrap; gap: .4rem; }
.support-admin-actions { display: flex; justify-content: flex-end; }
.selected-row { outline: 2px solid rgba(30, 90, 160, .22); outline-offset: -2px; }

/* teacher timetable sharing */
.share-summary-panel { display: flex; gap: 1rem; justify-content: space-between; align-items: center; flex-wrap: wrap; }
.share-summary-panel > div:first-child { display: grid; gap: .2rem; }
.share-summary-panel > div:first-child span { font-size: .82rem; opacity: .7; }
.teacher-sharing-table td { vertical-align: top; }
.teacher-sharing-table td > small { display: block; margin-top: .25rem; }
.teacher-sharing-table .inline-edit { min-width: 240px; }
.teacher-sharing-table .inline-edit input { min-width: 145px; }
.share-link-actions,
.sharing-primary-actions { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
.whatsapp-share-btn { white-space: nowrap; }

/* Public, tokenized teacher timetable view */
.public-share-shell { min-height: 100vh; background: #f4f6f9; display: flex; flex-direction: column; }
.public-share-header { padding: 18px clamp(16px, 4vw, 44px); background: #fff; border-bottom: 1px solid #e1e5eb; }
.public-share-header .brand-lockup { display: inline-flex; max-width: 190px; }
.public-share-content { width: min(1180px, calc(100% - 24px)); margin: 24px auto; flex: 1; }
.public-share-footer { width: min(1180px, calc(100% - 24px)); margin: 0 auto 20px; }
.public-share-card { overflow: hidden; }
.public-teacher-title { text-align: center; display: grid; gap: .3rem; margin-bottom: 1rem; }
.public-teacher-title > span { font-weight: 700; opacity: .75; }
.public-teacher-title h1 { margin: 0; }
.public-share-summary { justify-content: center; margin-bottom: 1rem; }
.public-teacher-table { min-width: 700px; }
.public-teacher-table td { min-width: 82px; }
.public-share-note { margin-top: 1rem; }
.public-share-error { text-align: center; padding: 3rem 1.5rem; }

@media (max-width: 760px) {
    .support-message { max-width: 96%; }
    .teacher-sharing-table { min-width: 920px; }
    .public-share-content { width: min(100% - 12px, 1180px); margin-top: 12px; }
    .public-share-header { padding: 12px 16px; }
    .public-teacher-table { font-size: .82rem; }
    .public-teacher-table th,
    .public-teacher-table td { padding: .42rem .3rem; }
}

/* secure school-wide timetable sharing */
.general-share-panel { display: grid; gap: 1rem; border-inline-start: 4px solid #254f7f; }
.general-share-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; }
.general-share-head > div { display: grid; gap: .3rem; }
.general-share-head h2 { margin: 0; }
.general-share-head .eyebrow { font-size: .78rem; font-weight: 800; color: #254f7f; }
.general-share-link-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .55rem; align-items: center; }
.general-share-url { width: 100%; direction: ltr; text-align: left; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; }
.general-share-actions { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.compact-notice { margin: 0; }
.public-general-sheet { overflow: hidden; }
.public-general-wrap { max-height: none; }
.public-general-table { min-width: 860px; }
.public-general-table .school-master-line { min-width: 0; grid-template-columns: minmax(3.2rem, auto) 1fr minmax(2.6rem, auto); gap: .3rem; padding: .22rem .3rem; font-size: .76rem; line-height: 1.25; }
.public-general-table .school-master-line b { min-width: 3.2rem; font-size: .76rem; }
.public-general-table .school-master-line small { font-size: .66rem !important; }
.public-general-table th, .public-general-table td { padding: .35rem; }
@media (max-width: 760px) {
    .general-share-head { flex-direction: column; }
    .general-share-link-row { grid-template-columns: 1fr; }
    .general-share-actions { align-items: stretch; }
    .general-share-actions > .btn,
    .general-share-actions > form,
    .general-share-actions > form > .btn { width: 100%; }
    .public-general-table { min-width: 780px; font-size: .78rem; }
}


/* adaptive WhatsApp launcher */
.whatsapp-launch-panel { display: grid; gap: .7rem; border-inline-start: 4px solid #128c7e; }
.whatsapp-launch-copy { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; }
.whatsapp-launch-copy > div:first-child { display: grid; gap: .25rem; }
.whatsapp-launch-copy h2 { margin: 0; }
.whatsapp-launch-copy .eyebrow { font-size: .78rem; font-weight: 800; color: #0f766e; }
.whatsapp-mode-field { display: grid; gap: .35rem; min-width: 230px; }
.whatsapp-mode-field > span { font-size: .8rem; font-weight: 700; color: #42566d; }
.whatsapp-mode-field select { width: 100%; min-height: 40px; }
.whatsapp-launch-note { font-size: .86rem; }
@media (max-width: 760px) {
    .whatsapp-launch-copy { flex-direction: column; align-items: stretch; }
    .whatsapp-mode-field { min-width: 0; }
}


/* explicit WhatsApp send confirmation */
.share-status-stack { display: grid; gap: .22rem; align-content: start; }
.share-status-stack small { color: #6b7b8e; line-height: 1.45; }
.status-badge.opened { background: #eef4fb; border-color: #bfd1e7; color: #244f7c; }
.share-confirm-block { display: grid; gap: .3rem; min-width: 170px; }
.share-confirm-block[hidden] { display: none !important; }
.share-confirm-hint { font-size: .76rem; line-height: 1.45; color: #5e6f82; max-width: 210px; }
.share-confirm-btn { white-space: nowrap; }
@media (max-width: 760px) {
    .share-confirm-block { min-width: 0; }
    .share-confirm-hint { max-width: none; }
}

/* general timetable explicit share confirmation */
.general-share-workflow { display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: center; justify-content: space-between; padding: .8rem .9rem; border: 1px solid var(--border, #d9e2ec); border-radius: .8rem; background: rgba(247, 250, 252, .75); }
.general-share-workflow .share-status-stack { min-width: 12rem; }
@media (max-width: 720px) {
    .general-share-workflow { align-items: stretch; }
    .general-share-workflow > * { width: 100%; }
    .general-share-workflow .sharing-primary-actions,
    .general-share-workflow .sharing-primary-actions > .btn,
    .general-share-workflow .share-confirm-block,
    .general-share-workflow .share-confirm-block form,
    .general-share-workflow .share-confirm-block .btn { width: 100%; }
}

/* one general share link with administrator-selected timetable views */
.general-share-view-config { display:grid; gap:.75rem; padding:.9rem; border:1px solid var(--border, #d9e2ec); border-radius:.85rem; background:rgba(247,250,252,.82); }
.general-share-view-config h3 { margin:0; font-size:1rem; }
.general-share-view-form { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.65rem; align-items:stretch; }
.general-view-option { display:flex; gap:.55rem; align-items:flex-start; padding:.7rem .75rem; border:1px solid var(--border, #d9e2ec); border-radius:.75rem; background:#fff; cursor:pointer; }
.general-view-option input { margin-top:.22rem; inline-size:1rem; block-size:1rem; flex:0 0 auto; }
.general-view-option span { display:grid; gap:.15rem; }
.general-view-option strong { font-size:.9rem; }
.general-view-option small { color:var(--muted, #667085); line-height:1.45; }
.general-share-view-form > .btn { align-self:center; justify-self:start; }
.public-share-view-tabs { display:flex; flex-wrap:wrap; justify-content:center; gap:.45rem; margin:.2rem 0 1rem; padding:.35rem; border:1px solid var(--border, #d9e2ec); border-radius:.85rem; background:#f7f9fc; }
.public-share-view-tab { display:inline-flex; align-items:center; justify-content:center; min-height:2.35rem; padding:.45rem .85rem; border-radius:.65rem; color:#344054; text-decoration:none; font-weight:800; border:1px solid transparent; }
.public-share-view-tab:hover { background:#fff; border-color:#d6deea; }
.public-share-view-tab.active { background:#173f6f; color:#fff; box-shadow:0 4px 12px rgba(23,63,111,.16); }
.public-share-view-heading { display:flex; align-items:center; justify-content:center; gap:.45rem; margin:0 0 .65rem; font-size:.88rem; }
.public-share-view-heading span { color:var(--muted, #667085); }
.public-general-matrix-wrap { max-height:none; }
.public-general-matrix { min-width:900px; }
.public-share-legends { margin-top:.7rem; }

@media (max-width: 760px) {
    .general-share-view-form { grid-template-columns:1fr; }
    .general-share-view-form > .btn { width:100%; justify-self:stretch; }
    .public-share-view-tabs { display:grid; grid-template-columns:1fr; }
    .public-share-view-tab { width:100%; }
    .public-general-matrix { min-width:820px; }
}

/* compact sharing workspace and deterministic WhatsApp launch */
.share-page-head { margin-bottom:.65rem; }
.share-command-bar { display:grid; grid-template-columns:auto minmax(260px,360px) minmax(240px,1fr); gap:.8rem 1rem; align-items:end; padding:.8rem 1rem; border-inline-start:4px solid #128c7e; }
.share-command-version { display:grid; gap:.15rem; min-width:180px; }
.share-command-version span,.field-label { font-size:.78rem; color:#66778a; font-weight:700; }
.share-command-version strong { color:#173a67; }
.whatsapp-mode-field.compact { min-width:0; }
.whatsapp-mode-field.compact select { min-height:38px; }
.share-command-bar .whatsapp-launch-note { align-self:center; margin:0; }
.compact-share-panel { gap:.75rem; }
.compact-view-form { grid-template-columns:repeat(3,minmax(150px,1fr)) auto; gap:.45rem; }
.general-view-option.compact-option { padding:.5rem .65rem; align-items:center; }
.general-view-option.compact-option input { margin-top:0; }
.general-share-primary-row { display:flex; gap:.55rem; flex-wrap:wrap; align-items:center; }
.general-share-primary-row > .general-share-workflow { flex:1 1 430px; }
.compact-workflow { padding:.55rem .7rem; }
.share-secondary-details { border-top:1px dashed #d9e2ec; padding-top:.5rem; }
.share-secondary-details summary { cursor:pointer; color:#45617f; font-weight:700; font-size:.84rem; }
.share-secondary-content { display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; margin-top:.6rem; }
.share-secondary-content .general-share-url { flex:1 1 420px; min-width:220px; }
.teacher-share-workspace { display:grid; gap:.8rem; }
.teacher-share-toolbar { display:flex; justify-content:space-between; gap:1rem; align-items:center; flex-wrap:wrap; }
.teacher-share-toolbar h2 { margin:.15rem 0 0; }
.teacher-share-toolbar .eyebrow { color:#254f7f; font-size:.78rem; font-weight:800; }
.teacher-picker-row { display:flex; gap:.65rem; align-items:end; justify-content:space-between; flex-wrap:wrap; padding:.65rem .75rem; border:1px solid #dce5ef; border-radius:.8rem; background:#f8fafc; }
.teacher-picker-field { display:grid; gap:.3rem; flex:1 1 360px; }
.teacher-picker-field > span { font-size:.78rem; color:#52677e; font-weight:800; }
.teacher-picker-field select { width:100%; min-height:42px; }
.teacher-picker-nav { display:flex; gap:.4rem; flex-wrap:wrap; }
.compact-prepare-all { justify-self:start; }
.teacher-share-card { display:grid; gap:.75rem; padding:.9rem; border:1px solid #d6e0eb; border-radius:1rem; background:#fff; box-shadow:0 3px 14px rgba(25,55,90,.04); }
.teacher-share-card-head { display:flex; justify-content:space-between; gap:1rem; align-items:flex-start; border-bottom:1px solid #e7edf4; padding-bottom:.65rem; }
.teacher-share-card-head > div:first-child { display:grid; gap:.2rem; }
.teacher-share-card-head > div:first-child strong { font-size:1.05rem; color:#15385f; }
.teacher-share-card-head > div:first-child small { color:#718096; }
.teacher-share-card-grid { display:grid; grid-template-columns:minmax(250px,1.1fr) minmax(180px,.8fr) minmax(250px,1fr); gap:.75rem; align-items:end; }
.teacher-share-card-grid > section { display:grid; gap:.35rem; align-content:start; min-width:0; }
.teacher-phone-form { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.4rem; }
.teacher-phone-form input { min-width:0 !important; width:100%; }
.teacher-share-send-section .sharing-primary-actions { align-items:flex-start; }
.teacher-link-details { margin-top:.1rem; }

@media (max-width: 980px) {
    .share-command-bar { grid-template-columns:1fr 1fr; }
    .share-command-bar .whatsapp-launch-note { grid-column:1/-1; }
    .compact-view-form { grid-template-columns:repeat(3,1fr); }
    .compact-view-form > .btn { grid-column:1/-1; justify-self:start; }
    .teacher-share-card-grid { grid-template-columns:1fr 1fr; }
    .teacher-share-send-section { grid-column:1/-1; }
}
@media (max-width: 680px) {
    .share-command-bar { grid-template-columns:1fr; }
    .share-command-bar .whatsapp-launch-note { grid-column:1; }
    .compact-view-form { grid-template-columns:1fr; }
    .compact-view-form > .btn { grid-column:1; width:100%; }
    .general-share-primary-row > .btn { flex:1 1 auto; }
    .teacher-picker-row { align-items:stretch; }
    .teacher-picker-nav { width:100%; }
    .teacher-picker-nav .btn { flex:1; }
    .teacher-share-card-head { flex-direction:column; }
    .teacher-share-card-grid { grid-template-columns:1fr; }
    .teacher-share-send-section { grid-column:1; }
    .teacher-share-card .sharing-primary-actions,
    .teacher-share-card .sharing-primary-actions > .btn,
    .teacher-share-card .share-confirm-block,
    .teacher-share-card .share-confirm-block form,
    .teacher-share-card .share-confirm-block .btn { width:100%; }
    .share-secondary-content { align-items:stretch; }
    .share-secondary-content form,
    .share-secondary-content form .btn { width:100%; }
}


/* WhatsApp native HTTPS links; no launcher JavaScript dependency */
.whatsapp-direct-help { display:grid; gap:.18rem; align-content:center; }
.whatsapp-direct-help > span { font-size:.78rem; color:#52677e; font-weight:800; }
.whatsapp-direct-help > strong { color:#0f766e; font-size:.9rem; }
@media (max-width:680px) {
    .general-share-workflow .sharing-primary-actions > .whatsapp-share-btn { width:100%; }
}

/* mobile/tablet shell + touch timetable editing */
.mobile-nav-toggle,
.mobile-nav-backdrop,
.mobile-bottom-nav { display:none; }
.drag-status-cancel { display:none; }

@media (max-width:1024px) {
  html.mobile-nav-lock,
  html.mobile-nav-lock body { overflow:hidden; }
  .app-shell { display:block; min-height:100vh; }
  .sidebar {
    position:fixed !important;
    top:0; right:0; bottom:0; left:auto;
    width:min(86vw,320px); height:100dvh !important;
    z-index:1200; overflow-y:auto !important; overscroll-behavior:contain;
    transform:translateX(105%); transition:transform .22s ease;
    box-shadow:-18px 0 46px rgba(5,20,38,.22);
    padding:18px 14px 28px;
  }
  .app-shell.mobile-nav-open .sidebar { transform:translateX(0); }
  .sidebar nav { grid-template-columns:1fr !important; }
  .sidebar nav a { min-height:46px; }
  .mobile-nav-backdrop {
    position:fixed; inset:0; z-index:1190; border:0; padding:0;
    background:rgba(4,16,31,.48); backdrop-filter:blur(2px); cursor:default;
  }
  .app-shell.mobile-nav-open .mobile-nav-backdrop { display:block; }
  .topbar {
    position:sticky !important; top:0; z-index:1000;
    min-height:58px; padding:7px 14px !important;
    display:grid; grid-template-columns:auto 1fr auto; gap:10px;
  }
  .mobile-nav-toggle {
    display:inline-flex; width:44px; height:44px; border:1px solid #d8e1eb; border-radius:11px;
    background:#fff; align-items:center; justify-content:center; flex-direction:column; gap:4px;
    padding:0; color:#173a67; box-shadow:0 3px 10px rgba(15,45,82,.06);
  }
  .mobile-nav-toggle span { display:block; width:20px; height:2px; border-radius:2px; background:currentColor; }
  .topbar-product { justify-self:start; }
  .topbar-user { justify-self:end; }
  .content { padding:18px 16px 30px !important; }
  .btn, button, select, input, textarea { touch-action:manipulation; }
  .btn { min-height:42px; }
  .btn.small { min-height:40px; }
}

@media (max-width:700px) {
  .topbar { grid-template-columns:auto 1fr; }
  .topbar-user { display:none; }
  .topbar-product { justify-self:end; }
  .topbar-product img { width:34px; height:34px; }
  .content { padding:14px 12px 92px !important; }
  .page-head { align-items:stretch; flex-direction:column; gap:12px; margin-bottom:14px; }
  .page-head h1 { font-size:1.35rem; margin-bottom:4px; }
  .page-head .actions { width:100%; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .page-head .actions > a,
  .page-head .actions > button,
  .page-head .actions > form { min-width:0; width:100%; }
  .page-head .actions > form .btn { width:100%; }
  .toolbar { display:grid; grid-template-columns:1fr; gap:10px; align-items:stretch; padding:12px; }
  .toolbar label { width:100%; min-width:0; }
  .toolbar select { width:100%; min-height:44px; }
  .selection-info { margin-inline-start:0; width:100%; display:grid; grid-template-columns:1fr 1fr; gap:7px; }
  .selection-info .btn { grid-column:1/-1; }
  .quality-inline-metrics { display:grid; grid-template-columns:1fr; }
  .approved-readonly .btn { width:100%; }
  .mobile-bottom-nav {
    position:fixed; right:8px; left:8px; bottom:max(8px, env(safe-area-inset-bottom)); z-index:1050;
    height:64px; display:grid; grid-template-columns:repeat(5,1fr); align-items:stretch;
    border:1px solid rgba(203,215,227,.96); border-radius:18px; background:rgba(255,255,255,.96);
    box-shadow:0 12px 36px rgba(9,35,66,.18); backdrop-filter:blur(18px); overflow:hidden;
  }
  .mobile-bottom-nav a,
  .mobile-bottom-nav button {
    border:0; background:transparent; color:#5c6f85; text-decoration:none; min-width:0;
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; padding:5px 2px;
    font-family:inherit;
  }
  .mobile-bottom-nav span { font-size:1.18rem; line-height:1; }
  .mobile-bottom-nav b { font-size:.68rem; white-space:nowrap; }
  .mobile-bottom-nav a.active { color:#173a67; background:#f3f7fc; }
}

/* keep the original horizontal timetable on touch devices.
   Mobile/tablet retain the desktop grid shape with native horizontal scrolling, while
   the tap-to-move/tap-to-swap controls from 6.8 remain available. */
@media (max-width:900px) {
  .edit-timetable-wrap {
    overflow-x:auto !important; overflow-y:visible;
    -webkit-overflow-scrolling:touch; overscroll-behavior-inline:contain;
    border:1px solid #dbe4ef; border-radius:14px; background:#fff;
    scrollbar-gutter:stable;
  }
  .edit-timetable-wrap .drag-timetable {
    min-width:1000px !important; width:100% !important; table-layout:fixed;
  }
  .edit-timetable-wrap .drag-timetable th.sticky {
    position:sticky !important; right:0; z-index:6;
    box-shadow:-6px 0 12px rgba(15,45,82,.06);
  }
  .edit-timetable-wrap .drag-timetable thead th.sticky { z-index:8; }
  .edit-timetable-wrap .drag-timetable .lesson-cell-stack { min-height:76px; }
  .edit-timetable-wrap .drag-timetable .lesson { min-height:70px; }
  .edit-timetable-wrap .drag-timetable .drag-target-overlay { border-radius:8px; }
  .drag-help { padding:10px 12px; margin-bottom:10px; }
  .drag-help > span:first-of-type { display:none; }
  .drag-help > b { font-size:.86rem; }
  .drag-help > b::after { content:' اضغط «نقل / تبديل» داخل الحصة، ثم اضغط الموضع الهدف.'; font-weight:500; color:#5f7186; }
  .drag-legend { width:100%; font-size:.72rem; justify-content:flex-start; }
  .drag-handle {
    display:flex !important; align-items:center; justify-content:center; width:100%; min-height:38px;
    margin-top:4px; padding:7px 9px; border-radius:8px; background:#e9f1fb; border:1px solid #c8d9ec;
    color:#173a67; opacity:1 !important; font-size:.78rem !important; font-weight:800; cursor:pointer;
  }
  .drag-status {
    position:fixed; z-index:1080; right:12px; left:12px; bottom:12px; margin:0 !important;
    padding:12px 14px; max-height:36vh; overflow:auto; box-shadow:0 14px 40px rgba(8,30,56,.22);
    border-radius:14px; background:#fff;
  }
  .drag-status > div:first-child { padding-inline-end:74px; }
  .drag-status-cancel { display:inline-flex; position:absolute; top:9px; inset-inline-end:9px; min-height:36px !important; }
  .draggable-lesson.is-dragging { outline:3px solid #2f78c7; outline-offset:1px; }
}

@media (max-width:700px) {
  .drag-status { bottom:82px; }
}
@media screen {
  .lesson:disabled { opacity:1; cursor:default; }
}


/* WhatsApp contact: sidebar on desktop, floating shortcut on touch layouts only */
.app-whatsapp-contact {
    display: none;
    position: fixed;
    inset-inline-start: 18px;
    bottom: 18px;
    z-index: 930;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 8px 12px;
    border-radius: 999px;
    background: #fff;
    border: 1px solid var(--line, #d7dde6);
    box-shadow: 0 8px 24px rgba(15, 23, 42, .14);
    color: var(--text, #172033);
    text-decoration: none;
    font-weight: 700;
}
.app-whatsapp-contact img { width: 22px; height: 22px; flex: 0 0 auto; }
.app-whatsapp-contact:hover { transform: translateY(-1px); box-shadow: 0 10px 28px rgba(15, 23, 42, .18); }
@media (max-width: 900px) {
    .app-whatsapp-contact {
        display: inline-flex;
        bottom: calc(74px + env(safe-area-inset-bottom));
        inset-inline-start: 12px;
        width: 46px;
        height: 46px;
        min-height: 46px;
        padding: 10px;
        justify-content: center;
    }
    .app-whatsapp-contact span { display: none; }
    .app-whatsapp-contact img { width: 25px; height: 25px; }
}
/* 6.13 — distinguish authenticated-but-forbidden routes from unauthenticated access. */
.access-denied { text-align: center; }
.access-denied-code {
    width: 72px;
    height: 72px;
    margin: 0 auto 14px;
    border-radius: 20px;
    display: grid;
    place-items: center;
    font-size: 1.25rem;
    font-weight: 900;
    letter-spacing: .04em;
    background: rgba(185, 28, 28, .08);
    border: 1px solid rgba(185, 28, 28, .18);
    color: #991b1b;
}
.access-denied .hint { max-width: 430px; margin-inline: auto; }

