/* Open Mic Rescue — shared host and participant presentation. */
.om-page { --accent: #a5a0ff; --accent-text: #c7c4ff; }
.om-page [hidden], .om-app [hidden] { display: none !important; }
.om-page .topbar { max-width: 1240px; margin-bottom: 26px; }
.om-header { margin-bottom: 24px; }
.om-header h1 { font-size: clamp(1.9rem, 5vw, 3rem); letter-spacing: -.035em; }
.om-subtitle { color: var(--text-dim); margin-top: 10px; font-size: 1rem; }
.om-shell { width: 100%; max-width: 1240px; }
.om-app { --accent: #a5a0ff; --accent-text: #c7c4ff; color: var(--text, #eee); width: 100%; text-align: left; }
.om-grid { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 16px; }
.om-left, .om-right { display: grid; gap: 16px; min-width: 0; }
.om-left { grid-template-columns: minmax(0, 1.7fr) minmax(240px, .65fr); align-items: start; }
.om-panel { padding: 22px; background: var(--surface, #13132b); border: 1px solid var(--border-2, #2e2e5e); border-radius: 20px; min-width: 0; }
.om-kicker { color: var(--accent-text, #c7c4ff); font-size: .72rem; line-height: 1.6; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.om-soft { color: var(--text-dim, #9999bb); font-size: .84rem; line-height: 1.6; }
.om-panel-head { display: flex; gap: 12px; align-items: center; justify-content: space-between; }
.om-panel-head h2 { font-size: 1.14rem; letter-spacing: -.02em; }
.om-button { display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 46px; padding: 12px 16px; border: 1px solid var(--border-3, #35335e); border-radius: 12px; background: var(--btn-face, #22224a); color: var(--text, #eee); font: 700 .86rem/1.3 'Segoe UI', system-ui, sans-serif; text-decoration: none; cursor: pointer; touch-action: manipulation; transition: background .15s, border-color .15s; }
.om-button:hover { background: var(--btn-face-hi, #2d2d5e); border-color: var(--text-muted, #82829f); }
.om-button:focus-visible, .om-tab:focus-visible, .om-field input:focus-visible, .om-field select:focus-visible, .om-search:focus-visible { outline: 3px solid var(--accent, #a5a0ff); outline-offset: 3px; }
.om-button:disabled { opacity: .45; cursor: not-allowed; }
.om-primary { color: #0d0d1a; background: #a5a0ff; border-color: #a5a0ff; }
.om-primary:hover { background: #c2beff; border-color: #c2beff; }
.om-success { background: #8ce1b3; color: #0d0d1a; border-color: #8ce1b3; }
.om-success:hover { background: #b5f5d1; border-color: #b5f5d1; }
.om-fail { border-color: #725159; color: #ffc2cc; }
.om-skip { color: #ddd; border-color: #6b6885; }
.om-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.om-actions .om-button { flex: 1 1 auto; }
.om-spotlight { display: flex; align-items: center; gap: 12px; margin: 16px 0 18px; }
.om-avatar { width: 50px; height: 50px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 50px; border-radius: 16px; background: #343051; color: #d7d3ff; font-size: 1.2rem; font-weight: 800; }
.om-spotlight h2 { margin-top: 3px; color: #fff; font-size: 1.7rem; overflow-wrap: anywhere; line-height: 1.15; }
.om-you { display: inline-block; margin-left: 7px; background: #a5a0ff; color: #0d0d1a; border-radius: 99px; padding: 3px 7px; vertical-align: middle; font-size: .66rem; font-weight: 800; letter-spacing: .02em; }
.om-round { font-size: .77rem; color: var(--text-dim, #9999bb); white-space: nowrap; }
.om-challenge-title { color: #fff; font-size: clamp(1.3rem, 2.1vw, 1.65rem); margin-bottom: 13px; letter-spacing: -.025em; }
.om-situation { color: var(--text-3, #ccc); line-height: 1.55; font-size: .94rem; margin-bottom: 14px; }
.om-task { padding: 16px; background: var(--surface-2, #1a1a38); border-left: 3px solid #a5a0ff; border-radius: 0 12px 12px 0; font-size: 1rem; line-height: 1.55; color: #fff; font-weight: 650; }
.om-success-rule { color: #bce9d0; font-size: .86rem; margin: 12px 0 0; line-height: 1.55; }
.om-challenge-controls { margin-top: 18px; }
.om-challenge-controls .om-actions + .om-button { width: 100%; margin-top: 8px; }
.om-result { margin-top: 17px; padding: 14px; border: 1px solid #485565; border-radius: 12px; background: #172832; }
.om-result.om-result-failed { background: #2a202e; border-color: #674450; }
.om-result strong { display: block; color: #bce9d0; font-size: .98rem; margin-bottom: 5px; }
.om-result-failed strong { color: #ffc2cc; }
.om-result p { color: #ccc; line-height: 1.55; font-size: .85rem; }
.om-score-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.om-score-number { font-size: 2.6rem; line-height: 1; font-weight: 900; color: #c7c4ff; letter-spacing: -.05em; }
.om-score-rules { font-size: .79rem; color: #aaaac6; margin-top: 12px; line-height: 1.6; }
.om-queue { padding-top: 18px; border-top: 1px solid var(--border-2, #2e2e5e); margin-top: 18px; }
.om-queue-list { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin-top: 11px; }
.om-queue-list li { padding: 8px 10px; background: #1a1a38; border: 1px solid #343054; border-radius: 9px; font-size: .79rem; display: inline-flex; align-items: center; gap: 7px; overflow-wrap: anywhere; max-width: 100%; }
.om-queue-list li.om-current { color: #dedcff; border-color: #a5a0ff; background: #2c284c; }
.om-queue-list li.om-inactive { color: #9999bb; opacity: .8; }
.om-queue-list .om-dot { width: 6px; height: 6px; background: #a5a0ff; border-radius: 50%; flex-shrink: 0; }
.om-manage { margin-top: 14px; }
.om-manage summary, .om-rules summary { color: #c7c4ff; cursor: pointer; min-height: 44px; display: flex; align-items: center; font-size: .85rem; font-weight: 700; list-style-position: inside; }
.om-roster { display: grid; gap: 8px; margin-top: 6px; }
.om-roster-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: .85rem; }
.om-roster-row .om-button { flex-shrink: 0; min-height: 44px; padding: 9px 12px; }
.om-stage { padding: 0; overflow: hidden; }
.om-stage-top { padding: 18px 22px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.om-stage-top h2 { font-size: 1.15rem; }
.om-duration { color: #aaaac6; font-size: .8rem; }
.om-empty-stage { padding: 22px; text-align: center; }
.om-empty-stage > span { display: inline-flex; align-items: center; justify-content: center; width: 62px; height: 62px; background: #24223d; border-radius: 50%; font-size: 1.7rem; margin-bottom: 14px; }
.om-empty-stage h3 { font-size: 1.18rem; color: #dedcff; margin-bottom: 7px; }
.om-stage-bottom { padding: 18px 22px 22px; }
.om-stage-track { margin-bottom: 13px; }
.om-stage-track h3 { color: #fff; font-size: 1.12rem; overflow-wrap: anywhere; }
.om-stage-track p { color: #aaaac6; font-size: .84rem; margin-top: 5px; }
.om-stage-hint { margin-top: 11px; }
.om-timer-line { display: flex; align-items: center; justify-content: space-between; margin: 14px 0; gap: 12px; }
.om-timer { font-size: 2.2rem; line-height: 1.1; font-variant-numeric: tabular-nums; font-weight: 850; letter-spacing: -.05em; color: #c7c4ff; flex-shrink: 0; }
.om-timer.om-zero { color: #bce9d0; }
.om-timer-label { color: #bbb; font-size: .84rem; line-height: 1.5; text-align: right; }
.om-progress { height: 5px; background: #343054; border-radius: 99px; overflow: hidden; margin-bottom: 18px; }
.om-progress > span { height: 100%; display: block; width: 100%; background: #a5a0ff; border-radius: inherit; transition: width .3s linear; }
.om-stage .om-actions .om-primary { flex-basis: 50%; }
.om-waiting { padding: 10px 0 0; color: #aaaac6; font-size: .84rem; line-height: 1.6; }
.om-browser { padding: 22px; }
.om-browser .om-panel-head { align-items: flex-start; }
.om-browser .om-panel-head .om-button { min-height: 44px; padding: 10px 13px; }
.om-tabs { display: flex; gap: 7px; overflow-x: auto; padding: 16px 0 8px; margin: 0 -2px; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.om-tab { flex: 0 0 auto; background: #1a1a38; color: #b5b5cf; border: 1px solid #343054; border-radius: 99px; min-height: 44px; padding: 10px 14px; font: 700 .79rem/1.3 'Segoe UI', system-ui, sans-serif; cursor: pointer; }
.om-tab.om-active { background: #a5a0ff; color: #0d0d1a; border-color: #a5a0ff; }
.om-search { display: block; width: 100%; min-height: 46px; padding: 12px 14px; margin-top: 9px; border: 1px solid #343054; border-radius: 12px; background: #0f0f23; color: #fff; font: .86rem 'Segoe UI', system-ui, sans-serif; }
.om-search::placeholder, .om-field input::placeholder { color: #9999bb; opacity: 1; }
.om-discovery { margin-top: 16px; padding: 16px; background: #0f0f23; border: 1px solid #343054; border-radius: 13px; }
.om-discovery h3 { font-size: 1rem; color: #e4e1ff; }
.om-discovery > .om-soft { font-size: .78rem; line-height: 1.6; margin-top: 8px; }
.om-discovery-form { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(110px, 160px) auto auto; align-items: end; gap: 10px; margin-top: 14px; }
.om-discovery-form .om-field { min-width: 0; font-size: .76rem; }
.om-discovery-form .om-search { min-width: 0; margin: 0; min-height: 48px; }
.om-discovery-form .om-button { min-height: 48px; font-size: .78rem; padding: 10px 14px; }
.om-discovery-form .om-field select { font-size: .86rem; }
.om-discovery-form[aria-busy="true"] .om-primary { border-color: #d6d3ff; }
.om-discovery-meta:empty, .om-discovery-results:empty { display: none; }
.om-discovery-meta { color: #b8b3d2; }
.om-discovery-results { max-height: 620px; overflow-y: auto; overscroll-behavior-y: contain; scrollbar-gutter: stable; scrollbar-width: thin; padding: 1px 4px 4px 1px; }
.om-discovery-song { display: flex; flex-direction: column; }
.om-discovery-song .om-song-info { display: flex; flex-direction: column; flex: 1 1 auto; }
.om-discovery-song h3 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
.om-discovery-song .om-artist { overflow-wrap: anywhere; line-height: 1.5; font-size: .73rem; margin-bottom: 12px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.om-discovery-song .om-actions { margin-top: auto; }
.om-owner { color: #aaaac6; font-size: .77rem; margin: 11px 0 3px; line-height: 1.55; }
.om-song-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 16px; }
.om-song { overflow: hidden; min-width: 0; border: 1px solid #343054; border-radius: 13px; background: #1a1a38; }
.om-song.om-selected { border-color: #a5a0ff; box-shadow: 0 0 0 1px #a5a0ff; }
.om-song-info { padding: 12px; }
.om-song h3 { font-size: .98rem; line-height: 1.4; color: #fff; overflow-wrap: anywhere; }
.om-artist { color: #aaaac6; font-size: .78rem; margin-top: 3px; }
.om-tags { display: flex; flex-wrap: wrap; gap: 5px; min-height: 20px; margin: 9px 0 12px; }
.om-tag { font-size: .65rem; color: #c3c0e8; padding: 3px 6px; background: #302c49; border-radius: 5px; }
.om-song .om-actions { gap: 6px; }
.om-song .om-button { flex-basis: 100%; width: 100%; padding: 10px 11px; min-height: 44px; font-size: .78rem; }
.om-empty { grid-column: 1 / -1; padding: 24px 12px; text-align: center; color: #aaaac6; line-height: 1.6; font-size: .88rem; }
.om-feedback { min-height: 0; color: var(--text-dim, #9999bb); line-height: 1.6; font-size: .85rem; }
.om-feedback:not(:empty) { padding: 10px 0 14px; }
.om-error, .om-form-error { color: #ffc2cc; }
.om-modal { width: min(740px, calc(100% - 28px)); border: 1px solid #494468; border-radius: 20px; background: #13132b; color: #eee; padding: 22px; max-height: calc(100dvh - 32px); overflow-y: auto; margin: auto; box-shadow: 0 22px 100px rgba(0,0,0,.5); }
.om-modal::backdrop { background: rgba(5,5,15,.8); }
.om-modal header { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.om-modal h2 { font-size: 1.15rem; }
.om-modal > .om-soft { margin-top: 12px; }
.om-form { display: grid; gap: 16px; }
.om-field { display: grid; gap: 8px; font-size: .86rem; }
.om-field input, .om-field select { width: 100%; min-height: 48px; color: #fff; padding: 12px 14px; border: 1px solid #494468; border-radius: 10px; background: #0d0d1a; font: 1rem 'Segoe UI', system-ui, sans-serif; }
.om-form-error { font-size: .84rem; line-height: 1.55; }
.om-duet-list { display: grid; gap: 10px; }
.om-duet-list .om-button { justify-content: space-between; width: 100%; }
.om-rules { border-top: 1px solid #2e2e5e; margin-top: 24px; padding-top: 12px; }
.om-rules p { font-size: .88rem; color: #ccc; line-height: 1.65; margin-top: 12px; }
.om-demo-link { display: inline-block; padding: 15px 0; }
.om-demo { display: flex; align-items: center; flex-wrap: wrap; gap: 14px; margin-bottom: 18px; }
.om-demo .om-field { flex: 1 1 180px; }
.om-demo[hidden], [hidden].om-panel, [hidden]#om-game { display: none; }
.om-player-wrap { width: 100%; max-width: 1240px; }
.om-player-wrap .om-grid { margin-top: 16px; }
.om-player-wrap .om-name-banner { padding-bottom: 12px; }
.om-challenge, .om-score-panel { padding: 16px 20px; }
.om-challenge-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.om-challenge-meta .om-spotlight { margin: 0; gap: 10px; min-width: 0; }
.om-challenge-meta .om-avatar { width: 40px; height: 40px; flex-basis: 40px; border-radius: 12px; font-size: 1rem; }
.om-challenge-meta .om-spotlight h2 { font-size: 1.16rem; line-height: 1.3; margin: 0; }
.om-challenge-meta .om-kicker { font-size: .65rem; }
.om-challenge-details { margin-top: 10px; }
.om-challenge-details summary { display: flex; align-items: center; gap: 10px; min-height: 44px; color: #ddd9ff; cursor: pointer; list-style: none; }
.om-challenge-details summary::before { content: '▸'; color: #a5a0ff; flex-shrink: 0; }
.om-challenge-details[open] summary::before { content: '▾'; }
.om-challenge-details summary > span { font-size: .75rem; color: #aaaac6; flex-shrink: 0; }
.om-challenge-details summary > strong { font-size: .95rem; font-weight: 700; overflow-wrap: anywhere; }
.om-challenge-details summary:focus-visible { outline: 3px solid #a5a0ff; outline-offset: 2px; border-radius: 6px; }
.om-challenge-body { padding-top: 8px; }
.om-challenge-controls { margin-top: 12px; }
.om-challenge-controls .om-button { min-height: 44px; padding: 10px 14px; }
.om-result { padding: 9px 12px; margin-top: 8px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.om-result strong { font-size: .85rem; margin: 0; }
.om-result p { font-size: .76rem; flex: 1 1 260px; }
.om-score-number { font-size: 2.2rem; }
.om-score-rules { margin-top: 5px; font-size: .73rem; }
.om-queue { padding-top: 10px; margin-top: 10px; }
.om-queue-list { gap: 5px; margin-top: 6px; }
.om-queue-list li { padding: 5px 8px; font-size: .72rem; }
.om-manage { margin-top: 6px; }
.om-manage summary { font-size: .75rem; }
.om-stage-top { padding: 13px 18px; flex-wrap: wrap; }
.om-stage-top h2 { font-size: 1rem; margin-right: auto; }
.om-stage-track { margin-bottom: 6px; }
.om-stage-track h3 { font-size: 1rem; line-height: 1.4; }
.om-stage-track p { margin-top: 3px; font-size: .78rem; }
[data-om-stage-info] > .om-soft { font-size: .73rem; }
.om-stage-hint { margin-top: 6px; }
.om-stage-session { display: grid; grid-template-columns: minmax(0, 220px) minmax(0, 1fr); align-items: center; gap: 16px; padding: 15px 18px 18px; }
.om-stage-session > [data-om-stage-timer]:empty { display: none; }
.om-stage-session > [data-om-stage-timer]:empty + [data-om-stage-controls] { grid-column: 1 / -1; }
.om-stage-session .om-timer-line { margin: 0 0 6px; gap: 10px; }
.om-stage-session .om-timer { font-size: 1.9rem; }
.om-stage-session .om-timer-label { font-size: .73rem; }
.om-stage-session .om-progress { margin-bottom: 0; }
.om-stage-session .om-actions .om-button { flex: 1 1 auto; min-height: 46px; font-size: .79rem; }
.om-stage-session .om-waiting { padding-top: 7px; font-size: .76rem; }
.om-page.om-playing .topbar { margin-bottom: 12px; }
.om-page.om-playing .om-header { display: flex; align-items: center; margin-bottom: 12px; }
.om-page.om-playing .om-header h1 { font-size: 1.4rem; }
.om-page.om-playing .om-header > .om-kicker, .om-page.om-playing .om-subtitle { display: none; }
.open-mic-card-page .name-banner { font-size: .8rem; padding: 5px 10px; margin-bottom: 5px; }
@media (max-width: 860px) {
  .om-grid { grid-template-columns: 1fr; }
  .om-left { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .om-score-panel { padding: 16px 20px; }
  .om-score-row { align-items: center; }
  .om-score-number { font-size: 2rem; }
  .om-score-rules { margin-top: 6px; }
  .om-queue { padding-top: 12px; margin-top: 12px; }
  .om-song-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .om-discovery-form { grid-template-columns: minmax(0, 1fr) minmax(110px, 160px); }
}
@media (max-width: 620px) {
  .om-page { padding-left: max(14px, env(safe-area-inset-left)); padding-right: max(14px, env(safe-area-inset-right)); }
  .om-page .topbar { margin-bottom: 20px; }
  .om-header { margin-bottom: 20px; }
  .om-header .om-kicker { font-size: .61rem; }
  .om-header h1 { font-size: 1.85rem; }
  .om-subtitle { font-size: .84rem; }
  .om-grid { gap: 14px; }
  .om-panel, .om-browser { padding: 18px; border-radius: 16px; }
  .om-stage { padding: 0; }
  .om-stage-top { padding: 16px 18px; }
  .om-stage-bottom { padding: 16px 18px 18px; }
  .om-stage-top { padding: 10px 12px; gap: 8px; }
  .om-stage-top h2 { font-size: .88rem; }
  .om-stage-top .om-duration { display: none; }
  .om-stage-session { grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 12px; }
  .om-stage-session .om-timer-line { justify-content: flex-start; }
  .om-stage-session .om-timer-label { text-align: left; }
  .om-stage-session .om-actions .om-button { flex-basis: calc(50% - 8px); }
  .om-stage-track { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 9px; }
  .om-stage-track h3 { font-size: .9rem; }
  .om-stage-track p { font-size: .73rem; margin: 0; }
  .om-spotlight { margin: 13px 0 16px; gap: 10px; }
  .om-spotlight h2 { font-size: 1.4rem; }
  .om-avatar { width: 43px; height: 43px; flex-basis: 43px; border-radius: 13px; font-size: 1rem; }
  .om-situation { font-size: .88rem; margin-bottom: 12px; }
  .om-task { font-size: .94rem; padding: 13px; }
  .om-challenge-title { font-size: 1.3rem; margin-bottom: 10px; }
  .om-success-rule { font-size: .8rem; }
  .om-song-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .om-song-info { padding: 10px; }
  .om-song h3 { font-size: .87rem; }
  .om-song .om-button { font-size: .72rem; padding: 10px 6px; }
  .om-browser .om-panel-head h2 { font-size: 1.07rem; }
  .om-browser .om-panel-head .om-button { font-size: .74rem; padding: 10px; }
  .om-duration { font-size: .73rem; }
  .om-modal { padding: 18px; }
  .om-discovery { padding: 12px; }
  .om-discovery-form { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px 8px; }
  .om-discovery-query { grid-column: 1 / -1; }
  .om-discovery-region { grid-column: 1 / -1; }
  .om-discovery-results { max-height: 540px; }
  .om-discovery-song .om-song-info { height: auto; }
}
@media (max-width: 370px) {
  .om-panel, .om-browser { padding: 15px; }
  .om-stage { padding: 0; }
  .om-song-list { grid-template-columns: 1fr; }
  .om-song { display: grid; grid-template-columns: 105px minmax(0, 1fr); }
  .om-stage .om-actions .om-button { flex-basis: calc(50% - 8px); }
}

/* Text prompts and titles keep the activity local to the room. */
.om-text-stage { padding: 0 18px 18px; }
.om-activity-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 16px; }
.om-activity-card { min-width: 0; padding: 16px; border: 1px solid #343054; border-radius: 13px; background: #101023; }
.om-activity-card h3 { color: #e4e1ff; font-size: .96rem; }
.om-activity-card p { margin-top: 8px; color: #aaaac6; font-size: .82rem; line-height: 1.65; }
.om-text-song { display: block; }
.om-source-link { display: inline-flex; align-items: center; min-height: 44px; margin-top: 8px; font-size: .75rem; line-height: 1.5; }
@media (max-width: 620px) {
  .om-activity-cards { grid-template-columns: 1fr; gap: 8px; }
  .om-text-stage { padding: 0 12px 12px; }
}
@media (max-width: 370px) { .om-text-song { display: block; } }

.om-activity-selected { border-color: #a5a0ff; background: #211d3c; }
.om-mode { padding-top: 18px; border-top: 1px solid var(--border-2, #2e2e5e); margin-top: 18px; }
.om-mode-switch { display: grid; grid-template-columns: 1fr; gap: 7px; margin-top: 9px; }
.om-mode-switch .om-button { width: auto; margin-top: 0; min-height: 42px; padding: 9px 10px; }
.om-mode-switch .om-mode-on { color: #0d0d1a; background: #a5a0ff; border-color: #a5a0ff; }
.om-mode-current { margin-top: 7px; font-weight: 700; color: var(--text, #eee); }
.om-mode-hint { margin-top: 7px; font-size: .8rem; }
.om-chain-hint { margin: 10px 0 0; padding: 9px 11px; border: 1px dashed #5d5891; border-radius: 10px; color: #d9d6ff; font-size: .84rem; line-height: 1.5; }
.om-start-modes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 16px 0 6px; text-align: left; }
.om-start-mode { display: flex; gap: 10px; align-items: flex-start; padding: 12px 13px; border: 1px solid var(--border-3, #35335e); border-radius: 12px; background: var(--btn-face, #22224a); cursor: pointer; }
.om-start-mode:has(input:checked) { border-color: #a5a0ff; background: #2c284c; }
.om-start-mode input { margin-top: 4px; accent-color: #a5a0ff; }
.om-start-mode strong { display: block; color: var(--text, #eee); font-size: .92rem; }
.om-start-mode span { display: block; color: var(--text-dim, #9999bb); font-size: .8rem; line-height: 1.5; margin-top: 3px; }
@media (max-width: 760px) { .om-start-modes { grid-template-columns: 1fr; } }
.om-followup { margin: 10px 0 0; color: #d9d6ff; font-size: .86rem; line-height: 1.55; }

/* Card presentation: one visible task, with optional tools below the table. */
.om-page, .open-mic-card-page { --om-ink: #38283d; --om-paper: #fff4df; --om-coral: #f19a88; --om-mint: #a9d7be; --om-violet: #cab6ee; background: radial-gradient(ellipse at 14% 8%, #44314f66, transparent 46%), radial-gradient(ellipse at 90% 78%, #334e4560, transparent 46%), #171321; }
.om-page .topbar { max-width: 1120px; margin-bottom: 18px; }
.om-shell { max-width: 1120px; }
.om-header { width: 100%; max-width: 1120px; text-align: left; margin-bottom: 24px; }
.om-header h1 { color: #fff4df; font-size: clamp(1.6rem, 4vw, 2.3rem); display: flex; align-items: center; gap: 12px; }
.om-title-star { color: #f19a88; font-size: 1.15em; }
.om-start-panel { border: 0; padding: 30px 0 18px; background: none; text-align: center; }
.om-start-heading { max-width: 660px; margin: 0 auto; }
.om-start-heading .om-kicker { color: #d6bcf3; font-size: .72rem; }
.om-start-heading h2 { color: #fff4df; font-size: clamp(1.9rem, 4.4vw, 3rem); font-weight: 850; line-height: 1.15; text-wrap: balance; letter-spacing: -.045em; margin: 10px 0 12px; }
.om-start-lead { color: #c9bfd2; font-size: 1rem; line-height: 1.5; }
.om-start-modes { max-width: 970px; margin: 30px auto 24px; gap: 22px; }
.om-start-mode { --mode-fill: #f3c6ad; position: relative; display: flex; flex-direction: column; gap: 0; padding: 12px 12px 22px; border: 3px solid transparent; border-radius: 24px; background: #fff4df; color: #38283d; box-shadow: 0 9px 0 #07050c55, 0 18px 32px #0003; transition: transform .18s ease, border-color .18s ease; }
.om-start-mode:nth-of-type(1) { transform: rotate(-2deg); }
.om-start-mode:nth-of-type(3) { transform: rotate(2deg); }
.om-start-mode:hover { transform: translateY(-5px); }
.om-start-mode:has(input:checked) { border-color: #f19a88; background: #fff4df; transform: translateY(-7px); box-shadow: 0 9px 0 #b2665855, 0 20px 38px #0005; }
.om-mode-next { --mode-fill: #d4e7cd; }
.om-mode-mission { --mode-fill: #dfd2f2; }
.om-start-mode input { position: absolute; top: 22px; right: 21px; z-index: 2; width: 19px; height: 19px; accent-color: #734270; }
.om-start-mode:focus-within { outline: 3px solid #cab6ee; outline-offset: 5px; }
.om-start-mode .om-mode-art { display: grid; place-items: center; width: 100%; margin: 0; border-radius: 14px; background: var(--mode-fill); aspect-ratio: 1.65; }
.om-mode-art svg { display: block; width: 100%; max-height: 175px; }
.om-start-mode .om-mode-copy { display: block; padding: 15px 10px 0; margin: 0; width: 100%; }
.om-start-mode .om-mode-number { font-size: .65rem; font-weight: 900; color: #765968; margin: 0 0 7px; letter-spacing: .15em; }
.om-start-mode strong { color: #38283d; font-size: 1.23rem; line-height: 1.25; }
.om-start-mode .om-mode-copy > span:last-child { color: #654d60; font-size: .87rem; line-height: 1.55; margin-top: 9px; }
.om-start-mode .om-mode-check { position: absolute; bottom: -12px; right: 16px; margin: 0; background: #f19a88; border: 3px solid #171321; border-radius: 50%; width: 29px; height: 29px; display: none; place-items: center; color: #38283d; font-weight: 900; }
.om-start-mode:has(input:checked) .om-mode-check { display: grid; }
#om-start { min-width: min(300px, 100%); min-height: 56px; font-size: 1rem; border-radius: 16px; background: #f19a88; border-color: #f19a88; color: #38283d; box-shadow: 0 7px 18px #0003; }
#om-start:hover:not(:disabled) { background: #ffb29f; }
.om-start-footer { color: #c4b6ce; font-size: .78rem; margin-top: 15px; }
.om-rules { border-color: #514359; max-width: 1120px; }
.om-rules summary { color: #d9c9e5; }
.om-demo-link { color: #d9c9e5; font-size: .85rem; }
.om-app { --accent: #cab6ee; --accent-text: #e1cbfa; --text-dim: #c0b4cb; color: #f5edf8; }
.om-grid, .om-left, .om-right { gap: 18px; }
.om-left { grid-template-columns: minmax(0, 1fr); }
.om-score-panel { order: -1; background: #261f33; border-color: #4b3c59; padding: 14px 18px; border-radius: 18px; }
.om-score-row { gap: 12px; align-items: center; }
.om-score-row .om-kicker { font-size: .65rem; color: #d9c8ed; }
.om-score-number { font-size: 1.65rem; color: #f3ba99; }
.om-score-rules { font-size: .73rem; line-height: 1.4; color: #cec0d9; }
.om-score-panel .om-manage { border-top: 1px solid #4b3c59; padding-top: 5px; margin-top: 8px; }
.om-score-panel > details { margin-top: 8px; }
.om-queue-disclosure, .om-mode-disclosure, .om-manage { color: #d8cbe3; }
.om-queue-disclosure summary, .om-mode-disclosure summary, .om-alternate-activities summary, .om-chooser-summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; gap: 9px; list-style: none; font-weight: 750; }
.om-queue-disclosure summary::after, .om-mode-disclosure summary::after, .om-alternate-activities summary::after, .om-chooser-summary::after { content: '+'; margin-left: auto; font-size: 1.15rem; font-weight: 500; }
.om-queue-disclosure[open] > summary::after, .om-mode-disclosure[open] > summary::after, .om-alternate-activities[open] > summary::after, .om-song-chooser[open] > summary::after { content: '−'; }
.om-queue-disclosure summary { font-size: .8rem; }
.om-queue-list li { background: #30273d; border-color: #564764; color: #d8cbe3; }
.om-queue-list li.om-current { color: #fff4df; border-color: #c2a5d9; background: #574163; }
.om-mode-switch { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.om-mode-switch .om-button { padding: 10px; font-size: .79rem; }
.om-challenge-card, .om-challenge { position: relative; overflow: hidden; padding: 24px 28px; background: #fff4df; border: 2px solid #f2d9bd; border-radius: 25px; color: #38283d; box-shadow: 0 9px 0 #07050c66, 0 18px 38px #0003; }
.om-challenge .om-kicker, .om-challenge .om-round { color: #755870; }
.om-challenge .om-spotlight { margin: 0; }
.om-challenge .om-avatar { color: #38283d; background: #e0caee; border: 2px solid #38283d22; box-shadow: 3px 3px 0 #38283d22; }
.om-challenge .om-spotlight h2 { color: #38283d; font-size: clamp(1.2rem, 2.6vw, 1.7rem); }
.om-challenge .om-you { background: #38283d; color: #fff4df; }
.om-role-badge { display: inline-flex; padding: 5px 10px; border-radius: 999px; background: #e2ccef; color: #52385e; font-size: .73rem; font-weight: 800; }
.om-phase-cue { color: #655164; font-size: .86rem; line-height: 1.5; margin-top: 12px; }
.om-card-body { display: grid; grid-template-columns: minmax(0, 1fr) 150px; align-items: start; gap: 10px 22px; margin: 20px 0 10px; }
.om-card-heading { display: block; color: #38283d; font-size: clamp(1.5rem, 3.2vw, 2.25rem); font-weight: 850; letter-spacing: -.035em; line-height: 1.2; margin: 0; }
.om-card-body > .om-card-art { grid-column: 2; grid-row: 1 / span 3; width: 150px; height: 130px; align-self: center; justify-self: end; }
.om-card-body > :not(.om-card-art) { grid-column: 1; }
.om-card-body > .om-task, .om-card-body > .om-success-rule, .om-card-body > .om-followup, .om-card-body > .om-chain-hint { grid-column: 1 / -1; }
.om-mode-tag { color: #755870; font-size: .73rem; font-weight: 800; letter-spacing: .025em; }
.om-card-art { min-width: 0; border-radius: 26px; background: #ecd7ed; transform: rotate(4deg); }
.om-card-art svg { width: 100%; max-width: 160px; height: auto; display: block; }
.om-card-art--life { background: #f3c6ad; }
.om-card-art--next { background: #d4e7cd; }
.om-card-art--mission { background: #dfd2f2; }
.om-card-prompt, .om-challenge-title { color: #38283d; font-size: clamp(1.55rem, 3.5vw, 2.5rem); font-weight: 900; letter-spacing: -.035em; line-height: 1.15; overflow-wrap: anywhere; text-wrap: balance; margin: 0; }
.om-card-context, .om-situation { color: #755870; font-size: .93rem; line-height: 1.6; margin: 10px 0 0; }
.om-challenge .om-task { border: 0; border-radius: 15px; background: #f0dfc6; color: #38283d; padding: 18px 20px; font-size: clamp(1.06rem, 2.4vw, 1.4rem); font-weight: 700; line-height: 1.6; }
.om-challenge .om-success-rule { color: #3c6750; font-size: .87rem; font-weight: 650; margin-top: 12px; }
.om-challenge .om-followup { color: #684e70; }
.om-challenge .om-chain-hint { color: #684e70; border-color: #a58ba8; background: #f5e8f1; }
.om-challenge .om-button { border-color: #bb9dad; background: #ead8e9; color: #38283d; font-size: .9rem; }
.om-challenge .om-success { background: #b8dcbd; border-color: #8cb196; }
.om-challenge .om-fail { background: #f3d5bd; border-color: #d3af91; }
.om-challenge .om-result { background: #e0eacb; border-color: #b6c597; color: #3d5139; }
.om-challenge .om-result-failed { background: #f1dfd3; border-color: #d4b8a3; color: #6a4940; }
.om-challenge .om-result p { color: inherit; }
.om-challenge .om-challenge-details summary { color: #684e70; }
.om-app[data-om-phase="challenge"] .om-stage { display: none; }
.om-app:not([data-om-phase="challenge"]) .om-challenge { padding: 18px 22px; }
.om-app:not([data-om-phase="challenge"]) .om-challenge .om-card-heading { font-size: 1.25rem; }
.om-app:not([data-om-phase="challenge"]) .om-challenge .om-card-prompt { font-size: 1.25rem; }
.om-stage { border: 1px solid #6c5476; border-radius: 25px; background: linear-gradient(130deg, #3e2e50, #261e35); box-shadow: 0 12px 28px #0003; }
.om-stage-top { padding: 18px 24px; border-bottom: 1px solid #6b557633; }
.om-stage-top h2 { font-size: 1rem; color: #e5d4f2; }
.om-duration { color: #d0bfdc; }
.om-text-stage { padding: 22px 24px 12px; }
.om-stage-track { margin-bottom: 14px; }
.om-stage-track h3 { color: #fff4df; font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 850; }
.om-stage-track p { color: #e1cced; margin-top: 6px; font-size: .85rem; }
.om-suggested-activity { border-radius: 15px; background: #ffffff0b; border: 1px solid #a483b055; padding: 17px 18px; }
.om-suggested-activity h3 { color: #f8d5b4; font-size: 1.08rem; margin-bottom: 7px; }
.om-suggested-activity p { color: #e1d0ea; font-size: 1rem; line-height: 1.6; max-width: 65ch; }
.om-alternate-activities { margin-top: 9px; font-size: .81rem; color: #d7c5e4; }
.om-activity-cards { gap: 10px; margin: 6px 0 12px; }
.om-activity-option { text-align: left; display: flex; align-items: flex-start; flex-direction: column; gap: 7px; border: 1px solid #8b729955; border-radius: 14px; padding: 15px; background: #30273f; color: #f2e5fa; font: inherit; cursor: pointer; }
.om-activity-option strong { color: #f3cfab; font-size: .88rem; }
.om-activity-option span { color: #d7c5e4; line-height: 1.6; font-size: .82rem; }
.om-activity-option.om-activity-selected { border-color: #f2b899; background: #49304d; }
.om-activity-option.om-option-current { border-color: #f2b899; background: #49304d; }
.om-activity-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 6px 0 12px; }
.om-turn-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; justify-content: flex-end; }
.om-challenge-recap > summary { min-height: 44px; display: flex; align-items: center; gap: 12px; color: #684e70; cursor: pointer; list-style: none; font-size: .87rem; }
.om-challenge-recap > summary::after { content: '+'; margin-left: auto; font-weight: 700; font-size: 1.15rem; }
.om-challenge-recap[open] > summary::after { content: '−'; }
.om-completed-prompt .om-card-body { grid-template-columns: minmax(0, 1fr); }
.om-score-panel { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 4px 24px; }
.om-score-mini { display: flex; align-items: center; justify-content: flex-start; gap: 10px; min-height: 44px; margin-right: auto; }
.om-score-panel > details { margin: 0; border: 0; padding: 0; }
.om-score-panel > details > summary { font-size: .78rem; min-height: 44px; display: flex; align-items: center; gap: 12px; }
.om-score-panel > details[open] { flex-basis: 100%; }
.om-session-tools { margin-top: 15px; }
.om-chooser-symbol { display: grid; place-items: center; width: 30px; height: 30px; background: #6c4d7d; border-radius: 9px; font-size: 1.25rem; }
.om-chooser-heading { display: block; }
.om-chooser-status { display: block; margin-top: 4px; font-size: .75rem; line-height: 1.45; color: #d2bedf; overflow-wrap: anywhere; }
.om-chooser-summary > span:nth-child(2) { min-width: 0; }
.om-chooser-chevron { display: none; }
.om-discovery > summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; color: #e5d4f2; list-style: none; }
.om-discovery > summary::after { content: '↗'; margin-left: auto; }
.om-discovery[open] > summary::after { content: '−'; }
.om-app[data-om-mode="life"] .om-card-art { background: #f3c6ad; }
.om-app[data-om-mode="next"] .om-card-art { background: #d4e7cd; }
.om-stage-session { grid-template-columns: minmax(0, 145px) minmax(0, 1fr); gap: 20px; padding: 12px 24px 23px; }
.om-stage-session .om-timer { color: #f3cfab; font-size: 2.4rem; }
.om-stage-session .om-timer-label { color: #d7c5e4; }
.om-progress { background: #6b507d; }
.om-progress > span { background: #f2b899; }
.om-stage .om-actions .om-button { min-height: 47px; border-color: #8b7299; background: #4c3a5e; font-size: .85rem; }
.om-stage .om-actions .om-primary { background: #f19a88; border-color: #f19a88; color: #38283d; flex-basis: auto; }
.om-stage .om-actions .om-success { background: #a9d7be; border-color: #a9d7be; color: #203c31; }
.om-waiting { color: #d7c5e4; }
.om-song-chooser { padding: 0; background: #261f33; border-color: #4b3c59; border-radius: 18px; }
.om-chooser-summary { padding: 15px 20px; color: #f3e7fb; font-size: .94rem; }
.om-chooser-summary::-webkit-details-marker { display: none; }
.om-chooser-content { border-top: 1px solid #4b3c59; padding: 20px; }
.om-browser .om-panel-head h2 { font-size: 1rem; }
.om-discovery { background: #1e192a; border-color: #51405f; margin-top: 15px; padding: 16px; }
.om-discovery-form { grid-template-columns: minmax(0, 1fr) 125px auto auto; }
.om-discovery h3 { font-size: .9rem; }
.om-tab { background: #362a45; border-color: #695379; color: #deceea; }
.om-tab.om-active { background: #cab6ee; border-color: #cab6ee; color: #38283d; }
.om-search, .om-field input, .om-field select { background: #1c1627; border-color: #695379; color: #f3e7fb; }
.om-search::placeholder, .om-field input::placeholder { color: #b6a3c5; }
.om-song-list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.om-song { border: 1px solid #60496a; border-radius: 15px; background: linear-gradient(135deg, #3d304c, #2f263e); box-shadow: 0 4px 0 #0002; }
.om-song.om-selected { border-color: #f2b899; box-shadow: 0 0 0 1px #f2b899; }
.om-song-info { padding: 15px; }
.om-song h3 { font-size: 1rem; color: #fff4df; }
.om-artist { color: #d4c0e1; }
.om-song .om-button { font-size: .76rem; padding: 10px; background: #53405f; border-color: #7b608a; }
.om-song .om-primary { background: #d4bdf0; border-color: #d4bdf0; color: #38283d; }
.om-song .om-tags { display: none; }
.om-source-link { color: #d4c0e1; font-size: .72rem; }
.om-owner, .om-empty { color: #d4c0e1; }
.om-modal { background: #261f33; border-color: #8b7299; }
.om-modal h2 { color: #fff4df; }
.om-app summary:focus-visible, .om-activity-option:focus-visible { outline: 3px solid #cab6ee; outline-offset: 3px; border-radius: 10px; }
.om-page.om-playing .om-header { margin-bottom: 14px; }
.om-page.om-playing .om-header h1 { font-size: 1.4rem; }
.open-mic-card-page #content { max-width: 1000px; }
.open-mic-card-page .name-banner { color: #ead8f4; }
@media (max-width: 860px) {
  .om-start-modes { gap: 16px; }
  .om-discovery-form { grid-template-columns: minmax(0, 1fr) 125px; }
  .om-song-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .om-start-panel { padding-top: 10px; }
  .om-start-modes { grid-template-columns: 1fr; gap: 15px; margin: 24px auto; max-width: 530px; }
  .om-start-mode, .om-start-mode:nth-of-type(1), .om-start-mode:nth-of-type(3), .om-start-mode:has(input:checked) { display: grid; grid-template-columns: 110px minmax(0, 1fr); align-items: center; gap: 17px; transform: none; padding: 11px 30px 11px 11px; border-radius: 20px; }
  .om-start-mode .om-mode-copy { padding: 4px 0; }
  .om-start-mode .om-mode-art { aspect-ratio: 1; }
  .om-start-mode strong { font-size: 1.08rem; }
  .om-start-mode .om-mode-copy > span:last-child { font-size: .8rem; margin-top: 6px; }
  .om-start-mode input { right: 12px; top: 12px; width: 16px; height: 16px; }
  .om-start-mode .om-mode-number { font-size: .6rem; margin-bottom: 4px; }
}
@media (max-width: 620px) {
  .om-card-body { grid-template-columns: minmax(0, 1fr) 85px; gap: 10px 12px; }
  .om-card-body > .om-card-art { width: 85px; height: 80px; }
  .om-challenge { padding: 20px 18px; border-radius: 22px; }
  .om-challenge .om-task { padding: 16px; font-size: 1.07rem; }
  .om-challenge .om-challenge-meta { flex-wrap: wrap; }
  .om-score-panel { padding: 12px 16px; }
  .om-text-stage { padding: 20px 18px 9px; }
  .om-stage-top { padding: 15px 18px; }
  .om-stage-session { grid-template-columns: 1fr; padding: 12px 18px 20px; gap: 12px; }
  .om-stage-session .om-actions .om-button { flex-basis: calc(50% - 8px); }
  .om-activity-cards { grid-template-columns: 1fr; }
  .om-activity-options { grid-template-columns: 1fr; }
  .om-chooser-content { padding: 15px; }
  .om-discovery-form { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .om-song-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .om-song-info { padding: 12px; }
  .om-song h3 { font-size: .93rem; }
  .om-mode-switch { grid-template-columns: 1fr; }
  .om-role-badge { font-size: .7rem; }
}
@media (max-width: 390px) {
  .om-start-mode, .om-start-mode:has(input:checked) { grid-template-columns: 80px minmax(0, 1fr); gap: 12px; }
  .om-start-mode .om-mode-copy > span:last-child { font-size: .76rem; }
  .om-card-body { grid-template-columns: minmax(0, 1fr) 64px; }
  .om-card-body > .om-card-art { width: 64px; height: 68px; }
  .om-song-list { grid-template-columns: 1fr; }
  .om-text-song { display: block; }
}
@media (prefers-reduced-motion: reduce) {
  .om-start-mode, .om-button, .om-progress > span { transition: none; }
  .om-start-mode, .om-start-mode:hover, .om-start-mode:has(input:checked) { transform: none; }
}
