.recap-library-entry { display: flex; gap: 12px; align-items: center; color: var(--muted); font-size: .88rem; }
/* The same recap editor can live beside the Tournament library or on its own. */
#prefishPlanEditor[hidden], #tournamentRecapHost[hidden] { display: none !important; }
#tournamentRecapHost { min-width: 0; min-height: 0; overflow: hidden; }
#tournamentRecapHost #tournamentRecapDialog {
  position: static; width: 100%; max-width: 100%; height: 100%; max-height: none;
  margin: 0; border-radius: 7px; box-shadow: none; background: var(--field);
}
#tournamentRecapHost .recap-header { padding: 12px; }
#tournamentRecapHost .recap-toolbar { padding: 8px 12px; background: var(--field); }
#tournamentRecapHost .recap-scroll-body { padding: 12px; }
#tournamentRecapHost .recap-shell { min-width: 0; }
#tournamentRecapHost #recapLibraryDetails { display: none; }
#tournamentRecapHost:has(#tournamentRecapForm[hidden]) #recapLibraryDetails { display: block; }
.tournament-extra-recaps button[aria-pressed="true"] { background: var(--accent); color: #fff; }
@media (max-width: 980px), (max-width: 1180px) and (pointer: coarse) {
  #tournamentRecapHost { overflow: visible; }
  #tournamentRecapHost #tournamentRecapDialog { height: auto; overflow: visible; border: 1px solid var(--line); }
  #tournamentRecapHost .recap-scroll-body { overflow: visible; }
  #tournamentRecapHost .recap-header { position: sticky; top: 0; z-index: 13; background: var(--field); }
  #tournamentRecapHost .recap-toolbar { position: sticky; top: 68px; z-index: 12; }
  #prefishPlanManagerDialog:has(#tournamentRecapHost:not([hidden])) { scroll-padding-top: 220px; }
}
@media (max-width: 700px) {
  #tournamentRecapHost .recap-toolbar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.recap-library-entry button { min-height: 44px; }
/* The compact shell owns Close; the recap body scrolls below fixed actions. */
#prefishPlanManagerDialog.tournament-compact #tournamentRecapDialog {
  height: 100%; max-height: 100%; overflow: hidden; border: 1px solid var(--line);
}
#prefishPlanManagerDialog.tournament-compact #tournamentRecapHost .recap-header,
#prefishPlanManagerDialog.tournament-compact #tournamentRecapHost .recap-toolbar { position: static; }
#prefishPlanManagerDialog.tournament-compact #tournamentRecapHost .recap-scroll-body { overflow: auto; }
#prefishPlanManagerDialog.tournament-compact #tournamentRecapHost .recap-eyebrow { display: none; }
#prefishPlanManagerDialog.tournament-compact #tournamentRecapHost .recap-header h2 { font-size: 1rem; }
.prefish-editor-header { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
.prefish-recap-create { min-height: 44px; padding: 6px 10px; font-size: .82rem; white-space: nowrap; }
#tournamentRecapDialog {
  width: min(1080px, calc(100vw - 32px)); max-width: none;
  height: min(960px, calc(100dvh - 32px)); max-height: calc(100dvh - 32px);
  padding: 0; border: 1px solid var(--line); border-radius: 12px;
  background: var(--panel); color: var(--ink); overflow: hidden;
  box-shadow: var(--shadow-lg);
}
#tournamentRecapDialog::backdrop { background: rgb(0 0 0 / .6); }
#tournamentRecapDialog [hidden] { display: none !important; }
.recap-shell { height: 100%; display: flex; flex-direction: column; min-height: 0; }
.recap-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 24px 12px; flex: 0 0 auto; }
.recap-header h2 { font-size: 1.28rem; margin: 0; overflow-wrap: anywhere; }
.recap-eyebrow { color: var(--muted); font-size: .7rem; letter-spacing: .12em; margin: 0 0 4px; }
#tournamentRecapClose { flex: 0 0 44px; width: 44px; height: 44px; font-size: 1.5rem; }
.recap-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px 24px 12px; border-bottom: 1px solid var(--line); flex: 0 0 auto; background: var(--panel); }
#recapSaveStatus { color: var(--muted); font-size: .82rem; margin-left: auto; }
#recapSaveStatus[data-dirty="true"] { color: var(--ink); font-weight: 600; }
.recap-scroll-body { flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 16px 24px 28px; scroll-padding-block: 16px; }
.recap-section { border: 1px solid var(--line); border-radius: 8px; margin: 0 0 16px; min-width: 0; }
.recap-section > summary { padding: 12px 14px; cursor: pointer; min-height: 48px; overflow-wrap: anywhere; }
.recap-section > summary strong { font-size: .95rem; }
.recap-section > summary > span { color: var(--muted); font-size: .82rem; margin-left: 10px; }
.recap-section[open] > summary { border-bottom: 1px solid var(--line); }
.recap-section-body { padding: 16px; }
.recap-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.recap-wide { grid-column: 1 / -1; }
#tournamentRecapDialog label { display: grid; align-content: start; gap: 6px; color: var(--ink); font-size: .9rem; min-width: 0; }
#tournamentRecapDialog input, #tournamentRecapDialog textarea, #tournamentRecapDialog select {
  width: 100%; min-width: 0; background: var(--field); color: var(--ink); border: 1px solid var(--line); border-radius: 6px;
  padding: 10px; min-height: 44px; font: inherit; font-size: 1rem;
}
#tournamentRecapDialog textarea { resize: vertical; line-height: 1.5; min-height: 100px; }
#tournamentRecapDialog button { min-height: 44px; white-space: normal; }
#tournamentRecapDialog :is(button,input,textarea,select,summary):focus-visible { outline: 3px solid var(--blue); outline-offset: 2px; }
#tournamentRecapDialog fieldset { padding: 0; margin: 0; border: 0; min-width: 0; }
.recap-hint, #tournamentRecapDialog small { color: var(--muted); font-size: .84rem; line-height: 1.5; }
.recap-hint { margin: 0 0 14px; }
.recap-name { margin-bottom: 12px; }
.recap-link-panel { border: 1px solid var(--line); border-radius: 8px; padding: 12px; margin-bottom: 12px; }
.recap-link-heading, .recap-link-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.recap-link-heading { justify-content: space-between; margin-bottom: 8px; }
.recap-link-panel .recap-hint { margin: 8px 0; overflow-wrap: anywhere; }
.recap-link-actions a, #recapResultsSource { min-height: 44px; display: inline-flex; align-items: center; color: var(--accent); padding: 6px 0; }
#recapLogPicker { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
#recapLogPicker label { flex: 1 1 100%; }
.recap-library { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 8px; padding: 12px; max-height: 260px; overflow: auto; }
.recap-library button { text-align: left; display: grid; gap: 4px; }
.recap-library button strong, .recap-library button span { overflow-wrap: anywhere; }
.recap-library button[aria-current="true"] { border-color: var(--accent); box-shadow: inset 3px 0 var(--accent); }
.recap-library button span { font-size: .8rem; color: var(--muted); }
.recap-stop { border: 1px solid var(--line); border-radius: 8px; margin: 0 0 12px; }
.recap-stop > summary { padding: 12px; cursor: pointer; min-height: 48px; overflow-wrap: anywhere; }
.recap-stop > summary strong { margin: 0 8px; }
.recap-stop-number { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px; border-radius: 50%; background: var(--field); border: 1px solid var(--line); }
.recap-stop-status { color: var(--muted); font-size: .8rem; }
.recap-stop-fields { padding: 0 12px 14px; }
.recap-stop-reference { grid-column: 1 / -1; color: var(--muted); background: var(--field); padding: 10px; border-radius: 6px; white-space: pre-wrap; overflow-wrap: anywhere; font-size: .84rem; line-height: 1.45; }
.recap-stop-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.recap-coordinates { grid-column: 1 / -1; }
.recap-coordinates > summary { min-height: 44px; cursor: pointer; padding: 12px 0; font-size: .85rem; }
.recap-observation { border-top: 1px solid var(--line); margin: 16px 0; padding-top: 16px; }
.recap-observation-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; gap: 8px; }
.recap-observation h3 { font-size: 1rem; margin: 0; }
.recap-photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 16px; }
.recap-photo { display: grid; gap: 10px; min-width: 0; }
.recap-photo img { max-width: 100%; width: 100%; height: 200px; object-fit: contain; background: var(--field); border-radius: 6px; }
.recap-photo button { justify-self: start; }
#recapOriginalPlanContent { overflow-wrap: anywhere; }
#recapOriginalPlanContent p, #recapOriginalPlanContent li { white-space: pre-wrap; line-height: 1.5; }
#recapOriginalPlanContent li { margin-bottom: 12px; }
#recapMessage { border-left: 4px solid var(--danger); padding: 12px; background: var(--field); margin-bottom: 12px; white-space: pre-wrap; overflow-wrap: anywhere; }
.recap-recovery-actions:has(button:not([hidden])) { display: flex; gap: 8px; margin-bottom: 12px; }
.recap-preview-actions { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
#tournamentRecapPreviewFrame { width: 100%; height: 68dvh; min-height: 350px; border: 1px solid var(--line); background: white; border-radius: 6px; }
@media (max-width: 700px) {
  #tournamentRecapDialog { width: 100%; height: 100dvh; max-height: 100dvh; border-radius: 0; border: 0; margin: 0; }
  .recap-header { padding: max(10px, env(safe-area-inset-top)) 12px 8px; }
  .recap-header h2 { font-size: 1.1rem; }
  .recap-eyebrow { display: none; }
  .recap-toolbar { padding: 8px 12px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
  .recap-toolbar button { padding: 7px 4px; font-size: .8rem; }
  #recapSaveStatus { grid-column: 1 / -1; margin: 0; }
  .recap-scroll-body { padding: 12px 12px max(24px, env(safe-area-inset-bottom)); }
  .recap-section-body { padding: 12px; }
  .recap-grid, .recap-photos { grid-template-columns: minmax(0, 1fr); }
  .recap-section > summary > span { display: block; margin: 5px 0 0 17px; }
  .recap-stop > summary strong { margin: 0 5px; }
  .recap-stop-status { display: block; margin: 6px 0 0 45px; }
  .recap-library-entry { align-items: flex-start; }
}
