.protocol-heading { align-items: center; }
.protocol-heading .portal-button { width: auto; text-decoration: none; }
.protocol-auth-required { max-width: 680px; margin-inline: auto; text-align: center; }
.protocol-auth-required h1 { margin: 5px 0 10px; color: var(--navy); }
.protocol-auth-required .portal-button { width: auto; margin-top: 14px; text-decoration: none; }
.protocol-overview-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 22px; }
.protocol-list { display: grid; gap: 11px; }
.protocol-list-item { padding: 15px; border: 1px solid var(--line); border-radius: 11px; }
.protocol-list-item-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 9px; }
.protocol-list-item h3 { margin: 7px 0 4px; color: var(--navy); font-size: 1rem; }
.protocol-list-item p { margin: 0; color: var(--ink-soft); font-size: 0.8rem; }
.protocol-list-item .portal-button { width: 100%; margin-top: 12px; }
.protocol-editor { padding: clamp(20px, 4vw, 36px); }
.protocol-linked-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0 0 25px; }
.protocol-linked-meta div { min-width: 0; padding: 12px; background: var(--mist); border: 1px solid var(--line); border-radius: 9px; }
.protocol-linked-meta dt { color: var(--ink-soft); font-size: 0.68rem; font-weight: 800; text-transform: uppercase; }
.protocol-linked-meta dd { margin: 5px 0 0; color: var(--navy); font-size: 0.82rem; font-weight: 800; overflow-wrap: anywhere; }
.protocol-workflow-card { margin:0 0 24px; padding:20px; border:1px solid #b8ddd4; border-radius:12px; background:#f1fbf8; }
.protocol-workflow-card h3 { margin:4px 0 8px; color:var(--navy); }
.protocol-payment-layout { display:grid; grid-template-columns:minmax(220px,.65fr) minmax(0,1.35fr); align-items:start; gap:clamp(18px,4vw,34px); margin-top:16px; }
.protocol-payment-qr { min-width:0; max-width:360px; margin:0; padding:14px; background:white; border:1px solid #b8ddd4; border-radius:12px; box-shadow:0 8px 22px rgba(18,61,77,.08); }
.protocol-payment-qr a { display:block; border-radius:8px; outline-offset:4px; }
.protocol-payment-qr img { display:block; width:100%; height:auto; max-height:520px; object-fit:contain; border-radius:8px; }
.protocol-payment-qr figcaption { margin-top:10px; color:var(--ink-soft); font-size:.76rem; line-height:1.5; overflow-wrap:anywhere; }
.protocol-payment-details { min-width:0; }
.protocol-payment-details > p { margin:0 0 16px; color:var(--ink); line-height:1.6; overflow-wrap:anywhere; }
.protocol-payment-details .portal-button { width:auto; min-height:44px; }
.protocol-decision-heading { display:flex; justify-content:space-between; gap:16px; align-items:start; border-bottom:1px solid #b8ddd4; }
.protocol-decision-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.protocol-decision-grid div { padding:10px; background:white; border-radius:8px; }
.protocol-decision-grid dt { font-size:.68rem; font-weight:800; text-transform:uppercase; color:var(--ink-soft); }
.protocol-decision-grid dd { margin:5px 0 0; white-space:pre-wrap; }
.protocol-certificate-statement { margin:28px 0; padding:20px; text-align:center; font-size:1.05rem; line-height:1.7; border-block:2px solid var(--teal-dark); }
@media print {
  body.print-protocol-decision .portal-main { display:block!important; }
  body.print-protocol-decision .portal-shell { width:100%; max-width:none; margin:0; padding:0; }
  body.print-protocol-decision * { visibility:hidden!important; }
  body.print-protocol-decision #protocol-decision-section, body.print-protocol-decision #protocol-decision-section * { visibility:visible!important; }
  body.print-protocol-decision #protocol-decision-section { position:absolute; inset:0; margin:0; border:0; background:white; box-shadow:none; }
  body.print-protocol-decision .screening-actions { display:none!important; }
}
.protocol-step { min-width: 0; margin: 0; padding: 22px; border: 1px solid var(--line); border-radius: 14px; }
.protocol-step > legend { padding-right: 10px; color: var(--navy); font-weight: 800; }
.protocol-step > legend span { display: inline-flex; width: 26px; height: 26px; align-items: center; justify-content: center; margin-right: 8px; color: white; background: var(--teal-dark); border-radius: 50%; font-size: 0.75rem; }
.protocol-step .field-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.protocol-step textarea { resize: vertical; }
.protocol-step-introduction { margin: 0 0 18px; color: var(--ink-soft); font-size: 0.82rem; line-height: 1.55; }
.protocol-document-checklist { display: grid; gap: 10px; margin: 16px 0 24px; }
.protocol-document-section-title { margin: 20px 0 0; color: var(--navy); font-size: 0.95rem; }
.protocol-no-conditional-documents { margin: 0; padding: 13px; color: var(--ink-soft); background: #f8fbfc; border: 1px dashed var(--line); border-radius: 9px; font-size: 0.8rem; }
.protocol-document-row { display: grid; grid-template-columns: minmax(220px, 0.85fr) minmax(320px, 1.15fr); align-items: center; gap: 16px; padding: 12px; background: var(--mist); border: 1px solid var(--line); border-radius: 10px; }
.protocol-document-row.is-ready { background: #f3fbf8; border-color: #b8ddd4; }
.protocol-document-summary { min-width: 0; }
.protocol-document-heading { display: flex; align-items: center; gap: 9px; }
.protocol-document-heading strong { color: var(--navy); font-size: 0.8rem; }
.protocol-document-summary small { display: block; overflow-wrap: anywhere; margin-top: 6px; color: var(--ink-soft); }
.protocol-document-state { flex: 0 0 auto; padding: 4px 7px; color: #7a2525; background: #fff0f0; border-radius: 999px; font-size: 0.64rem; font-weight: 800; }
.protocol-document-state.is-ready { color: var(--teal-dark); background: #e1f3ee; }
.protocol-document-uploader { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; min-width: 0; }
.protocol-document-uploader input[type="file"] { width: 100%; min-width: 0; padding: 8px; background: white; }
.protocol-document-uploader .portal-button { width: auto; white-space: nowrap; }
.protocol-drive-fallback { min-width: 0; grid-column: 2; }
.protocol-drive-fallback summary { cursor: pointer; font-weight: 600; }
.protocol-drive-fallback input { display: block; width: 100%; min-height: 44px; margin: 8px 0; }
.protocol-drive-fallback .portal-button { min-height: 44px; }
@media (max-width: 768px) { .protocol-drive-fallback { grid-column: 1; } .protocol-drive-fallback .portal-button { width: 100%; } }
.protocol-conditional-upload { margin: 24px 0 16px; padding: 16px; background: #f8fbfc; border: 1px solid var(--line); border-radius: 11px; }
.protocol-conditional-upload h3, .protocol-uploaded-heading { margin: 0 0 6px; color: var(--navy); font-size: 0.95rem; }
.protocol-conditional-upload .field { margin-bottom: 12px; }
.protocol-conditional-upload > .portal-button { width: 100%; }
.protocol-uploaded-heading { margin-top: 22px; }
.protocol-review-card { margin: 18px 0; padding: 16px; background: var(--mist); border: 1px solid var(--line); border-radius: 11px; }
.protocol-review-card h3 { margin: 0 0 8px; color: var(--navy); }
.protocol-review-card ul { margin: 0; padding-left: 20px; color: var(--ink-soft); line-height: 1.6; }
.protocol-form.is-read-only .protocol-step input, .protocol-form.is-read-only .protocol-step select, .protocol-form.is-read-only .protocol-step textarea { cursor: default; }
.protocol-form.is-read-only .protocol-document-uploader, .protocol-form.is-read-only .protocol-conditional-upload, .protocol-form.is-read-only .protocol-document-delete { display: none !important; }
.protocol-empty-step { color: var(--ink-soft); font-style: italic; }

@media (max-width: 820px) {
  .protocol-overview-grid { grid-template-columns: 1fr; }
  .protocol-linked-meta { grid-template-columns: 1fr; }
  .protocol-document-row { grid-template-columns: 1fr; }
  .protocol-payment-layout { grid-template-columns:1fr; }
  .protocol-payment-qr { width:min(100%,360px); justify-self:center; }
}
@media (max-width: 620px) {
  .protocol-heading { align-items: stretch; }
  .protocol-heading .portal-button { width: 100%; }
  .protocol-step { padding: 17px; }
  .protocol-step .field-grid { grid-template-columns: 1fr; }
  .protocol-document-uploader { grid-template-columns: 1fr; }
  .protocol-document-uploader .portal-button { width: 100%; }
  .protocol-decision-grid { grid-template-columns:1fr; }
  .protocol-payment-details .portal-button { width:100%; }
}
@media (max-width: 380px) {
  .protocol-editor { padding: 16px; }
  .protocol-step { padding: 14px; }
}
