/* Admin workspace and file preparation. Uses the site's shared colour tokens. */
.admin-page{max-width:1440px;margin:18px auto 48px;padding:0 28px}
.admin-layout{grid-template-columns:205px minmax(0,1fr);gap:32px}
.admin-content{min-width:0}
.admin-sidebar{padding:18px 12px;background:var(--paper);border:1px solid var(--line);border-radius:16px;top:18px}
.admin-role{padding:0 12px 16px;color:var(--muted);font-size:11px;font-weight:650;letter-spacing:.4px}
.admin-tab{display:flex;justify-content:space-between;align-items:center;min-height:42px;font-size:13px}
.admin-tab.active{background:var(--accent-soft);color:var(--accent)}
.admin-sidebar-foot{display:grid;gap:4px;margin:18px 10px 0;padding-top:12px;border-top:1px solid var(--line)}
.admin-sidebar-foot .btn{justify-content:flex-start;font-size:11px}
.nav-live-dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}
.admin-heading{margin-bottom:22px;align-items:center}
.admin-heading h1{font-size:32px;letter-spacing:-1px}
.admin-heading p{max-width:660px;font-size:13px;margin-top:8px}
.admin-breadcrumb{display:flex;gap:12px;align-items:center;min-height:38px;margin-bottom:12px;color:var(--subtle);font-size:12px}
.admin-breadcrumb .btn{font-size:12px;min-height:32px}
.admin-content .card{padding:24px}
.admin-content .empty-state{min-height:160px}
.collection-toolbar{display:flex;gap:12px;align-items:center;margin:0 0 18px;flex-wrap:wrap}
.collection-toolbar input{max-width:350px}
.collection-toolbar select{max-width:180px}
.collection-toolbar .input{min-height:42px;font-size:13px}
.collection-toolbar>span{margin-left:auto}
.collection-list{display:grid;gap:10px}
.work-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 22px;border:1px solid var(--line);border-radius:13px;background:var(--paper)}
.work-row-main{min-width:0}
.work-row h3{font-size:16px;overflow-wrap:anywhere}
.work-row p{color:var(--muted);font-size:12px;margin-top:6px}
.work-row-actions{flex-shrink:0;gap:8px}
.danger-text{color:var(--danger)!important}
.count-pill{display:inline-flex;align-items:center;justify-content:center;min-width:25px;padding:2px 7px;border-radius:6px;background:var(--soft);color:var(--muted);font-size:12px;vertical-align:middle}
.collection-section{margin:26px 0}
.collection-section h2{font-size:19px;margin-bottom:14px}
.collection-section .work-row+.work-row{margin-top:8px}
.room-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.room-card{border:1px solid var(--line);border-radius:15px;padding:22px;background:var(--paper);display:flex;flex-direction:column;gap:17px;min-width:0}
.room-card-title{display:flex;gap:14px;align-items:flex-start;justify-content:space-between}
.room-card-title h3{font-size:18px;line-height:1.4;overflow-wrap:anywhere}
.room-card-title p{margin-top:5px}
.room-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.room-counts span{color:var(--muted);font-size:11px}
.room-counts strong{display:block;font-size:22px;line-height:1.3;color:var(--ink)}
.room-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:auto}
.room-card-footer .btn{font-size:11px}
.action-menu{position:relative}
.action-menu summary{display:grid;place-items:center;width:32px;height:34px;font-size:22px;cursor:pointer;list-style:none;border-radius:7px}
.action-menu summary::-webkit-details-marker{display:none}
.action-menu summary:hover{background:var(--soft)}
.action-menu>div{position:absolute;right:0;top:39px;min-width:190px;z-index:30;background:#fff;border:1px solid var(--line);border-radius:10px;padding:5px;box-shadow:0 10px 32px #19364820}
.action-menu button{display:block;width:100%;border:0;border-radius:6px;background:transparent;text-align:left;padding:10px 12px;font-size:12px;color:var(--ink)}
.action-menu button:hover{background:var(--soft)}
.ml-health{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;border:1px solid var(--line);background:white;padding:14px 18px;border-radius:12px;margin-bottom:20px}
.ml-health>div{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.upload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
.upload-grid .card+.card{margin-top:0}
.upload-card{min-width:0}
.section-step{display:flex;gap:13px;margin-bottom:23px}
.section-step>span{display:grid;place-items:center;width:29px;height:29px;background:var(--accent-soft);color:var(--accent);border-radius:8px;flex:none;font-weight:650}
.section-step h2{font-size:19px;line-height:1.5}
.section-step p{font-size:12px;color:var(--muted);margin-top:4px}
.upload-dropzone{border:1px dashed #a7bcc7;border-radius:12px;padding:19px;background:#f9fbfc;transition:border-color .15s,background .15s}
.upload-dropzone.dragging{border-color:var(--accent);background:var(--accent-soft)}
.upload-dropzone label{display:grid;gap:5px;cursor:pointer}
.upload-dropzone label strong{font-size:13px}
.upload-dropzone label span{font-size:11px;color:var(--muted)}
.upload-dropzone input{max-width:100%;font-size:12px;margin-top:15px}
.upload-dropzone input::file-selector-button{border:1px solid #cad9df;background:#fff;border-radius:7px;padding:7px 10px;color:var(--brand);font:inherit;margin-right:10px;cursor:pointer}
.upload-file-summary{font-size:11px;color:var(--muted);overflow-wrap:anywhere;margin-top:12px}
.upload-preview-head{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--muted);margin-bottom:8px}
.csv-preview-table{max-height:230px;overflow:auto}
.csv-preview-table td{max-width:260px;overflow-wrap:anywhere;vertical-align:top;min-width:70px}
.csv-preview-table th{position:sticky;top:0;background:#f8fafb;z-index:1}
.upload-progress{display:grid;gap:7px;font-size:12px;color:var(--muted)}
.upload-progress progress{width:100%;height:7px;accent-color:var(--accent)}
.upload-receipt{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:18px}
.upload-receipt>span{font-size:12px}
.dialog:has(.csv-preview-table){max-width:850px}
.dialog .csv-preview-table{margin-top:18px;max-height:50vh}
.admin-content .editor-footer{border:1px solid var(--line);border-radius:12px;box-shadow:0 -4px 24px #19364808;padding:15px 18px;bottom:14px;background:#fff}
.admin-content .editor-question{border-radius:13px;padding:22px;margin-top:16px}
.admin-content .editor-top{gap:20px}
.admin-content .live-table th{font-size:10px}
.admin-content .board-panel{border-radius:16px}
@media(max-width:1180px){.room-grid,.upload-grid{grid-template-columns:1fr}.work-row{flex-wrap:wrap}.work-row-actions{width:100%;justify-content:flex-end}.admin-layout{grid-template-columns:180px minmax(0,1fr);gap:22px}}
@media(max-width:780px){.admin-page{padding:0 16px;margin-top:8px}.admin-layout{display:block}.admin-sidebar{position:static;padding:10px;margin-bottom:22px}.admin-role,.admin-sidebar-foot{display:none}.admin-menu{display:flex;overflow:auto;gap:5px;padding-bottom:2px}.admin-tab{flex:none;font-size:12px;white-space:nowrap;padding:9px 12px}.admin-heading{align-items:flex-start;flex-wrap:wrap;gap:14px}.admin-heading h1{font-size:28px}.admin-content .card{padding:20px}.collection-toolbar input{max-width:none;flex:1 1 180px}.collection-toolbar select{max-width:150px}.collection-toolbar>span{display:none}.room-card{padding:18px}.work-row{padding:18px}.room-card-title h3{font-size:17px}.upload-grid{gap:14px}.ml-health{padding:12px 15px}.upload-preview-head{flex-wrap:wrap}.admin-content .field-row{grid-template-columns:1fr}.admin-breadcrumb{margin-bottom:8px}}
@media(prefers-reduced-motion:reduce){.admin-content *{scroll-behavior:auto!important;transition:none!important}}
/* Assessment workflows */
.stage-navigation { margin: 18px 0; padding: 18px 22px; }
.stage-navigation .actions { flex-wrap: wrap; }
.stage-navigation p { margin: 12px 0 0; }
.scan-final { margin-top: 24px; }
.scan-qr { max-width: 300px; margin: 20px auto; }
.scan-qr svg, .scan-qr canvas { display: block; width: 100%; height: auto; }
.scan-final h3 { margin-top: 24px; }
.host-alerts { display: grid; gap: 12px; margin-bottom: 20px; }
.host-alerts:empty, .host-alerts[hidden] { display: none; }
.host-alerts .notice { margin: 0; }
.access-dialog { width: min(800px, calc(100vw - 32px)); max-height: 90vh; overflow: auto; }
.author-preview-banner {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 20px;
  padding: 16px 20px;
  border: 1px solid #a9c8dc;
  border-radius: 16px;
  background: #edf6fc;
  color: #183b4e;
  box-shadow: 0 4px 16px #173c4d12;
}
.author-preview-banner strong { display: block; font-size: 16px; }
.author-preview-banner p { margin: 4px 0 0; max-width: 720px; font-size: 13px; line-height: 1.5; }
.author-preview-banner .actions { flex-shrink: 0; }
.author-preview-instructions { margin-top: 8px; font-size: 13px; }
.author-preview-instructions summary { cursor: pointer; font-weight: 600; }
.author-preview-instructions[open] { padding-bottom: 4px; }
@media (max-width: 760px) {
  .author-preview-banner { position: static; align-items: stretch; flex-direction: column; gap: 12px; padding: 14px; }
  .author-preview-banner .actions { flex-wrap: wrap; }
  .author-preview-banner .btn { flex: 1; }
}

.question-navigation > summary { display: none; }
.question-map-scroll { max-height: min(60vh, 660px); overflow-y: auto; padding: 2px 5px 3px 2px; overscroll-behavior: contain; }
.question-map.question-map--list { display: block; overflow: visible; padding: 0; }
.question-nav-group + .question-nav-group { margin-top: 22px; }
.question-nav-group h4 { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0 4px 9px; padding: 3px 0; background: var(--canvas); color: var(--muted); font-size: 12px; font-weight: 650; }
.question-nav-group h4 span { font-size: 11px; font-weight: 500; }
.question-map--list .question-chip { display: grid; grid-template-columns: 36px minmax(0, 1fr) 14px; align-items: center; gap: 9px; width: 100%; min-width: 0; min-height: 44px; height: auto; aspect-ratio: auto; padding: 8px 10px; margin-bottom: 7px; border-radius: 10px; font-size: 13px; text-align: left; }
.question-map--list .question-chip[hidden] { display: none; }
.question-map--list .question-chip:hover { background: #f0f6f8; }
.question-map--list .question-chip.answered { background: var(--accent-soft); }
.question-map--list .question-chip.current { border-color: var(--brand); color: var(--brand); box-shadow: inset 2px 0 var(--brand); }
.question-short-code { display: grid; place-items: center; min-height: 28px; padding: 2px 3px; border-radius: 6px; background: var(--soft); font-size: 12px; font-weight: 700; }
.question-chip.current .question-short-code { background: var(--brand); color: #fff; }
.question-list-label { line-height: 1.35; }
.question-answer-mark { color: var(--accent); font-weight: 700; }
.question-heading { margin: 0 0 18px; font-size: 24px; line-height: 1.35; }
.multipart-answers { display: grid; gap: 20px; margin-top: 26px; padding-top: 22px; border-top: 1px solid var(--line); }
.multipart-answer-header { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.multipart-answer-header h3 { margin: 0; font-size: 18px; }
.multipart-answers > .field-help { margin-top: -12px; }
.multipart-answer-field { display: grid; gap: 10px; }
.multipart-answer-field > label { display: flex; align-items: flex-start; gap: 10px; font-weight: 600; line-height: 1.55; white-space: pre-wrap; }
.multipart-part-index { display: grid; place-items: center; flex: 0 0 27px; min-height: 27px; margin-top: 1px; border-radius: 7px; background: var(--accent-soft); color: var(--accent); font-size: 12px; }
.multipart-answer-field .answer-text { min-height: 132px; }
.multipart-answer-field input { max-width: 360px; }
.multipart-optional { margin-left: auto; font-weight: 400; white-space: nowrap; }
.multipart-editor { display: grid; gap: 16px; margin: 22px 0; }
.multipart-editor h3 { margin: 0 0 4px; font-size: 16px; }
.multipart-editor-part { display: grid; gap: 14px; padding: 18px; border: 1px solid var(--line); border-radius: 12px; background: #fbfcfd; }
.multipart-editor-part .field { margin: 0; }
.multipart-editor-part .field-row { align-items: end; }
.multipart-label-input { min-height: 84px; }
.multipart-private > summary { cursor: pointer; color: var(--muted); font-size: 12px; }
.multipart-private[open] { display: grid; gap: 14px; }
.multipart-private[open] > summary { margin-bottom: 14px; }
@media (max-width: 720px) { .multipart-optional { margin-left: 0; } .multipart-answer-field > label { flex-wrap: wrap; } .multipart-editor-part { padding: 14px; } }
@media (max-width: 720px) {
  .question-navigation { border: 1px solid var(--line); border-radius: 12px; background: #fff; }
  .question-navigation > summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 13px 15px; font-size: 14px; cursor: pointer; list-style: none; }
  .question-navigation > summary::-webkit-details-marker { display: none; }
  .question-navigation > summary strong::after { content: ' ▾'; }
  .question-navigation[open] > summary strong::after { content: ' ▴'; }
  .question-map-scroll { max-height: 50vh; padding: 4px 12px 8px; }
  .question-heading { font-size: 22px; }
}
.question-card:has(.multipart-answers) .question-prompt { font-size: 16px; font-weight: 400; line-height: 1.7; }
.question-card:has(.multipart-answers) .question-prompt::first-line { font-size: 18px; font-weight: 650; }

/* Keep every admin action available on a narrow screen. */
@media (max-width: 780px) {
  .admin-page { padding: 0 12px; margin: 10px auto 32px; }
  .admin-layout, .admin-content, .admin-content form, .admin-content .card,
  .admin-content .field, .admin-content .field-row, .admin-content .stats,
  .admin-content .stat-card, .admin-content .toolbar, .admin-content .inline-form,
  .admin-content .editor-question, .admin-content .multipart-editor-part { min-width: 0; max-width: 100%; }
  .admin-content { overflow-wrap: anywhere; }
  .admin-sidebar { padding: 10px; margin-bottom: 20px; }
  .admin-role { display: block; padding: 2px 5px 10px; }
  .admin-menu { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; overflow: visible; padding: 0; border: 0; }
  .admin-tab { min-width: 0; min-height: 44px; padding: 10px; gap: 7px; white-space: normal; overflow-wrap: anywhere; }
  .admin-sidebar-foot { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 10px 5px 0; padding-top: 8px; }
  .admin-sidebar-foot .btn { min-height: 44px; }
  .admin-content .btn, .admin-content .remove-button { min-height: 44px; }
  .admin-content .btn { min-width: 0; max-width: 100%; padding: 10px 12px; white-space: normal; overflow-wrap: anywhere; }
  .admin-content .remove-button { display: grid; place-items: center; min-width: 44px; padding: 8px; }
  .admin-content .input { min-width: 0; max-width: 100%; min-height: 46px; font-size: 16px; }
  .admin-content .check-row { min-height: 44px; align-items: center; }
  .admin-content .check-row input { margin-top: 0; }
  .admin-content .check-row > span { min-width: 0; }
  .admin-content .badge { max-width: 100%; white-space: normal; }
  .admin-content .card { padding: 18px 16px; }
  .admin-heading { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .admin-heading > div { min-width: 0; }
  .admin-heading h1 { font-size: clamp(24px, 6.6vw, 30px); line-height: 1.2; }
  .admin-heading > .actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-heading > .btn, .admin-heading > .actions .btn { width: 100%; }
  .admin-breadcrumb { flex-wrap: wrap; gap: 5px 10px; }
  .admin-breadcrumb > span { min-width: 0; }
  .collection-toolbar { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .collection-toolbar input, .collection-toolbar select { width: 100%; max-width: none; }
  .collection-toolbar > span { display: block; margin-left: 0; }
  .work-row { align-items: stretch; gap: 14px; padding: 16px; }
  .work-row > div { min-width: 0; max-width: 100%; }
  .work-row-main { width: 100%; }
  .work-row-main > .actions { align-items: flex-start; }
  .work-row-main h3 { min-width: 0; max-width: 100%; line-height: 1.45; }
  .work-row-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; gap: 8px; }
  .work-row-actions > .btn { width: 100%; }
  .work-row-actions > .btn:first-child, .work-row-actions > .btn:last-child { grid-column: 1 / -1; }
  .room-card { padding: 16px; gap: 15px; }
  .room-card-title { flex-wrap: wrap; gap: 10px; }
  .room-card-title > div { flex: 1 1 170px; min-width: 0; }
  .room-counts { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .room-counts > span { min-width: 0; line-height: 1.5; }
  .room-card-footer { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .room-card-footer > .btn { width: 100%; }
  .room-card-footer > .actions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 44px; gap: 8px; }
  .action-menu summary { width: 44px; height: 44px; }
  .action-menu > div { top: 49px; width: min(230px, calc(100vw - 64px)); min-width: 0; }
  .action-menu button { min-height: 44px; white-space: normal; overflow-wrap: anywhere; }
  .admin-content .table-wrap { min-width: 0; max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
  .admin-content .data-table .btn { white-space: nowrap; }
  .admin-content .data-table th, .admin-content .data-table td { padding: 12px; }
  .admin-content .toolbar, .admin-content .inline-form { align-items: stretch; flex-wrap: wrap; gap: 10px; }
  .admin-content .toolbar > .input, .admin-content .inline-form > .field { flex: 1 1 100%; min-width: 0; max-width: 100%; }
  .admin-content .live-toolbar { grid-template-columns: minmax(0, 1fr); }
  .admin-content .live-meta { flex-wrap: wrap; }
  .ml-health, .ml-health > div, .upload-receipt { min-width: 0; align-items: flex-start; }
  .upload-grid { grid-template-columns: minmax(0, 1fr); }
  .section-step > div { min-width: 0; }
  .upload-dropzone { min-width: 0; padding: 15px 12px; }
  .upload-dropzone input { display: block; width: 100%; min-width: 0; font-size: 14px; }
  .upload-dropzone input::file-selector-button { min-height: 44px; max-width: 100%; padding: 10px; white-space: normal; }
  .upload-preview-head { min-width: 0; flex-direction: column; align-items: flex-start; }
  .upload-receipt > span { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
  .admin-content .editor-top, .admin-content .editor-answer-row { grid-template-columns: minmax(0, 1fr); }
  .admin-content .editor-question { padding: 18px 14px; }
  .editor-question-top { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; }
  .editor-question-top > .actions { display: grid; grid-template-columns: minmax(0, 1fr) 44px; width: 100%; gap: 8px; }
  .editor-question-top .input { width: 100%; font-size: 16px; }
  .editor-option { grid-template-columns: 24px minmax(0, 1fr) 44px; gap: 7px; }
  .editor-option input[type=checkbox], .editor-option input[type=radio] { width: 22px; height: 22px; }
  .admin-content .editor-footer { position: static; display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 15px; }
  .admin-content .editor-footer .small { max-width: none; font-size: 12px; }
  .admin-content .editor-footer .btn { width: 100%; }
  .multipart-editor > .actions { align-items: flex-start; }
  .multipart-editor-part > .actions { flex-wrap: nowrap; }
  .multipart-editor-part > .actions strong { min-width: 0; }
  .multipart-private > summary { display: flex; align-items: center; min-height: 44px; line-height: 1.5; }
  .host-alerts .notice { min-width: 0; overflow-wrap: anywhere; }
  .admin-content .board-panel { padding: 28px 14px; }
  .admin-content .board-code { font-size: clamp(28px, 9vw, 54px); letter-spacing: .08em; overflow-wrap: anywhere; }
  .admin-content .board-panel:fullscreen .board-code { font-size: clamp(28px, 9vw, 72px); }
  body:has(.admin-page) .dialog-backdrop { padding: 12px; }
  body:has(.admin-page) .dialog, .access-dialog { width: 100%; min-width: 0; max-width: 100%; max-height: calc(100dvh - 24px); padding: 20px 16px; overflow-y: auto; overflow-wrap: anywhere; }
  body:has(.admin-page) .dialog :is(form, .field, .field-row, fieldset, .table-wrap), .access-dialog :is(form, .field, fieldset) { min-width: 0; max-width: 100%; }
  body:has(.admin-page) .dialog .field-row { grid-template-columns: minmax(0, 1fr); }
  body:has(.admin-page) .dialog .input, .access-dialog .input { min-width: 0; max-width: 100%; font-size: 16px; }
  body:has(.admin-page) .dialog .actions, .access-dialog .actions { align-items: stretch; }
  body:has(.admin-page) .dialog .btn, .access-dialog .btn { flex: 1 1 100%; min-height: 44px; max-width: 100%; padding: 10px 12px; white-space: normal; overflow-wrap: anywhere; }
  body:has(.admin-page) .dialog .check-row, .access-dialog .check-row { min-height: 44px; align-items: center; }
  body:has(.admin-page) .dialog .check-row > span, .access-dialog .check-row > span { min-width: 0; }
  body:has(.admin-page) .dialog .work-row > .btn, .access-dialog .work-row > .btn { width: 100%; }
  body:has(.admin-page) .dialog [data-access-raw], .access-dialog [data-access-raw] { white-space: normal; overflow-wrap: anywhere; }
}
