/* ===== Day-of run sheet (Itinerary → Day-of) =====
   The coordinator's by-the-minute list, src/render/runSheet.js. Shape and
   states follow the Itinerary's own Edit table: a shared header table, the
   section bands (todo-table-band + todo-group-toggle) with their animated
   bodies, and table.data for the shared header colours. Colours and fonts
   come only from the active theme's roles. */

/* The view: Day-of replaces the itinerary panes, its stats and its toolbar actions. */
#section-schedule .run-sheet{display:none}
#section-schedule:has(#scheduleLayout[data-mview="day-of"]) .run-sheet{display:block}
#section-schedule #scheduleLayout[data-mview="day-of"]{display:none}
#section-schedule:has(#scheduleLayout[data-mview="day-of"]) #scheduleStatsCarousel{display:none}
/* The toolbar swap is done with [hidden] (syncRunSheetToolbar); this keeps a
   page rule such as the phone add button's display from showing a hidden one. */
#section-schedule .schedule-toolbar-actions > [hidden]{display:none!important}
#section-schedule .run-sheet-toolbar-actions{display:flex;align-items:center;gap:8px}
.run-sheet-toolbar-actions .btn{white-space:nowrap}
.run-sheet-toolbar-actions svg{width:16px;height:16px;flex:none}
.run-sheet-toolbar-actions .gtb-drop-btn>svg.gtb-caret{width:10px;height:10px}

.run-sheet{margin-top:0;font:.82rem/1.4 var(--font-ui);color:var(--ink)}
.rs-icon{flex:none;display:inline-block;vertical-align:middle}

/* Table */
.rs-table-wrap{min-width:0;overflow:hidden}
.rs-table{table-layout:fixed;border-collapse:separate;border-spacing:0;width:100%;font:.82rem/1.4 var(--font-ui);color:var(--ink)}
.rs-col-time{width:104px}.rs-col-what{width:36%}.rs-col-who{width:17%}.rs-col-details{width:auto}.rs-col-flag{width:128px}.rs-col-actions{width:48px}
[data-rs-mode="tablet"] .rs-col-what{width:48%}[data-rs-mode="tablet"] .rs-col-who{width:24%}[data-rs-mode="tablet"] .rs-col-flag{width:118px}
.rs-table-head{margin:0}
.rs-table-head thead th{border-bottom:0}
.rs-table thead th{height:44px;padding:0 10px;text-align:left;background:var(--table-heading-bg,var(--surface-alt));color:var(--table-heading-ink,var(--ink-muted));font:700 .78rem var(--font-ui);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
/* Row density as To-Do's operational table (7px), over the shared .data cell padding. */
#runSheetPane .rs-table td{padding:6px 10px;vertical-align:top;overflow-wrap:anywhere;border-bottom:0}
.rs-group+.rs-group>.rs-line:first-child>td{border-top:1px solid var(--border)}
.rs-group>.rs-line+.rs-line>td{border-top:1px solid color-mix(in srgb,var(--border) 55%,transparent)}
/* Section bands: the Itinerary table's own (.schedule-tband). */
.rs-tsection{margin-bottom:0}   /* as To-Do's table bands (.todo-tgroup) */
.rs-tband{display:flex;align-items:center}
/* margin:0 — the shared toggle's -4px hover margin poked 4px past the table and gave it an empty sideways scrollbar. */
.rs-tband .todo-group-toggle{flex:1;min-width:0;margin:0;min-height:44px}
/* One row, in the lines' own type (Sean, 2026-10-20: bigger, on one row, the
   time then the event). The shared band size (--planner-group-size, 11.84px,
   set with !important for every page's groups) is smaller than he asked for
   here, so this one band family overrides it on purpose. */
.planner-table-page #runSheetPane .rs-tband .rs-tband-title{display:flex;flex-direction:row;align-items:baseline;gap:14px;min-width:0}
.planner-table-page #runSheetPane .rs-tband .rs-tband-title :is(strong,span){font-size:.88rem !important;line-height:1.3}
.planner-table-page #runSheetPane .rs-tband .rs-tband-time{flex:none;min-width:5.6em;font-weight:600 !important;font-variant-numeric:tabular-nums}
.planner-table-page #runSheetPane .rs-tband .rs-tband-title strong{font-weight:600 !important;overflow-wrap:anywhere}
.planner-table-page #runSheetPane .rs-tband .todo-group-count{font-size:.8rem !important}

.rs-line{transition:background-color var(--motion-fast,150ms) ease}
.rs-line:is(:hover,:focus-within){background:color-mix(in srgb,var(--ink) 4%,var(--surface))}
#runSheetPane .rs-line.is-repeat .rs-time-input:not(:focus):not(:hover){color:transparent}
.rs-line.is-repeat .rs-plus-day{visibility:hidden}

/* Inline values: plain at rest; one hairline on hover/focus. Scoped to the
   pane so the planner's boxed form-field coat (html[data-feel] input…) stays off. */
#runSheetPane .rs-cell{display:block;width:100%;min-height:30px;margin:0;padding:5px 4px;border:0;border-bottom:1px solid transparent;border-radius:2px;background:transparent;box-shadow:none;color:var(--ink);font:inherit;line-height:1.4;resize:none;overflow:hidden;transition:border-color var(--motion-fast,150ms) ease,background-color var(--motion-fast,150ms) ease}
#runSheetPane .rs-cell::placeholder{color:color-mix(in srgb,var(--ink-muted) 80%,transparent)}
/* Empty cells stay quiet until the line is pointed at or being edited. */
#runSheetPane .rs-line:not(:hover):not(:focus-within) .rs-cell::placeholder{color:transparent}
#runSheetPane .rs-cell:hover{border-bottom-color:var(--border);box-shadow:none}
#runSheetPane .rs-cell:focus{outline:none;border-bottom-color:var(--accent);background:color-mix(in srgb,var(--accent) 4%,transparent);box-shadow:0 1px 0 var(--accent)}
#runSheetPane .rs-cell[aria-invalid="true"]{border-bottom-color:var(--danger)}
#runSheetPane .rs-time-input{font-weight:600;font-variant-numeric:tabular-nums}
#runSheetPane .rs-title-input{font:400 .88rem/1.4 var(--font-ui)}
#runSheetPane .rs-details-input{color:var(--ink-soft,var(--ink))}
.rs-plus-day{display:block;padding:0 4px;color:var(--ink-muted);font:.7rem var(--font-ui)}
.rs-inline-details{margin-top:2px}
/* iPad hybrid: an empty Details field shows while its line is being edited. */
.rs-line:not(:focus-within) .rs-inline-details:has(textarea:placeholder-shown){display:none}
#runSheetPane .rs-inline-details .rs-cell{font-size:.78rem;min-height:24px;padding-top:2px;padding-bottom:2px}

/* Responsible: plain names (To-Do's Who column); the button opens the shared people picker. */
.rs-who{display:flex;align-items:center;gap:6px;width:100%;min-height:30px;margin:0;padding:5px 4px;border:0;border-bottom:1px solid transparent;border-radius:2px;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--motion-fast,150ms) ease}
.rs-who:hover{border-bottom-color:var(--border)}
.rs-who:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.rs-who-names{overflow-wrap:anywhere}
.rs-who.is-empty{color:var(--ink-muted);opacity:.72}
.rs-line:is(:hover,:focus-within) .rs-who.is-empty{opacity:1}
/* Paste preview names (plain, like the table; typed ones underlined dotted). */
.rs-pp-who.is-typed{text-decoration:underline dotted;text-underline-offset:3px;color:var(--ink-soft,var(--ink))}
/* Flags carry a symbol and a word as well as colour. */
.rs-flag{display:inline-flex;align-items:center;gap:5px;min-height:30px;margin:1px 0;padding:3px 9px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--ink);font:700 .72rem/1.2 var(--font-ui);letter-spacing:.03em;white-space:nowrap;cursor:pointer}
button.rs-flag:hover{border-color:var(--border)}
button.rs-flag:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.rs-flag-mark{font-weight:800}
.rs-flag[data-flag="pending"],.rs-flag[data-flag="confirm"]{color:color-mix(in srgb,var(--warning) 50%,var(--ink));background:color-mix(in srgb,var(--warning) 14%,var(--surface))}
.rs-flag[data-flag="important"]{color:var(--accent-on,#fff);background:var(--danger)}
.rs-flag-empty{display:inline-flex;align-items:center;gap:5px;color:var(--ink-muted);opacity:.45}
/* In the table the empty flag is an icon; the phone's open line spells it out. */
.rs-flag-empty-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.rs-pdetail .rs-flag-empty{opacity:1;font-weight:600}
.rs-pdetail .rs-flag-empty-text{position:static;width:auto;height:auto;overflow:visible;clip:auto}
.rs-pdetail .rs-flag{border-color:var(--border)}
.rs-line:is(:hover,:focus-within) .rs-flag-empty{opacity:.9}
.rs-flag-menu{min-width:190px}
.rs-flag-option .rs-flag-mark{display:inline-grid;place-items:center;width:16px;flex:none;font-size:.9rem}
.rs-flag-option[data-flag="pending"] .rs-flag-mark,.rs-flag-option[data-flag="confirm"] .rs-flag-mark{color:color-mix(in srgb,var(--warning) 50%,var(--ink))}
.rs-flag-option[data-flag="important"] .rs-flag-mark{color:var(--danger)}
.rs-flag-option[data-flag="none"] .rs-flag-mark{color:var(--ink-muted)}

/* Song cue under the action. */
.rs-song{display:inline-flex;align-items:center;gap:5px;max-width:100%;margin:1px 0 2px;padding:2px 6px;border:1px solid transparent;border-radius:var(--radius-control);background:transparent;color:var(--accent);font:600 .76rem/1.35 var(--font-ui);text-align:left;cursor:pointer}
.rs-song small{font-weight:400;color:var(--ink-muted)}
.rs-song:hover{background:var(--accent-soft)}
.rs-song:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.rs-song.is-empty{color:var(--ink-muted)}

.rs-table td.rs-actions{text-align:right;vertical-align:top;padding-top:4px}

/* Who suggestions in the add pop-up. */
.rs-suggest{min-width:220px;max-height:280px;overflow:auto;padding:4px}
.rs-suggest[hidden]{display:none}
.rs-suggest-item{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:40px;padding:8px 12px;border-radius:calc(var(--radius-surface,14px) - 4px);cursor:pointer}
.rs-suggest-item small{color:var(--ink-muted);font-size:.72rem}
.rs-suggest-item.is-active,.rs-suggest-item:hover{background:color-mix(in srgb,var(--ink) 7%,transparent)}

/* Empty and no-match states. The empty sheet uses the shared empty state
   (hmEmptyStateHtml) inside the table frame, as Guests does. */
.rs-empty-body td{padding:0}
.rs-phone.rs-phone-empty{border:0;border-radius:0;background:transparent;overflow:visible}
.rs-filtered-empty td,.rs-phone .rs-filtered-empty{padding:22px 16px;text-align:center;color:var(--ink-muted)}
.rs-filtered-empty p{margin:0 0 8px}

/* Paste preview */
.rs-paste-workspace .planner-add-workspace,.rs-paste-workspace{--rs-paste-width:min(980px,calc(100vw - 32px))}
.rs-paste-field{display:grid;gap:6px;font:700 .8rem var(--font-ui)}
.rs-paste-field textarea{width:100%;min-height:130px;padding:10px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);color:var(--ink);font:.8rem/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical}
.rs-paste-field textarea:focus{outline:2px solid var(--accent);outline-offset:1px}
.rs-paste-help{margin:6px 0 10px;color:var(--ink-muted);font:.76rem/1.45 var(--font-ui)}
.rs-paste-summary{margin:0 0 8px;font:.8rem/1.45 var(--font-ui)}
.rs-paste-empty{margin:0;color:var(--ink-muted);font:.8rem var(--font-ui)}
.rs-paste-table-wrap{max-height:340px;overflow:auto;border:1px solid var(--border);border-radius:var(--radius-control)}
.rs-paste-table{width:100%;border-collapse:collapse;font:.76rem/1.4 var(--font-ui)}
.rs-paste-table th{position:sticky;top:0;padding:6px 8px;text-align:left;background:var(--table-heading-bg,var(--surface-alt));color:var(--table-heading-ink,var(--ink-muted));font:700 .68rem var(--font-ui);letter-spacing:.08em;text-transform:uppercase}
.rs-paste-table td{padding:6px 8px;border-top:1px solid var(--border);vertical-align:top}
.rs-pp-time{white-space:nowrap;font-weight:700;font-variant-numeric:tabular-nums}
.rs-pp-time small,.rs-pp-note{display:block;color:var(--ink-muted);font-weight:400;font-size:.7rem}
.rs-pp-song{display:flex;align-items:center;gap:4px;color:var(--accent);font-size:.72rem}
.rs-pp-details{color:var(--ink-soft,var(--ink));white-space:pre-line}
.rs-paste-skipped{margin-top:8px;font:.76rem/1.45 var(--font-ui);color:var(--ink-muted)}
.rs-paste-skipped li span{color:var(--ink)}

/* Paste: matching typed names to vendors */
.rs-paste-matches{margin:0 0 12px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-control);background:color-mix(in srgb,var(--surface) 70%,transparent)}
.rs-paste-matches h3{margin:0 0 2px;font:700 .82rem var(--font-ui)}
.rs-paste-matches>p{margin:0 0 8px;color:var(--ink-muted);font:.76rem/1.45 var(--font-ui)}
.rs-paste-match{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);align-items:center;gap:6px 12px;padding:6px 0;border-top:1px solid color-mix(in srgb,var(--border) 60%,transparent)}
.rs-paste-match-name{font:600 .84rem/1.3 var(--font-ui);letter-spacing:0;text-transform:none;color:var(--ink);overflow-wrap:anywhere}
.rs-paste-match-name small{display:block;font:400 .72rem/1.35 var(--font-ui);letter-spacing:0;text-transform:none;color:var(--ink-muted)}
.planner-add-workspace .rs-paste-match select{width:100%;min-height:40px;font:400 .86rem/1.3 var(--font-ui)}
@media (max-width:600px){.rs-paste-match{grid-template-columns:1fr}}

/* Song dialog */
.rs-song-dialog h2{margin:0 0 4px}
.rs-song-dialog>p{margin:0 0 12px;color:var(--ink-muted)}
.rs-song-search{display:flex;align-items:center;gap:8px;padding:0 4px;border-bottom:1px solid var(--border)}
.rs-song-search input{flex:1;min-height:40px;border:0;background:transparent;color:var(--ink);font:inherit}
.rs-song-search input:focus{outline:none}
.rs-song-search:focus-within{border-bottom-color:var(--accent)}
.rs-song-list{max-height:220px;overflow:auto;margin:6px 0 10px}
.rs-song-row{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 8px;border-radius:var(--radius-control);cursor:pointer}
.rs-song-row:hover{background:var(--surface-alt)}
.rs-song-row[hidden]{display:none}
.rs-song-row strong{display:block;font-weight:600}.rs-song-row small{color:var(--ink-muted)}
.rs-song-or{margin:6px 0;color:var(--ink-muted);font:.78rem var(--font-ui)}
.rs-song-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
.rs-song-remove{margin-right:auto;color:var(--danger)}

/* Phone: condensed lines with one open disclosure. */
.rs-phone{border:1px solid var(--border);border-radius:var(--radius-surface,14px);background:var(--surface);overflow:hidden}
.rs-pgroup+.rs-pgroup{border-top:1px solid var(--border)}
.rs-pline+.rs-pline{border-top:1px dotted var(--border)}
.rs-pline{display:grid;grid-template-columns:minmax(0,1fr) auto}
.rs-pline>.rs-pdetail{grid-column:1 / -1}
.rs-prow-menu{align-self:start;margin:6px 6px 0 -6px}
.rs-phead{display:flex;align-items:flex-start;gap:10px;width:100%;min-height:52px;padding:10px 12px;border:0;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.rs-phead:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.rs-ptime{flex:none;width:64px;font:700 .84rem/1.35 var(--font-ui);font-variant-numeric:tabular-nums}
.rs-ptime .rs-plus-day{padding:0}
.rs-pbody{flex:1;min-width:0}
.rs-pbody strong{display:block;font:600 .9rem/1.35 var(--font-ui);overflow-wrap:anywhere}
.rs-pbody small{display:block;margin-top:2px;color:var(--ink-muted);font:.76rem/1.4 var(--font-ui);overflow-wrap:anywhere}
.rs-pflag[data-flag="pending"],.rs-pflag[data-flag="confirm"]{color:color-mix(in srgb,var(--warning) 50%,var(--ink));font-weight:700}
.rs-pflag[data-flag="important"]{color:var(--danger);font-weight:700}
.rs-psong{display:flex!important;align-items:center;gap:4px;color:var(--accent)!important}
.rs-pchev{flex:none;display:grid;place-items:center;width:24px;height:24px;margin-top:-1px;border-radius:50%;color:var(--ink-muted);transform:rotate(-90deg);transition:transform var(--motion-reveal,220ms) var(--ease-product,ease)}
.rs-pline.is-open .rs-pchev{transform:none}
.rs-pline.is-open{background:color-mix(in srgb,var(--accent) 3%,var(--surface))}
.rs-pdetail{padding:0 12px 4px 86px}
.rs-pdetail[hidden]{display:none}
.rs-pfield{display:grid;gap:2px;margin:0 0 8px;font:700 .72rem var(--font-ui);color:var(--ink-muted)}
#runSheetPane .rs-pfield .rs-cell{font-size:16px;font-weight:400;border-bottom-color:var(--border)}
#runSheetPane .rs-pfield .rs-time-input{font-weight:700}
.rs-pfield-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.rs-pfield-row>span{flex-basis:100%}
.rs-pfield .rs-who{border-bottom:1px solid var(--border);border-radius:2px}
.rs-pactions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0 6px}
.rs-pclose{display:flex;align-items:center;gap:6px;width:calc(100% + 98px);min-height:44px;margin:0 -12px -4px -86px;padding:0 14px;border:0;border-top:1px solid var(--border);background:transparent;color:var(--ink-muted);font:600 .78rem var(--font-ui);cursor:pointer}
.rs-pclose:hover{background:var(--surface-alt)}
.rs-pclose:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.rs-up{transform:rotate(180deg)}
.rs-add-sheet .rs-sheet-read{display:block;color:var(--ink-muted);font:.72rem var(--font-ui);min-height:1.2em}

@media (max-width:600px){
  .rs-song-fields{grid-template-columns:1fr}
  .run-sheet-toolbar-actions .btn:not(.btn-primary)>span{display:none}
}
@media (max-width:360px){
  .rs-ptime{width:56px}
  .rs-pdetail{padding-left:12px}
  .rs-pclose{width:calc(100% + 24px);margin-left:-12px}
}
/* Touch: the inline choosers get full-size targets. */
@media (pointer:coarse){
  .rs-flag,.rs-who,.rs-song{min-height:44px}
  #runSheetPane .rs-cell{min-height:34px}
  #runSheetPane .rs-inline-details .rs-cell{min-height:30px}
}
@media (prefers-reduced-motion:reduce){
  .rs-line,.rs-cell,.rs-pchev{transition:none}
}
