/* Only the participant questionnaire/review use this shell; welcome/confirmation are unchanged. */
.modal-backdrop:has(.participant-collection-shell) { z-index: 121; }
.modal.participant-collection-shell { width: min(780px, 100%); height: min(92dvh, 920px); max-height: min(92dvh, 920px); padding: 0; overflow: hidden; }
.participant-collection-modal { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; height: 100%; min-height: 0; overflow: hidden; }
.participant-collection-header { padding: 18px 26px 14px; border-bottom: 1px solid var(--line); background: var(--paper); }
.participant-collection-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.participant-collection-top .eyebrow { margin: 0; font-size: 12px; }
.participant-collection-header .close-button { width: 44px; height: 44px; min-height: 44px; padding: 0; flex-shrink: 0; }
.participant-collection-header h2 { min-width:0; overflow-wrap:anywhere; margin: 2px 0 8px; font-family: var(--serif); font-size: 36px; line-height: 1.08; font-weight: 400; }
.participant-collection-intro { display: flex; align-items: center; gap: 12px; justify-content: space-between; }
.participant-collection-intro > p { margin: 0; font-size: 16px; line-height: 1.4; }
.participant-collection-language { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.participant-collection-language > span { font-size: 14px; }
.participant-collection-language .language-picker { width: auto; max-width: 220px; min-height: 44px; margin: 0; padding: 0 10px; gap: 6px; }
.participant-collection-language select { min-width: 0; width: auto; max-width: 160px; min-height: 44px; padding: 0; font-size: 16px; }
.participant-collection-progress { display: grid; grid-template-columns: auto minmax(60px, 1fr); align-items: center; gap: 12px; margin-top: 10px; font-size: 13px; }
.participant-collection-progress progress { appearance: none; width: 100%; height: 5px; border: 0; border-radius: 9px; overflow: hidden; background: var(--line); color: var(--coral); }
.participant-collection-progress progress::-webkit-progress-bar { background: var(--line); }
.participant-collection-progress progress::-webkit-progress-value { background: var(--coral); }
.participant-collection-progress progress::-moz-progress-bar { background: var(--coral); }
.participant-collection-body { min-height: 0; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; overscroll-behavior-y: contain; padding-bottom: 20px; scroll-padding-block: 16px; scrollbar-width: thin; scrollbar-color: rgba(108,75,114,.35) transparent; }
.participant-collection-body::-webkit-scrollbar { width: 7px; }
.participant-collection-body::-webkit-scrollbar-thumb { background: rgba(108,75,114,.32); border-radius: 99px; }
.participant-collection-body .collection-safety { margin: 16px 26px; }
.participant-collection-body .collection-safety strong { font-size: 16px; }
.participant-collection-body .collection-safety p { font-size: 14px; }
.participant-collection-body .field > span { font-size: 14px; }
.participant-collection-body .field input,.participant-collection-body .field select,.participant-collection-body .field textarea { font-size: 16px; scroll-margin-block: 16px; }
/* Keep native file-picker focus inside the scrolling body, not the outer modal. */
.participant-collection-body .upload-drop { position: relative; }
.participant-collection-body .upload-drop input[type="file"] { top: 0; left: 0; width: 1px; height: 1px; min-height: 0; padding: 0; overflow: hidden; clip-path: inset(50%); }
.participant-collection-body .upload-drop:focus-within { outline: 2px solid var(--coral); outline-offset: 3px; }
.participant-collection-body .collection-field .field > span { font-size: 24px; line-height: 1.25; }
.participant-collection-body .share-check,.participant-collection-body .collection-consent { min-height: 44px; align-items: center; font-size: 14px; cursor: pointer; }
.participant-collection-body .share-check input,.participant-collection-body .collection-consent input { flex: 0 0 18px; width: 18px; height: 18px; margin: 0; }
.participant-collection-body .ready-to-send { min-width: 0; margin: 0 26px; padding: 16px 20px; overflow-wrap: anywhere; }
.participant-collection-body .ready-to-send > .eyebrow[hidden] + p { margin-top: 0; }
.participant-collection-footer { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; padding: 12px 26px calc(12px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--line); background: var(--paper); box-shadow: 0 -3px 12px rgba(37,31,27,.035); }
.participant-collection-footer .button { min-height: 52px; padding: 12px 18px; font-size: 16px; line-height: 1.3; }
.participant-collection-footer .danger-button { order: 3; }
.participant-profile-photo { grid-column: 1 / -1; display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; }
.participant-profile-photo > div:first-child strong,.participant-profile-photo > div:first-child small { display: block; font-size: 14px; }
.participant-profile-photo small { color: var(--muted); font-size: 13px; }
.participant-photo-picker { position: relative; cursor: pointer; }
.participant-photo-picker input { position: absolute; width: 1px; height: 1px; padding: 0; margin: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.participant-photo-picker .button { min-height: 44px; font-size: 16px; padding: 10px 14px; }
.participant-photo-picker:focus-within { outline: 2px solid var(--coral); outline-offset: 3px; border-radius: 12px; }
.participant-photo-preview,.participant-photo-current { display: flex; align-items: center; gap: 10px; width: 100%; }
.participant-photo-preview[hidden] { display: none; }
.participant-photo-preview img,.participant-photo-current img { width: 48px; height: 48px; object-fit: cover; border-radius: 8px; flex-shrink: 0; }
.participant-photo-preview > span { min-width: 0; overflow-wrap: anywhere; font-size: 14px; }
.participant-photo-preview .button { margin-left: auto; min-height: 44px; padding: 8px 12px; font-size: 14px; }
.participant-collection-review { padding: 20px 26px; }
.participant-collection-review .review-list { max-height: none; overflow: visible; }
body:has(.modal-backdrop:not(.hidden) .participant-collection-shell) { overflow: hidden; }
@media (max-width: 760px) {
  .modal-backdrop:has(.participant-collection-shell) { padding: 0; top: var(--collection-viewport-top, 0px); bottom: auto; height: var(--collection-viewport-height, 100dvh); align-items: stretch; }
  .modal.participant-collection-shell { width: 100%; height: var(--collection-viewport-height, 100dvh); max-height: var(--collection-viewport-height, 100dvh); border-radius: 0; }
  .participant-collection-header { padding: calc(8px + env(safe-area-inset-top, 0px)) 16px 12px; }
  .participant-collection-header h2 { font-size: 32px; }
  .participant-collection-intro { align-items: flex-start; flex-direction: column; gap: 8px; }
  .participant-collection-language { flex-wrap: wrap; }
  .participant-collection-body .participant-basics { grid-template-columns: 1fr; padding: 0 16px 18px; }
  .participant-collection-body .collection-safety,.participant-collection-body .collection-consent { margin: 16px; }
  .participant-collection-body .collection-question { grid-template-columns: minmax(0, 1fr); padding: 20px 16px; gap: 0; }
  .participant-collection-body .collection-number { display: none; }
  .participant-collection-body .collection-field .field > span { font-size: 24px; }
  .participant-collection-body .collection-category { font-size: 13px; }
  .participant-collection-body .ready-to-send { margin-inline: 16px; padding: 16px; }
  .participant-collection-footer { flex-direction: column; padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)); }
  .participant-collection-footer .button { width: 100%; min-height: 52px; }
  .participant-collection-review { padding: 16px; }
  .collection-keyboard .participant-collection-intro,.collection-keyboard .participant-collection-progress { display: none; }
  .collection-keyboard .participant-collection-header h2 { font-size: 24px; margin: 0; }
}
@media (hover: none) and (pointer: coarse) {
  .participant-collection-body { scrollbar-width: auto; scrollbar-color: auto; scrollbar-gutter: auto; }
  .participant-collection-body::-webkit-scrollbar { width: auto; }
  .participant-collection-body::-webkit-scrollbar-thumb { background: initial; }
}
/* Participant welcome and ticket polish; organizer views and global type tokens are unchanged. */
.participant-welcome-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.participant-welcome-top .modal-language { float: none; margin: 0; }
.participant-welcome-top .welcome-confetti { padding: 0; letter-spacing: 0; }
.participant-welcome li { display: flex; align-items: flex-start; gap: 8px; }
.participant-welcome li .tt-icon { flex: 0 0 18px; width: 18px; height: 18px; margin-top: 2px; color: var(--plum); }
.participant-welcome-privacy { margin-top: 14px; color: var(--muted); font-size: 14px; }
.participant-welcome-privacy summary { cursor: pointer; padding: 8px 0; }
.participant-welcome-privacy p { margin-top: 8px; }
.modal-backdrop:has(.welcome-modal),.modal-backdrop:has(.participant-ticket-shell) { z-index: 121; }
body:has(.modal-backdrop:not(.hidden) .participant-ticket-shell) { overflow: hidden; }
.modal-backdrop:has(.participant-ticket-shell) { padding: 24px; }
/* The cream ticket is the dialog surface; only short viewports need to scroll it. */
.modal.participant-ticket-shell { width: 800px; max-width: calc(100vw - 48px); max-height: calc(100dvh - 48px); margin: 0; padding: 0; overflow-y: auto; overscroll-behavior: contain; border-radius: 22px; background: #f8f0df; }
.participant-ticket-shell .ticket-top { padding: 10px 66px 10px 24px; flex-wrap: wrap; gap: 8px 12px; }
.participant-ticket-shell .ticket-top > span:last-of-type { overflow-wrap: anywhere; }
.participant-ticket-shell .ticket-close { position: absolute; top: 8px; right: 8px; width: 44px; height: 44px; min-height: 44px; color: #fff; border-color: rgba(255,255,255,.5); }
.participant-ticket-shell .ticket-close:hover { background: rgba(255,255,255,.15); }
.participant-ticket-shell .ticket-body { grid-template-columns: minmax(0,7fr) minmax(200px,3fr); gap: 24px; padding: 16px 24px 12px; }
.participant-ticket-shell .ticket-body > div { min-width: 0; }
.participant-ticket-shell .ticket-title { margin: 8px 0 14px; font-size: var(--type-h2); overflow-wrap: anywhere; }
.participant-ticket-shell .ticket-details { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px 16px; }
.participant-ticket-shell .ticket-details div { padding: 6px 0; overflow-wrap: anywhere; }
.participant-ticket-shell .ticket-details small { margin-bottom: 2px; }
.participant-ticket-shell .ticket-tagline { margin: 12px 0 4px; }
.participant-ticket-shell .ticket-stub { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; border-top: 0; border-left: 2px dashed #c9bbaa; padding: 12px 0 12px 24px; }
.participant-ticket-shell .ticket-stub img { width: 176px; height: 176px; max-width: 100%; object-fit: contain; }
.participant-ticket-shell .ticket-stub small { max-width: 180px; }
.participant-ticket-shell .ticket-actions { flex-direction: column; align-items: center; gap: 4px; padding: 0 24px 12px; }
.participant-ticket-shell .ticket-actions > .button-coral { min-width: 220px; }
.participant-ticket-shell .participant-ticket-secondary { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.participant-ticket-shell .ticket-actions .button { min-height: 44px; padding: 10px 14px; white-space: normal; }
.participant-ticket-shell .ticket-actions > .participant-ticket-link { min-height: 32px; }
.participant-ticket-link { align-self: center; min-height: 44px; border: 0; background: transparent; color: var(--muted); font-size: 14px; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.participant-ticket-link:focus-visible { outline: 2px solid var(--coral); outline-offset: 2px; }
@media (max-width: 760px) {
  .modal.welcome-modal { height: auto; max-height: calc(100dvh - 16px); padding: calc(12px + env(safe-area-inset-top,0px)) 18px calc(12px + env(safe-area-inset-bottom,0px)); border-radius: 18px; }
  .welcome-modal .participant-welcome > .eyebrow { margin: 10px auto 4px; }
  .welcome-modal .participant-welcome h2 { margin: 4px 0 10px; }
  .welcome-modal .participant-welcome > p:not(.eyebrow) { margin: 8px auto; font-size: 16px; line-height: 1.45; }
  .welcome-modal .participant-welcome > strong { margin: 10px 0; font-size: 14px; }
  .welcome-modal .participant-welcome ul { margin: 12px 0 14px; padding: 12px; gap: 8px; font-size: 14px; }
  .welcome-modal .participant-welcome li { line-height: 1.4; }
  .welcome-modal .participant-welcome [data-participant-start] { min-height: 54px; padding: 12px 16px; font-size: 16px; line-height: 1.3; }
  .welcome-modal .participant-welcome-privacy { margin-top: 6px; }
  .welcome-modal .language-picker { width: auto; max-width: 220px; min-height: 44px; padding: 0 10px; }
  .welcome-modal .language-picker select { min-height: 44px; max-width: 166px; font-size: 16px; }
  .participant-collection-language .language-picker { max-width: 200px; padding-inline: 8px; gap: 4px; }
  .participant-collection-language select { max-width: 152px; }
  .participant-collection-footer .button-coral { min-height: 54px; padding-block: 10px; }
  .participant-collection-footer .button-ghost { min-height: 50px; padding-block: 10px; }
}
@media (max-width: 767px) {
  /* Let the sheet scroll as a whole, with no nested scrolling ticket. */
  .modal-backdrop:has(.participant-ticket-shell):not(.hidden) { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; overflow-y: auto; overscroll-behavior: contain; padding: max(12px,env(safe-area-inset-top,0px)) 12px max(12px,env(safe-area-inset-bottom,0px)); }
  .modal.participant-ticket-shell { flex: none; width: min(100%,570px); max-width: 100%; max-height: none; margin-block: auto; overflow: clip; }
  .participant-ticket-shell .ticket-top { padding-left: 18px; }
  .participant-ticket-shell .ticket-body { grid-template-columns: minmax(0,1fr); padding: 18px; gap: 18px; }
  .participant-ticket-shell .ticket-title { font-size: clamp(2rem,6vw,3.4rem); }
  .participant-ticket-shell .ticket-details { gap: 8px 12px; }
  .participant-ticket-shell .ticket-stub { border-left: 0; border-top: 2px dashed #c9bbaa; padding: 18px 0 0; }
  .participant-ticket-shell .ticket-stub img { width: 200px; height: 200px; }
  .participant-ticket-shell .ticket-actions { padding: 0 18px 18px; gap: 8px; }
  .participant-ticket-shell .ticket-actions > .button-coral { width: 100%; min-height: 52px; }
  .participant-ticket-shell .participant-ticket-secondary { gap: 6px; }
  .participant-ticket-shell .participant-ticket-secondary .button { flex: 1 1 auto; padding-inline: 10px; }
  .participant-ticket-shell .ticket-actions > .participant-ticket-link { min-height: 44px; }
}
@media print {
  .modal-backdrop:has(.participant-ticket-shell) { display: block; overflow: visible; padding: 0; }
  .modal.participant-ticket-shell { max-width: 100%; max-height: none; margin: auto; overflow: visible; }
  .participant-ticket-shell .ticket-close { display: none; }
}
/* Mobile story entry is a retained-control, one-question-at-a-time flow. */
.collection-mobile-title,.collection-end-action,.collection-step-navigation,.collection-about-title,.collection-language-code { display:none; }
.collection-profile-optional { display:contents; }
.collection-profile-optional > summary { display:none; }
.collection-review-consent .collection-consent { margin:18px 0; }
.collection-review-consent .ready-to-send { margin:0; }
.collection-review-progress { margin:0 0 16px; font-size:14px; color:var(--muted); }
.collection-review-profile { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; }
.collection-review-profile .field { width:100%; min-width:0; margin:0; }
.collection-submit-error { margin:12px 0; color:#a5362c; font-size:14px; line-height:1.5; }
.collection-submit-error[hidden] { display:none; }
.participant-collection-modal [data-saved-collection-photo][hidden] { display:none; }
.collection-photo-failure { display:grid; grid-column:1 / -1; gap:4px; min-width:0; color:var(--muted); font-size:14px; overflow-wrap:anywhere; }
.collection-photo-failure .participant-ticket-link { justify-self:start; text-align:left; }
.collection-review-summary { margin:0 0 12px; color:var(--muted); font-size:14px; }
.collection-photo-selection { margin-top:10px; }
.collection-photo-selection[hidden],.uploaded-file[hidden] { display:none; }
/* Review only: skipped prompts are rows, substantive answers keep their full content. */
.participant-collection-modal:has(.participant-collection-review) .participant-collection-top > .eyebrow { display:none; }
.participant-collection-modal:has(.participant-collection-review) .participant-collection-top { float:right; }
.participant-collection-modal:has(.participant-collection-review) .participant-collection-header h2 { padding-right:56px; }
.participant-collection-review .review-list { gap:0; margin:12px 0 20px; }
.participant-collection-review .review-list article { min-width:0; }
.participant-collection-review .review-list .review-skipped { grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:0 12px; padding:8px 0; border:0; border-bottom:1px solid var(--line); border-radius:0; }
.participant-collection-review .review-skipped small { grid-column:1; color:var(--ink); }
.participant-collection-review .review-skipped .review-status { grid-column:1; font-weight:400; color:var(--muted); font-size:var(--type-label); }
.participant-collection-review .review-skipped .participant-ticket-link { grid-column:2; grid-row:1 / 3; }
.participant-collection-review .review-list .review-answered { position:relative; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:4px 12px; margin-bottom:8px; padding:10px; }
.participant-collection-review .review-answered > small { grid-column:1; }
.participant-collection-review .review-answered > .participant-ticket-link { grid-column:2; grid-row:1; }
.participant-collection-review .review-answered > strong,.participant-collection-review .review-answered > span,.participant-collection-review .review-photo { grid-column:1 / -1; }
.participant-collection-review .review-list strong { white-space:pre-wrap; overflow-wrap:anywhere; }
.participant-collection-review .review-list .participant-ticket-link { min-height:44px; }
.participant-collection-review .review-photo { max-width:160px; max-height:160px; width:auto; height:auto; object-fit:contain; border-radius:8px; }
@media(min-width:761px) {
  .participant-collection-review .review-answered:has(.review-photo) { grid-template-columns:112px minmax(0,1fr) auto; }
  .participant-collection-review .review-answered:has(.review-photo) > small { grid-column:1 / 3; }
  .participant-collection-review .review-answered:has(.review-photo) > .participant-ticket-link { grid-column:3; }
  .participant-collection-review .review-answered:has(.review-photo) > strong,.participant-collection-review .review-answered:has(.review-photo) > span { grid-column:2 / -1; }
  .participant-collection-review .review-answered > .review-photo { grid-column:1; grid-row:2 / 4; max-width:112px; max-height:96px; }
}
@media (max-width:760px) {
  #guestForm.participant-collection-modal { grid-template-rows:auto minmax(0,1fr) auto; overflow:clip; }
  #guestForm[hidden] { display:none; }
  .modal.participant-collection-shell:has(#guestForm) { overflow:clip; }
  #guestForm > .participant-collection-header { display:grid; grid-template-columns:minmax(0,1fr) auto 44px; grid-template-rows:36px 44px; gap:0 8px; padding:calc(8px + env(safe-area-inset-top,0px)) 16px 8px; }
  #guestForm .collection-mobile-title { display:block; grid-column:1; grid-row:1; align-self:center; font-size:16px; line-height:1.2; font-weight:700; }
  #guestForm .participant-collection-top,#guestForm .participant-collection-intro,#guestForm .participant-collection-progress { display:contents; }
  #guestForm .participant-collection-top > .eyebrow,#guestForm .participant-collection-header > h2,#guestForm .participant-collection-intro > p,#guestForm .participant-collection-language > span:not(.collection-language-code) { display:none; }
  #guestForm .participant-collection-header .close-button { grid-column:3; grid-row:1; align-self:center; }
  #guestForm [data-collection-progress] { grid-column:2; grid-row:1; align-self:center; font-size:13px; line-height:1.3; white-space:nowrap; }
  #guestForm .participant-collection-progress progress { grid-column:1 / 3; grid-row:2; align-self:center; width:calc(100% - 34px); }
  #guestForm .participant-collection-language { position:relative; grid-column:2 / 4; grid-row:2; justify-self:end; width:74px; height:44px; }
  #guestForm .participant-collection-language .language-picker { position:absolute; inset:0; width:100%; min-height:44px; padding:0; opacity:0; }
  #guestForm .participant-collection-language select { width:100%; max-width:none; height:44px; }
  #guestForm .collection-language-code { display:grid; place-items:center; width:100%; height:44px; pointer-events:none; font-size:14px; }
  #guestForm .participant-collection-language:focus-within { outline:2px solid var(--coral); border-radius:8px; }
  #guestForm .collection-safety,#guestForm .collection-consent,#guestForm .ready-to-send,#guestForm .collection-end-action { display:none; }
  #guestForm .participant-basics[hidden],#guestForm .collection-question[hidden] { display:none; }
  #guestForm .participant-basics { padding:24px 20px; gap:18px; }
  #guestForm .collection-about-title { display:block; margin:0; grid-column:1 / -1; font:400 28px/1.15 var(--serif); }
  #guestForm .collection-profile-optional { display:block; grid-column:1 / -1; }
  #guestForm .collection-profile-optional > summary { display:list-item; min-height:44px; padding-block:12px; font-size:14px; color:var(--muted); cursor:pointer; }
  #guestForm .participant-profile-photo > div:first-child { display:none; }
  #guestForm .participant-collection-body { padding-bottom:0; }
  #guestForm .collection-question { padding:24px 20px; border:0; background:transparent; margin:0; }
  #guestForm .collection-questions { display:block; margin:0; }
  #guestForm .collection-category { display:block; margin-bottom:16px; font-size:13px; }
  #guestForm .collection-field > .field { gap:20px; }
  #guestForm .collection-field > .field > span { font-size:26px; line-height:1.25; }
  #guestForm .collection-field textarea { height:148px; min-height:120px; resize:vertical; }
  #guestForm .share-check { margin-top:16px; min-height:44px; font-size:14px; }
  #guestForm .upload-drop { min-height:100px; padding:16px; }
  #guestForm .upload-drop > span { display:none; }
  #guestForm .uploaded-file img { width:80px; height:80px; object-fit:cover; }
  #guestForm .collection-step-navigation { display:flex; justify-content:space-between; gap:12px; padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px)); border-top:1px solid var(--line); background:var(--paper); }
  #guestForm .collection-step-navigation .button { min-height:52px; padding:12px 16px; font-size:16px; line-height:1.3; }
  #guestForm .collection-step-navigation [data-collection-back] { flex:0 0 auto; }
  #guestForm .collection-step-navigation [data-collection-next] { margin-left:auto; }
  .collection-keyboard #guestForm .collection-step-navigation { display:none; }
  .collection-keyboard #guestForm .collection-question { padding-block:12px; }
  .collection-keyboard #guestForm .collection-field textarea { height:100px; min-height:80px; }
  .participant-collection-review .collection-review-progress { display:none; }
  .participant-collection-review .review-list article { position:relative; padding:14px; }
  .participant-collection-review .review-list article strong { white-space:pre-wrap; overflow-wrap:anywhere; }
  .participant-collection-review .review-list .participant-ticket-link { justify-self:start; padding:4px 0; }
  .participant-collection-review .collection-review-consent .collection-consent { margin:16px 0; }
}
