Spaces:
Sleeping
Sleeping
| :root { | |
| --bg: #f5efe7; | |
| --bg-2: #efe5d7; | |
| --surface: rgba(255, 251, 246, 0.92); | |
| --surface-strong: #fffaf3; | |
| --ink: #1d1815; | |
| --muted: #5a5048; | |
| --line: #dbcdbd; | |
| --accent: #b33636; | |
| --accent-2: #264653; | |
| --accent-soft: #f0ddd0; | |
| --ok: #236b45; | |
| --radius: 18px; | |
| --radius-sm: 12px; | |
| --radius-pill: 999px; | |
| --tab-height: 56px; | |
| } | |
| * { box-sizing: border-box; } | |
| body { | |
| margin: 0; | |
| color: var(--ink); | |
| font-family: "IBM Plex Sans", "Inter", system-ui, sans-serif; | |
| background: | |
| radial-gradient(circle at top left, rgba(179, 54, 54, 0.14), transparent 24%), | |
| radial-gradient(circle at bottom right, rgba(38, 70, 83, 0.12), transparent 22%), | |
| linear-gradient(180deg, var(--bg-2), var(--bg)); | |
| min-height: 100vh; | |
| padding-bottom: calc(var(--tab-height) + 12px); | |
| } | |
| button, input, textarea { font: inherit; } | |
| button { | |
| border: 0; | |
| border-radius: var(--radius-pill); | |
| background: var(--accent); | |
| color: white; | |
| padding: 10px 16px; | |
| cursor: pointer; | |
| transition: transform 120ms ease, opacity 120ms ease; | |
| font-size: 0.88rem; | |
| } | |
| button:hover { transform: translateY(-1px); } | |
| button:active { transform: scale(0.97); } | |
| button.secondary { background: var(--accent-2); } | |
| button.ghost { | |
| background: transparent; | |
| color: var(--ink); | |
| border: 1px solid var(--line); | |
| } | |
| button.sm { padding: 6px 12px; font-size: 0.82rem; } | |
| input, textarea { | |
| width: 100%; | |
| border: 1px solid var(--line); | |
| border-radius: 14px; | |
| padding: 12px 14px; | |
| background: var(--surface-strong); | |
| color: var(--ink); | |
| } | |
| .page { | |
| max-width: 680px; | |
| margin: 0 auto; | |
| padding: 16px; | |
| } | |
| /* ββ Global tools (all tabs / mobile + desktop) ββ */ | |
| .app-global-bar { | |
| display: flex; | |
| justify-content: flex-end; | |
| align-items: center; | |
| margin: 0 0 10px; | |
| min-height: 36px; | |
| } | |
| .app-graph-debug-toggle--on { | |
| border-color: var(--accent-2); | |
| background: rgba(38, 70, 83, 0.1); | |
| color: var(--accent-2); | |
| } | |
| /* ββ Tab bar ββ */ | |
| .tab-bar { | |
| position: fixed; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| display: flex; | |
| justify-content: center; | |
| gap: 0; | |
| height: var(--tab-height); | |
| background: var(--surface-strong); | |
| border-top: 1px solid var(--line); | |
| z-index: 90; | |
| } | |
| .tab-btn { | |
| flex: 1; | |
| max-width: 180px; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 2px; | |
| background: transparent; | |
| color: var(--muted); | |
| border: none; | |
| border-radius: 0; | |
| padding: 4px 0; | |
| font-size: 0.72rem; | |
| font-weight: 600; | |
| letter-spacing: 0.02em; | |
| transition: color 100ms ease; | |
| } | |
| .tab-btn:hover { transform: none; } | |
| .tab-btn.active { color: var(--accent); } | |
| .tab-icon { font-size: 1.3rem; line-height: 1; } | |
| .tab-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| min-width: 18px; | |
| height: 18px; | |
| border-radius: var(--radius-pill); | |
| background: var(--accent); | |
| color: white; | |
| font-size: 0.66rem; | |
| font-weight: 700; | |
| padding: 0 5px; | |
| position: absolute; | |
| top: 4px; | |
| right: calc(50% - 20px); | |
| } | |
| /* ββ Top bar ββ */ | |
| .top-bar { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| margin-bottom: 16px; | |
| } | |
| .top-bar-title { | |
| font-size: 1.4rem; | |
| font-weight: 800; | |
| letter-spacing: -0.03em; | |
| line-height: 1; | |
| } | |
| .top-bar-right { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 0.82rem; | |
| color: var(--muted); | |
| } | |
| .top-bar-right strong { color: var(--ink); } | |
| /* ββ Cards ββ */ | |
| .card { | |
| background: var(--surface); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| padding: 20px; | |
| box-shadow: 0 8px 24px rgba(0, 0, 0, 0.04); | |
| } | |
| .card-lg { | |
| padding: 28px 24px; | |
| text-align: center; | |
| } | |
| .card-title { | |
| margin: 0 0 8px; | |
| font-size: 1.8rem; | |
| font-weight: 800; | |
| letter-spacing: -0.03em; | |
| line-height: 1.1; | |
| } | |
| .card-definition { | |
| color: var(--muted); | |
| font-size: 1rem; | |
| line-height: 1.5; | |
| max-width: 480px; | |
| margin: 0 auto 16px; | |
| } | |
| /* User-facing category only β never raw backend cluster keys */ | |
| .kink-pill, | |
| .card-cluster { | |
| display: inline-block; | |
| padding: 5px 11px; | |
| border-radius: var(--radius-pill); | |
| background: rgba(38, 70, 83, 0.08); | |
| color: var(--accent-2); | |
| font-size: 0.7rem; | |
| font-weight: 700; | |
| letter-spacing: 0.06em; | |
| text-transform: uppercase; | |
| margin-bottom: 12px; | |
| } | |
| .card-image-area { | |
| width: 100%; | |
| aspect-ratio: 16 / 9; | |
| border-radius: var(--radius-sm); | |
| background: linear-gradient(135deg, #c9b8a7 0%, #a89584 100%); | |
| overflow: hidden; | |
| margin-bottom: 16px; | |
| position: relative; | |
| cursor: pointer; | |
| } | |
| .card-image-area img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| filter: blur(20px); | |
| transition: filter 0.3s ease; | |
| } | |
| .card-image-area.revealed img { filter: none; } | |
| .card-counter { | |
| font-size: 0.84rem; | |
| color: var(--muted); | |
| font-weight: 600; | |
| } | |
| .card-image-area--preview { | |
| cursor: pointer; | |
| } | |
| .card-image-area--preview .card-image-blur { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| filter: blur(20px); | |
| transform: scale(1.04); | |
| display: block; | |
| } | |
| .card-image-cta { | |
| position: absolute; | |
| inset: 0; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| color: #fff; | |
| font-size: 0.95rem; | |
| font-weight: 700; | |
| text-shadow: 0 1px 8px rgba(0, 0, 0, 0.75); | |
| pointer-events: none; | |
| } | |
| .card-image-scroll { | |
| max-height: 340px; | |
| overflow-y: auto; | |
| overflow-x: hidden; | |
| scroll-snap-type: y mandatory; | |
| border-radius: var(--radius-sm); | |
| margin-bottom: 16px; | |
| border: 1px solid var(--line); | |
| -webkit-overflow-scrolling: touch; | |
| overscroll-behavior: contain; | |
| scrollbar-width: thin; | |
| } | |
| .card-image-slide { | |
| min-height: 220px; | |
| scroll-snap-align: start; | |
| scroll-snap-stop: always; | |
| } | |
| .card-image-slide img { | |
| width: 100%; | |
| height: 100%; | |
| min-height: 220px; | |
| object-fit: cover; | |
| display: block; | |
| } | |
| /* ββ Discover: static card (no drag) ββ */ | |
| .discover-card-wrap { | |
| margin: 0 auto 10px; | |
| max-width: 420px; | |
| border-radius: 22px; | |
| box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12); | |
| } | |
| .discover-photo-hint { | |
| text-align: center; | |
| margin: 0 0 8px; | |
| line-height: 1.45; | |
| max-width: 420px; | |
| margin-left: auto; | |
| margin-right: auto; | |
| padding: 0 8px; | |
| } | |
| .discover-photo-hint strong { | |
| color: var(--ink); | |
| font-weight: 800; | |
| } | |
| .discover-reason-row { | |
| max-width: 420px; | |
| margin: 0 auto 8px; | |
| padding: 0 8px; | |
| } | |
| .discover-reason-pill { | |
| display: inline-flex; | |
| align-items: center; | |
| padding: 6px 12px; | |
| border-radius: var(--radius-pill); | |
| background: rgba(29, 24, 21, 0.06); | |
| color: var(--ink); | |
| font-size: 0.78rem; | |
| font-weight: 600; | |
| line-height: 1.3; | |
| } | |
| .discover-reason-pill--partner_influenced { | |
| background: rgba(179, 54, 54, 0.12); | |
| color: var(--accent); | |
| } | |
| .discover-reason-pill--starter { | |
| background: rgba(38, 70, 83, 0.1); | |
| color: var(--accent-2); | |
| } | |
| .discover-group-row { | |
| max-width: 420px; | |
| margin: 0 auto 14px; | |
| padding: 0 4px; | |
| } | |
| .discover-group-label { | |
| font-size: 0.72rem; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| color: var(--muted); | |
| margin-bottom: 8px; | |
| } | |
| .partner-group-picker { | |
| margin-bottom: 8px; | |
| } | |
| .discover-photo-toggle { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| margin: 0 auto 12px; | |
| max-width: 420px; | |
| font-size: 0.86rem; | |
| color: var(--muted); | |
| cursor: pointer; | |
| user-select: none; | |
| } | |
| .discover-photo-toggle input { | |
| width: 1.05rem; | |
| height: 1.05rem; | |
| accent-color: var(--accent, #c62828); | |
| } | |
| .discover-directions { | |
| max-width: 420px; | |
| margin: 4px auto 6px; | |
| padding: 0 10px; | |
| } | |
| .discover-dir-label { | |
| font-size: 0.72rem; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.07em; | |
| color: var(--muted); | |
| margin-bottom: 8px; | |
| } | |
| .discover-direction-sheet { | |
| max-width: 420px; | |
| margin: 0 auto 14px; | |
| padding: 14px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: rgba(255, 255, 255, 0.88); | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .discover-direction-actions { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| .discover-scenario-hint { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| margin-bottom: 12px; | |
| } | |
| .discover-scenario-hint strong { | |
| display: block; | |
| margin-bottom: 2px; | |
| } | |
| /* Tinder card (photo-first, vertical photo stack) */ | |
| .tinder-card { | |
| background: var(--surface-strong); | |
| border: 1px solid var(--line); | |
| border-radius: 22px; | |
| overflow: hidden; | |
| text-align: left; | |
| } | |
| .tinder-card__media { | |
| position: relative; | |
| background: linear-gradient(145deg, #3d3430 0%, #1a1513 100%); | |
| } | |
| .tinder-card__media-inner { | |
| position: relative; | |
| /* vh jumps when mobile browser chrome toggles; dvh tracks the visible viewport. */ | |
| height: min(58vh, 520px); | |
| height: min(58dvh, 520px); | |
| min-height: 280px; | |
| overflow: hidden; | |
| } | |
| .tinder-card__carousel { | |
| position: relative; | |
| width: 100%; | |
| height: 100%; | |
| } | |
| .tinder-card__slide--solo { | |
| height: 100%; | |
| } | |
| .tinder-card__slide--solo img { | |
| width: 100%; | |
| height: 100%; | |
| min-height: min(58vh, 520px); | |
| min-height: min(58dvh, 520px); | |
| object-fit: cover; | |
| display: block; | |
| } | |
| /* Stop above the bottom strip (reveal row + safe area) so prev/next donβt steal Show taps. */ | |
| .tinder-edge { | |
| position: absolute; | |
| top: 0; | |
| bottom: calc(104px + env(safe-area-inset-bottom, 0px)); | |
| width: 30%; | |
| max-width: 150px; | |
| z-index: 4; | |
| cursor: pointer; | |
| background: transparent; | |
| border: none; | |
| padding: 0; | |
| -webkit-tap-highlight-color: transparent; | |
| } | |
| .tinder-edge--left { | |
| left: 0; | |
| background: linear-gradient(90deg, rgba(0, 0, 0, 0.14), transparent); | |
| } | |
| .tinder-edge--right { | |
| right: 0; | |
| background: linear-gradient(270deg, rgba(0, 0, 0, 0.14), transparent); | |
| } | |
| .tinder-edge:active { | |
| opacity: 0.85; | |
| } | |
| .tinder-dots { | |
| position: absolute; | |
| bottom: 14px; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| display: flex; | |
| gap: 7px; | |
| z-index: 5; | |
| pointer-events: none; | |
| } | |
| .tinder-dots span { | |
| width: 7px; | |
| height: 7px; | |
| border-radius: 50%; | |
| background: rgba(255, 255, 255, 0.38); | |
| transition: transform 120ms ease, background 120ms ease; | |
| } | |
| .tinder-dots span.on { | |
| background: #fff; | |
| transform: scale(1.12); | |
| } | |
| .tinder-card__media-scroll { | |
| height: 100%; | |
| overflow-y: auto; | |
| overflow-x: hidden; | |
| scroll-snap-type: y mandatory; | |
| -webkit-overflow-scrolling: touch; | |
| overscroll-behavior: contain; | |
| scrollbar-width: thin; | |
| } | |
| .tinder-card__slide { | |
| min-height: 100%; | |
| scroll-snap-align: start; | |
| scroll-snap-stop: always; | |
| box-sizing: border-box; | |
| } | |
| .tinder-card__slide img { | |
| width: 100%; | |
| height: 100%; | |
| min-height: min(58vh, 520px); | |
| object-fit: cover; | |
| display: block; | |
| } | |
| .tinder-card__img-blur { | |
| filter: blur(22px); | |
| transform: scale(1.06); | |
| } | |
| .tinder-card__media--placeholder { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| aspect-ratio: 3 / 4; | |
| max-height: 58vh; | |
| min-height: 280px; | |
| } | |
| .tinder-card__placeholder-letters { | |
| font-size: 3.5rem; | |
| font-weight: 800; | |
| color: rgba(255, 255, 255, 0.22); | |
| letter-spacing: -0.06em; | |
| } | |
| .tinder-card__photo-badge { | |
| position: absolute; | |
| top: 12px; | |
| right: 12px; | |
| left: auto; | |
| bottom: auto; | |
| transform: none; | |
| z-index: 4; | |
| padding: 5px 12px; | |
| border-radius: var(--radius-pill); | |
| background: rgba(0, 0, 0, 0.5); | |
| color: #fff; | |
| font-size: 0.74rem; | |
| font-weight: 700; | |
| letter-spacing: 0.04em; | |
| pointer-events: none; | |
| } | |
| .tinder-card__gradient { | |
| position: absolute; | |
| inset: 0; | |
| background: linear-gradient(180deg, transparent 38%, rgba(0, 0, 0, 0.55) 100%); | |
| pointer-events: none; | |
| z-index: 2; | |
| } | |
| /* Fixed-height strip: keeps βShowβ from riding a % of a box whose height jitters with vh. */ | |
| .tinder-card__reveal-row { | |
| position: absolute; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| height: calc(104px + env(safe-area-inset-bottom, 0px)); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 6; | |
| pointer-events: none; | |
| box-sizing: border-box; | |
| padding-bottom: env(safe-area-inset-bottom, 0px); | |
| } | |
| .tinder-card__reveal { | |
| position: relative; | |
| flex: 0 0 auto; | |
| width: max-content; | |
| max-width: min(280px, calc(100% - 32px)); | |
| margin: 0; | |
| padding: 11px 20px; | |
| border-radius: var(--radius-pill); | |
| border: 1px solid rgba(255, 255, 255, 0.5); | |
| background: rgba(0, 0, 0, 0.5); | |
| color: #fff; | |
| font-size: 0.84rem; | |
| font-weight: 700; | |
| cursor: pointer; | |
| box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35); | |
| touch-action: manipulation; | |
| -webkit-user-select: none; | |
| user-select: none; | |
| pointer-events: auto; | |
| outline: none; | |
| } | |
| @media (hover: hover) and (pointer: fine) { | |
| .tinder-card__reveal:hover { | |
| background: rgba(0, 0, 0, 0.62); | |
| } | |
| } | |
| .tinder-card__reveal:focus-visible { | |
| box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35), 0 0 0 2px rgba(255, 255, 255, 0.45); | |
| } | |
| .tinder-card__body { | |
| padding: 16px 18px 20px; | |
| } | |
| /* Native <button> for collapsed Discover strip: iOS/Safari often skips click on div[role=button]. */ | |
| button.tinder-card__body.tinder-card__body--tappable { | |
| display: block; | |
| width: 100%; | |
| border: none; | |
| margin: 0; | |
| padding: 16px 18px 20px; | |
| font: inherit; | |
| color: inherit; | |
| text-align: left; | |
| background: var(--surface-strong); | |
| appearance: none; | |
| -webkit-appearance: none; | |
| border-radius: 0; | |
| box-sizing: border-box; | |
| } | |
| .tinder-card__body--tappable { | |
| cursor: pointer; | |
| border-radius: 0 0 18px 18px; | |
| transition: background 140ms ease; | |
| touch-action: manipulation; | |
| -webkit-tap-highlight-color: transparent; | |
| } | |
| .tinder-card__body--tappable:focus-visible { | |
| outline: none; | |
| box-shadow: inset 0 0 0 2px rgba(100, 80, 200, 0.35); | |
| } | |
| .tinder-card__body--tappable:active { | |
| background: rgba(0, 0, 0, 0.045); | |
| } | |
| .tinder-card__body--expanded { | |
| max-height: min(52vh, 420px); | |
| overflow-y: auto; | |
| overscroll-behavior: contain; | |
| -webkit-overflow-scrolling: touch; | |
| } | |
| .tinder-card__body .kink-pill { | |
| margin-bottom: 8px; | |
| } | |
| .tinder-card__body .card-title { | |
| font-size: 1.55rem; | |
| text-align: left; | |
| margin-bottom: 6px; | |
| } | |
| .tinder-card__body:not(.tinder-card__body--expanded) .card-definition { | |
| text-align: left; | |
| font-size: 0.92rem; | |
| line-height: 1.45; | |
| display: block; | |
| overflow: visible; | |
| margin-bottom: 0; | |
| color: var(--ink); | |
| } | |
| .tinder-card__body--expanded .card-definition--discover-full { | |
| text-align: left; | |
| font-size: 0.92rem; | |
| line-height: 1.5; | |
| display: block; | |
| margin-bottom: 0; | |
| overflow: visible; | |
| color: var(--ink); | |
| } | |
| .tinder-card__notes { | |
| margin-top: 10px; | |
| font-size: 0.84rem; | |
| line-height: 1.45; | |
| white-space: pre-wrap; | |
| word-break: break-word; | |
| color: #5c5c5c; | |
| } | |
| .tinder-card__info-cue { | |
| margin-top: 10px; | |
| font-size: 0.72rem; | |
| font-weight: 600; | |
| letter-spacing: 0.02em; | |
| color: #888; | |
| text-align: center; | |
| } | |
| .tinder-card .safety-badge { | |
| margin-top: 8px; | |
| } | |
| /* ββ Action bar (Discover) ββ */ | |
| .action-bar { | |
| display: flex; | |
| flex-wrap: nowrap; | |
| justify-content: center; | |
| gap: 8px; | |
| padding: 16px 8px; | |
| max-width: 600px; | |
| margin: 0 auto; | |
| } | |
| .action-btn { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 4px; | |
| padding: 10px 6px; | |
| border-radius: 14px; | |
| border: 1px solid var(--line); | |
| background: white; | |
| color: var(--ink); | |
| font-size: 0.76rem; | |
| font-weight: 600; | |
| min-width: 0; | |
| flex: 1 1 0; | |
| transition: transform 100ms ease, background 100ms ease, border-color 100ms ease; | |
| } | |
| .action-btn:hover { transform: translateY(-2px); } | |
| .action-btn:active { transform: scale(0.94); } | |
| .action-btn .action-icon { font-size: 1.4rem; line-height: 1; } | |
| .action-btn.love { border-color: #e57373; background: #fff5f5; } | |
| .action-btn.like { border-color: #81c784; background: #f5fff5; } | |
| .action-btn.maybe { border-color: #b39ddb; background: #f3e5f5; } | |
| .action-btn.skip { border-color: var(--line); } | |
| .action-btn.nogo { border-color: #bbb; background: #fafafa; } | |
| /* ββ Chip flow ββ */ | |
| .chip-flow { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| align-items: flex-start; | |
| } | |
| .chip-flow--with-dnd { | |
| flex-direction: column; | |
| align-items: stretch; | |
| } | |
| .plays-board-card--inline { | |
| width: 100%; | |
| } | |
| /* ββ Play chip ββ */ | |
| .play-chip { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 6px 10px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: rgba(255, 255, 255, 0.82); | |
| font-size: 0.88rem; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: border-color 100ms ease, box-shadow 100ms ease; | |
| max-width: 100%; | |
| } | |
| .chip-top-row { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| min-width: 0; | |
| flex: 1; | |
| } | |
| .chip-near-title { | |
| flex-shrink: 0; | |
| opacity: 0.55; | |
| font-size: 0.85em; | |
| font-weight: 600; | |
| cursor: help; | |
| } | |
| .play-chip:hover { border-color: var(--accent); } | |
| .play-chip .chip-emoji { flex-shrink: 0; } | |
| .play-chip .chip-name { | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| min-width: 0; | |
| } | |
| .play-chip.expanded { | |
| width: 100%; | |
| max-width: 100%; | |
| min-width: 0; | |
| box-sizing: border-box; | |
| flex-direction: column; | |
| align-items: stretch; | |
| gap: 10px; | |
| padding: 12px; | |
| background: white; | |
| border-color: var(--accent); | |
| box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06); | |
| } | |
| .play-chip.expanded .chip-top-row { | |
| align-items: flex-start; | |
| } | |
| .play-chip.expanded .chip-name { | |
| display: -webkit-box; | |
| -webkit-box-orient: vertical; | |
| -webkit-line-clamp: 3; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: normal; | |
| word-break: break-word; | |
| } | |
| .plays-inspector { | |
| scroll-margin-top: 12px; | |
| } | |
| .plays-inspector--tentative { | |
| border: 1px dashed var(--accent, #888); | |
| background: rgba(255, 255, 255, 0.02); | |
| } | |
| .plays-inspector-head-actions { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| } | |
| .tentative-badge { | |
| display: inline-block; | |
| margin-top: 4px; | |
| padding: 2px 8px; | |
| font-size: 0.72rem; | |
| border-radius: 999px; | |
| border: 1px dashed var(--accent, #888); | |
| color: var(--muted); | |
| } | |
| .play-chip--expandable { | |
| cursor: pointer; | |
| } | |
| .play-chip--expanded { | |
| background: rgba(255, 255, 255, 0.04); | |
| } | |
| .play-chip-inspector { | |
| width: 100%; | |
| margin-top: 8px; | |
| } | |
| .play-chip-inspector--floating { | |
| margin-top: 12px; | |
| } | |
| .discover-saved-flash { | |
| align-self: center; | |
| background: var(--accent, #4a8); | |
| color: white; | |
| padding: 4px 12px; | |
| border-radius: 999px; | |
| font-size: 0.85rem; | |
| margin: 6px auto; | |
| animation: discover-saved-fade 1.2s ease-out forwards; | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .discover-saved-flash { animation: none; opacity: 1; } | |
| } | |
| @keyframes discover-saved-fade { | |
| 0% { opacity: 0; transform: scale(0.92); } | |
| 20% { opacity: 1; transform: scale(1); } | |
| 80% { opacity: 1; } | |
| 100% { opacity: 0; transform: scale(0.95); } | |
| } | |
| .dir-pills--mutual { | |
| padding: 8px 12px; | |
| border: 1px dashed var(--muted, #5a5048); | |
| border-radius: 8px; | |
| } | |
| .confirm-dialog-backdrop { | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(0, 0, 0, 0.55); | |
| display: grid; | |
| place-items: center; | |
| z-index: 100; | |
| padding: 16px; | |
| } | |
| .confirm-dialog { | |
| background: var(--bg, #f5efe7); | |
| color: var(--fg, #1a1612); | |
| border-radius: 14px; | |
| max-width: 440px; | |
| width: 100%; | |
| padding: 22px; | |
| box-shadow: 0 18px 60px rgba(0, 0, 0, 0.35); | |
| outline: none; | |
| } | |
| .confirm-dialog-title { margin: 0 0 8px 0; font-size: 1.1rem; } | |
| .confirm-dialog-body { margin: 0 0 16px 0; color: var(--muted, #5a5048); } | |
| .confirm-dialog-actions { | |
| display: flex; | |
| gap: 8px; | |
| justify-content: flex-end; | |
| flex-wrap: wrap; | |
| } | |
| .confirm-dialog--destructive .confirm-dialog-title { color: #b04030; } | |
| .tab-attention { | |
| position: absolute; | |
| top: 4px; | |
| right: 6px; | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background: #d6403a; | |
| box-shadow: 0 0 0 2px var(--bg, #f5efe7); | |
| } | |
| .together-boundary-alert { | |
| border-left: 3px solid var(--danger, #c44); | |
| } | |
| /* Subtle on-mount pulse for the first incoming partner request β paired with smooth scroll | |
| * in together.js. Reduced-motion users see the static highlight (border) without animation. */ | |
| .together-request--attention { | |
| outline: 2px solid var(--accent, #d6403a); | |
| outline-offset: 2px; | |
| border-radius: 8px; | |
| } | |
| @media (prefers-reduced-motion: no-preference) { | |
| .together-request--attention { | |
| animation: together-request-pulse 1.6s ease-out; | |
| } | |
| @keyframes together-request-pulse { | |
| 0% { outline-color: rgba(214, 64, 58, 0.0); outline-offset: 8px; } | |
| 25% { outline-color: rgba(214, 64, 58, 0.95); outline-offset: 2px; } | |
| 100% { outline-color: rgba(214, 64, 58, 0.0); outline-offset: 2px; } | |
| } | |
| } | |
| .skeleton { padding: 12px; } | |
| .skeleton-line { | |
| height: 12px; | |
| margin: 8px 0; | |
| border-radius: 6px; | |
| background: linear-gradient(90deg, rgba(0,0,0,0.06), rgba(0,0,0,0.12), rgba(0,0,0,0.06)); | |
| background-size: 200% 100%; | |
| } | |
| .skeleton-line--lg { height: 28px; width: 60%; } | |
| .skeleton-line--md { width: 40%; } | |
| .skeleton-line--full { width: 100%; } | |
| .skeleton-board { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 12px; } | |
| .skeleton-row { padding: 8px 0; border-bottom: 1px solid rgba(0,0,0,0.05); } | |
| @media (prefers-reduced-motion: no-preference) { | |
| .skeleton-line { | |
| animation: skeleton-shimmer 1.4s ease-in-out infinite; | |
| } | |
| } | |
| @keyframes skeleton-shimmer { | |
| 0% { background-position: 200% 50%; } | |
| 100% { background-position: -200% 50%; } | |
| } | |
| .scenario-row-error { | |
| color: var(--danger, #c44); | |
| margin-top: 4px; | |
| } | |
| .plays-inspector-head { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 12px; | |
| } | |
| .plays-inspector-copy { | |
| min-width: 0; | |
| } | |
| .plays-inspector-label { | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| font-weight: 700; | |
| color: var(--muted); | |
| } | |
| .plays-inspector-title-row { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 8px; | |
| min-width: 0; | |
| } | |
| .plays-inspector-title { | |
| margin: 0; | |
| font-size: 1.2rem; | |
| line-height: 1.2; | |
| overflow-wrap: anywhere; | |
| word-break: break-word; | |
| } | |
| .plays-inspector-emoji { | |
| flex-shrink: 0; | |
| font-size: 1.2rem; | |
| line-height: 1; | |
| } | |
| .plays-inspector-definition { | |
| margin: 0; | |
| } | |
| .plays-inspector-actions, | |
| .plays-inspector-actions-row, | |
| .plays-inspector-section { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| /* ββ Inline detail (expanded chip) ββ */ | |
| .inline-detail { | |
| display: grid; | |
| gap: 10px; | |
| min-width: 0; | |
| max-width: 100%; | |
| } | |
| .inline-detail .detail-def { | |
| font-size: 0.9rem; | |
| line-height: 1.45; | |
| color: var(--muted); | |
| font-weight: 400; | |
| overflow-wrap: anywhere; | |
| word-break: break-word; | |
| } | |
| .scenario-panel { | |
| display: grid; | |
| gap: 8px; | |
| padding: 10px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: rgba(0, 0, 0, 0.02); | |
| } | |
| .scenario-panel-head { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 10px; | |
| } | |
| .scenario-panel-mother { | |
| display: grid; | |
| gap: 2px; | |
| min-width: 0; | |
| } | |
| .scenario-panel-mother-label { | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| font-weight: 700; | |
| color: var(--muted); | |
| } | |
| .scenario-panel-mother-name { | |
| font-size: 0.95rem; | |
| font-weight: 700; | |
| line-height: 1.35; | |
| overflow-wrap: anywhere; | |
| word-break: break-word; | |
| } | |
| .scenario-panel-hint { | |
| margin: 0 0 4px; | |
| line-height: 1.4; | |
| } | |
| .scenario-list { | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .scenario-list--page { | |
| gap: 10px; | |
| } | |
| .scenario-row { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1fr) auto; | |
| align-items: center; | |
| gap: 8px; | |
| min-width: 0; | |
| } | |
| .scenario-row-text { | |
| display: grid; | |
| gap: 2px; | |
| min-width: 0; | |
| } | |
| .scenario-name { | |
| font-size: 0.84rem; | |
| font-weight: 650; | |
| line-height: 1.4; | |
| overflow-wrap: anywhere; | |
| word-break: break-word; | |
| white-space: normal; | |
| } | |
| .scenario-match-chip .chip-name { | |
| white-space: normal; | |
| overflow-wrap: anywhere; | |
| } | |
| .scenario-row--page { | |
| padding: 12px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: rgba(255, 255, 255, 0.82); | |
| } | |
| .scenario-row--highlight { | |
| border-color: var(--accent); | |
| box-shadow: 0 0 0 2px rgba(179, 54, 54, 0.12); | |
| } | |
| .scenario-row-actions { | |
| display: flex; | |
| align-items: center; | |
| justify-content: flex-end; | |
| } | |
| .scenarios-parent-head, | |
| .scenarios-detail-head { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| } | |
| .scenarios-parent-search { | |
| max-width: 240px; | |
| } | |
| .scenarios-parent-list { | |
| display: grid; | |
| gap: 8px; | |
| /* Cap the list so a long catalog doesn't push the scenario detail off-screen. The user | |
| * can scroll *within* this list while the detail card stays visible just below. */ | |
| max-height: 38vh; | |
| overflow-y: auto; | |
| overscroll-behavior: contain; | |
| -webkit-overflow-scrolling: touch; | |
| padding-right: 4px; | |
| } | |
| .scenarios-parent-item { | |
| width: 100%; | |
| display: grid; | |
| gap: 3px; | |
| justify-items: start; | |
| text-align: left; | |
| border-radius: var(--radius-sm); | |
| border: 1px solid var(--line); | |
| background: rgba(255, 255, 255, 0.82); | |
| color: var(--ink); | |
| padding: 12px 14px; | |
| } | |
| .scenarios-parent-item.active { | |
| border-color: var(--accent); | |
| background: #fff; | |
| } | |
| .scenarios-parent-name { | |
| font-weight: 700; | |
| overflow-wrap: anywhere; | |
| word-break: break-word; | |
| } | |
| .scenarios-parent-meta { | |
| font-size: 0.78rem; | |
| color: var(--muted); | |
| } | |
| .scenarios-detail-label { | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| font-weight: 700; | |
| color: var(--muted); | |
| } | |
| .scenarios-detail-title { | |
| margin: 4px 0; | |
| line-height: 1.15; | |
| } | |
| @media (max-width: 560px) { | |
| .discover-scenario-hint { | |
| align-items: stretch; | |
| flex-direction: column; | |
| } | |
| .scenario-row { | |
| grid-template-columns: 1fr; | |
| } | |
| .scenario-row-actions { | |
| justify-content: flex-start; | |
| } | |
| } | |
| /* ββ Direction pills ββ */ | |
| .dir-pills { | |
| display: flex; | |
| gap: 6px; | |
| flex-wrap: wrap; | |
| } | |
| .dir-pill { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 5px; | |
| padding: 5px 10px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-pill); | |
| background: white; | |
| color: var(--ink); | |
| font-size: 0.8rem; | |
| font-weight: 500; | |
| line-height: 1.2; | |
| touch-action: manipulation; | |
| -webkit-tap-highlight-color: transparent; | |
| } | |
| .dir-pill.active { | |
| background: var(--accent-2); | |
| color: white; | |
| border-color: transparent; | |
| } | |
| .dir-pill:disabled { | |
| opacity: 0.55; | |
| cursor: not-allowed; | |
| } | |
| .discover-dir-strip { | |
| margin: 0.65rem 0 0.35rem; | |
| padding: 0 2px; | |
| } | |
| .discover-dir-strip__label { | |
| margin-bottom: 6px; | |
| text-align: center; | |
| line-height: 1.35; | |
| } | |
| .discover-dir-strip__pills { | |
| justify-content: center; | |
| } | |
| /* ββ Reaction bar (inline, compact) ββ */ | |
| .reaction-bar { | |
| display: flex; | |
| gap: 6px; | |
| flex-wrap: wrap; | |
| } | |
| .react-btn { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 5px 8px; | |
| border-radius: var(--radius-pill); | |
| border: 1px solid var(--line); | |
| background: white; | |
| font-size: 0.9rem; | |
| min-width: 32px; | |
| min-height: 32px; | |
| transition: transform 80ms ease, background 80ms ease; | |
| } | |
| .react-btn:active { transform: scale(0.92); } | |
| .react-btn.active { | |
| background: var(--accent-soft); | |
| border-color: transparent; | |
| } | |
| /* ββ Section headers ββ */ | |
| .section-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 8px; | |
| margin-bottom: 8px; | |
| } | |
| .section-title { | |
| margin: 0; | |
| font-size: 0.88rem; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| color: var(--muted); | |
| } | |
| .section-count { | |
| font-size: 0.76rem; | |
| color: var(--muted); | |
| font-weight: 600; | |
| } | |
| /* ββ My Plays: direction columns (drag handle between actor choices) ββ */ | |
| .plays-direction-board { | |
| margin-bottom: 20px; | |
| } | |
| .plays-board-hint { | |
| margin: 0 0 12px; | |
| line-height: 1.45; | |
| } | |
| .plays-board-columns { | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 10px; | |
| align-items: stretch; | |
| } | |
| /* Grid/flex children default to min-width:auto and ignore column width β force shrink. */ | |
| .plays-board-columns > .plays-board-column { | |
| min-width: 0; | |
| } | |
| @media (max-width: 780px) { | |
| .plays-board-columns { | |
| grid-template-columns: 1fr; | |
| } | |
| .plays-board-card { | |
| flex-wrap: wrap; | |
| align-items: flex-start; | |
| } | |
| .plays-board-card .plays-dnd-handle { | |
| margin-top: 4px; | |
| } | |
| .plays-board-card-body { | |
| flex: 1 1 calc(100% - 48px); | |
| min-width: 0; | |
| } | |
| .plays-touch-moves { | |
| display: flex; | |
| order: 3; | |
| } | |
| } | |
| .plays-board-column { | |
| display: flex; | |
| flex-direction: column; | |
| min-height: 140px; | |
| border: 2px dashed var(--line); | |
| border-radius: var(--radius); | |
| background: rgba(255, 255, 255, 0.55); | |
| padding: 8px; | |
| transition: border-color 120ms ease, background 120ms ease, box-shadow 120ms ease; | |
| } | |
| .plays-board-column--over { | |
| border-color: var(--accent); | |
| background: rgba(255, 236, 236, 0.45); | |
| box-shadow: 0 0 0 1px rgba(198, 40, 40, 0.15); | |
| } | |
| .plays-board-column-head { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| margin-bottom: 8px; | |
| font-size: 0.78rem; | |
| font-weight: 700; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| color: var(--muted); | |
| } | |
| .plays-board-column-icon { | |
| font-size: 1rem; | |
| } | |
| .plays-board-column-title { | |
| overflow-wrap: anywhere; | |
| } | |
| .plays-board-column-body { | |
| flex: 1; | |
| min-width: 0; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| } | |
| .plays-board-empty { | |
| flex: 1; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 16px 8px; | |
| text-align: center; | |
| color: var(--muted); | |
| opacity: 0.9; | |
| } | |
| .plays-board-card { | |
| display: flex; | |
| gap: 6px; | |
| align-items: flex-start; | |
| min-width: 0; | |
| max-width: 100%; | |
| width: 100%; | |
| box-sizing: border-box; | |
| } | |
| .plays-dnd-handle { | |
| flex-shrink: 0; | |
| cursor: grab; | |
| user-select: none; | |
| padding: 4px 6px; | |
| margin-top: 2px; | |
| border-radius: 6px; | |
| color: var(--muted); | |
| font-size: 1rem; | |
| line-height: 1; | |
| touch-action: none; | |
| } | |
| .plays-dnd-handle:hover { | |
| background: rgba(0, 0, 0, 0.04); | |
| color: var(--ink); | |
| } | |
| .plays-dnd-handle:active { | |
| cursor: grabbing; | |
| } | |
| .plays-touch-moves { | |
| display: none; | |
| flex: 1 1 100%; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| align-items: stretch; | |
| margin-top: 2px; | |
| } | |
| .plays-touch-move-btn { | |
| flex: 1 1 auto; | |
| min-width: 0; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 4px; | |
| padding: 8px 6px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: rgba(255, 255, 255, 0.92); | |
| font-size: 0.72rem; | |
| font-weight: 600; | |
| line-height: 1.15; | |
| text-align: center; | |
| color: var(--ink); | |
| cursor: pointer; | |
| touch-action: manipulation; | |
| -webkit-tap-highlight-color: transparent; | |
| } | |
| .plays-touch-move-btn:active { | |
| background: rgba(198, 40, 40, 0.08); | |
| } | |
| .plays-touch-move-icon { | |
| font-size: 0.95rem; | |
| line-height: 1; | |
| } | |
| .plays-board-card-body { | |
| flex: 1; | |
| min-width: 0; | |
| overflow-x: hidden; | |
| } | |
| .plays-board-card-body .play-chip { | |
| max-width: 100%; | |
| } | |
| .plays-board-card-body .inline-detail .reaction-bar, | |
| .plays-board-card-body .inline-detail .dir-pills { | |
| max-width: 100%; | |
| } | |
| .plays-board-card-body .inline-detail .chips { | |
| max-width: 100%; | |
| } | |
| /* Long similar-kink names: clamp lines + ellipsis (full text on hover via title attr). */ | |
| .inline-detail .chips .chip { | |
| max-width: 100%; | |
| min-width: 0; | |
| display: -webkit-box; | |
| -webkit-box-orient: vertical; | |
| -webkit-line-clamp: 2; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| line-height: 1.35; | |
| text-align: left; | |
| white-space: normal; | |
| word-break: break-word; | |
| } | |
| .plays-board-card-body .inline-detail button.ghost.sm { | |
| max-width: 100%; | |
| justify-self: start; | |
| } | |
| .plays-board-card-body .play-assets, | |
| .plays-board-card-body .play-assets-carousel { | |
| max-width: 100%; | |
| box-sizing: border-box; | |
| } | |
| /* ββ Collapsible section ββ */ | |
| .collapse-toggle { | |
| all: unset; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 0.84rem; | |
| font-weight: 600; | |
| color: var(--muted); | |
| padding: 6px 0; | |
| } | |
| .collapse-toggle .arrow { transition: transform 200ms ease; } | |
| .collapse-toggle.open .arrow { transform: rotate(90deg); } | |
| /* ββ Together view ββ */ | |
| .partner-code { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 12px 14px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: rgba(255, 255, 255, 0.72); | |
| } | |
| .partner-code code { | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| flex: 1; | |
| overflow-wrap: anywhere; | |
| } | |
| .sub-tabs { | |
| display: flex; | |
| gap: 0; | |
| border-bottom: 2px solid var(--line); | |
| margin-bottom: 12px; | |
| } | |
| .sub-tab { | |
| padding: 8px 16px; | |
| background: transparent; | |
| border: none; | |
| border-bottom: 2px solid transparent; | |
| border-radius: 0; | |
| color: var(--muted); | |
| font-weight: 600; | |
| font-size: 0.84rem; | |
| margin-bottom: -2px; | |
| transition: color 100ms, border-color 100ms; | |
| } | |
| .sub-tab:hover { transform: none; color: var(--ink); } | |
| .sub-tab.active { | |
| color: var(--accent); | |
| border-bottom-color: var(--accent); | |
| } | |
| .match-indicator { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 4px; | |
| padding: 3px 8px; | |
| border-radius: var(--radius-pill); | |
| font-size: 0.74rem; | |
| font-weight: 600; | |
| } | |
| .match-indicator.perfect { background: #e8f5e9; color: #2e7d32; } | |
| .match-indicator.partial { background: #fff3e0; color: #e65100; } | |
| .together-scenario-card { | |
| flex-direction: column; | |
| align-items: stretch; | |
| gap: 10px; | |
| } | |
| .together-scenario-copy { | |
| display: grid; | |
| gap: 4px; | |
| min-width: 0; | |
| } | |
| .together-mother-label, | |
| .together-scenario-label { | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| font-weight: 700; | |
| color: var(--muted); | |
| font-size: 0.68rem; | |
| } | |
| .together-mother-name { | |
| font-size: 0.95rem; | |
| font-weight: 700; | |
| line-height: 1.35; | |
| overflow-wrap: anywhere; | |
| word-break: break-word; | |
| } | |
| button.together-mother-link { | |
| all: unset; | |
| cursor: pointer; | |
| font-size: 0.95rem; | |
| font-weight: 700; | |
| line-height: 1.35; | |
| overflow-wrap: anywhere; | |
| word-break: break-word; | |
| color: var(--accent); | |
| text-decoration: underline; | |
| text-underline-offset: 2px; | |
| } | |
| button.together-mother-link:focus-visible { | |
| outline: 2px solid var(--accent); | |
| outline-offset: 2px; | |
| } | |
| .together-scenario-title { | |
| font-size: 0.88rem; | |
| font-weight: 650; | |
| line-height: 1.45; | |
| overflow-wrap: anywhere; | |
| word-break: break-word; | |
| white-space: normal; | |
| } | |
| .together-scenario-meta { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| min-width: 0; | |
| } | |
| .together-scenario-you { | |
| display: grid; | |
| gap: 4px; | |
| padding-top: 4px; | |
| border-top: 1px solid var(--line); | |
| } | |
| /* ββ Onboarding ββ */ | |
| .onboard { | |
| min-height: 100vh; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 24px; | |
| text-align: center; | |
| } | |
| .onboard .card { width: 100%; max-width: 440px; text-align: left; } | |
| .onboard h1 { | |
| font-size: 2.4rem; | |
| letter-spacing: -0.04em; | |
| line-height: 1; | |
| margin: 0 0 8px; | |
| } | |
| .onboard .sub { | |
| color: var(--muted); | |
| margin: 0 0 24px; | |
| font-size: 0.96rem; | |
| } | |
| .starter-page { | |
| padding-top: 24px; | |
| } | |
| .starter-hero { | |
| display: flex; | |
| align-items: flex-start; | |
| justify-content: space-between; | |
| gap: 16px; | |
| margin-bottom: 16px; | |
| } | |
| .starter-hero .sub { | |
| margin: 8px 0 0; | |
| max-width: 520px; | |
| } | |
| .creds { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| padding: 14px; | |
| background: rgba(255, 255, 255, 0.72); | |
| } | |
| .creds code { | |
| display: block; | |
| margin-top: 6px; | |
| padding: 8px 10px; | |
| border-radius: var(--radius-sm); | |
| background: #f5eee4; | |
| overflow-wrap: anywhere; | |
| font-weight: 600; | |
| } | |
| .settings-code { | |
| display: inline-block; | |
| margin-top: 6px; | |
| padding: 8px 10px; | |
| border-radius: var(--radius-sm); | |
| background: #f5eee4; | |
| overflow-wrap: anywhere; | |
| font-weight: 600; | |
| } | |
| .settings-toggle { | |
| margin: 0; | |
| max-width: none; | |
| } | |
| .settings-share-row { | |
| padding: 10px 12px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: rgba(255, 255, 255, 0.72); | |
| } | |
| .settings-share-title { | |
| font-size: 0.9rem; | |
| font-weight: 700; | |
| margin-bottom: 4px; | |
| } | |
| /* ββ Search overlay ββ */ | |
| .search-overlay { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 80; | |
| background: rgba(29, 24, 21, 0.42); | |
| backdrop-filter: blur(6px); | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| padding: 16px; | |
| } | |
| .search-overlay .search-inner { | |
| width: 100%; | |
| max-width: 560px; | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .search-overlay input { | |
| font-size: 1.1rem; | |
| padding: 14px 16px; | |
| } | |
| /* ββ My Plays: photo carousel (edge tap) ββ */ | |
| .play-assets { | |
| width: 100%; | |
| } | |
| .play-assets-carousel { | |
| position: relative; | |
| border-radius: var(--radius-sm); | |
| border: 1px solid var(--line); | |
| overflow: hidden; | |
| background: var(--surface); | |
| } | |
| .play-assets-carousel .play-assets-slide { | |
| min-height: 200px; | |
| max-height: min(48vh, 340px); | |
| } | |
| .play-assets-carousel .play-assets-slide img { | |
| width: 100%; | |
| height: 100%; | |
| min-height: 200px; | |
| max-height: min(48vh, 340px); | |
| object-fit: cover; | |
| display: block; | |
| } | |
| .play-edge { | |
| position: absolute; | |
| top: 0; | |
| bottom: 0; | |
| width: 28%; | |
| max-width: 120px; | |
| z-index: 2; | |
| cursor: pointer; | |
| border: none; | |
| padding: 0; | |
| background: transparent; | |
| -webkit-tap-highlight-color: transparent; | |
| } | |
| .play-edge--left { | |
| left: 0; | |
| background: linear-gradient(90deg, rgba(0, 0, 0, 0.08), transparent); | |
| } | |
| .play-edge--right { | |
| right: 0; | |
| background: linear-gradient(270deg, rgba(0, 0, 0, 0.08), transparent); | |
| } | |
| .play-assets-dots { | |
| position: absolute; | |
| bottom: 10px; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| display: flex; | |
| gap: 6px; | |
| z-index: 3; | |
| pointer-events: none; | |
| } | |
| .play-assets-dots span { | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background: rgba(255, 255, 255, 0.45); | |
| } | |
| .play-assets-dots span.on { | |
| background: #fff; | |
| } | |
| .play-assets-badge { | |
| position: absolute; | |
| top: 8px; | |
| right: 8px; | |
| z-index: 3; | |
| padding: 4px 10px; | |
| border-radius: var(--radius-pill); | |
| background: rgba(0, 0, 0, 0.48); | |
| color: #fff; | |
| font-size: 0.72rem; | |
| font-weight: 700; | |
| pointer-events: none; | |
| } | |
| /* ββ Image grid (legacy) ββ */ | |
| .image-grid { | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: 8px; | |
| } | |
| .image-tile { | |
| position: relative; | |
| aspect-ratio: 1; | |
| background: #c9b8a7; | |
| border-radius: var(--radius-sm); | |
| overflow: hidden; | |
| } | |
| .image-tile img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| } | |
| .image-tile .reveal-btn { | |
| position: absolute; | |
| inset: 0; | |
| border-radius: 0; | |
| background: linear-gradient(180deg, rgba(0,0,0,0.12), rgba(0,0,0,0.7)); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 0.82rem; | |
| } | |
| /* ββ Safety badges ββ */ | |
| .safety-badge { | |
| padding: 4px 8px; | |
| border-radius: 8px; | |
| font-size: 0.78rem; | |
| font-weight: 600; | |
| display: inline-block; | |
| } | |
| .safety-badge.extreme { background: #ffebee; color: #c62828; border: 1px solid #ef9a9a; } | |
| .safety-badge.advanced { background: #fff3e0; color: #e65100; border: 1px solid #ffcc80; } | |
| /* ββ Utility ββ */ | |
| .stack { display: grid; gap: 12px; } | |
| .stack-sm { display: grid; gap: 8px; } | |
| .row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; } | |
| .muted { color: var(--muted); } | |
| .tiny { font-size: 0.82rem; color: var(--muted); } | |
| .empty { | |
| color: var(--muted); | |
| border: 1px dashed rgba(219, 205, 189, 0.7); | |
| border-radius: 14px; | |
| padding: 10px 12px; | |
| background: rgba(255, 255, 255, 0.35); | |
| font-size: 0.88rem; | |
| } | |
| .chips { display: flex; gap: 6px; flex-wrap: wrap; } | |
| .chip { | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-pill); | |
| padding: 5px 10px; | |
| font-size: 0.82rem; | |
| background: white; | |
| color: var(--ink); | |
| cursor: pointer; | |
| font-weight: 500; | |
| } | |
| .chip.active { | |
| border-color: var(--accent); | |
| background: var(--accent-soft); | |
| color: var(--accent); | |
| font-weight: 600; | |
| } | |
| .status { min-height: 1.2em; color: var(--muted); font-size: 0.86rem; } | |
| /* ββ Password field with show/hide toggle ββ */ | |
| .password-field { | |
| position: relative; | |
| display: block; | |
| } | |
| .password-field input { | |
| width: 100%; | |
| padding-right: 44px; /* room for the eye button */ | |
| box-sizing: border-box; | |
| } | |
| .password-field__toggle { | |
| position: absolute; | |
| right: 4px; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| width: 36px; | |
| height: 36px; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| background: transparent; | |
| border: 0; | |
| cursor: pointer; | |
| font-size: 1.1rem; | |
| line-height: 1; | |
| border-radius: 50%; | |
| color: var(--ink); | |
| opacity: 0.78; | |
| } | |
| .password-field__toggle:hover { opacity: 1; } | |
| .password-field__toggle:focus-visible { | |
| outline: 2px solid var(--accent); | |
| outline-offset: 1px; | |
| opacity: 1; | |
| } | |
| .together-scope-hint { margin: 0 0 10px; color: var(--muted); } | |
| .together-section-label { | |
| margin: 8px 0 2px; | |
| font-weight: 700; | |
| color: var(--muted); | |
| text-transform: uppercase; | |
| letter-spacing: 0.04em; | |
| } | |
| .related-match-chip { | |
| align-items: flex-start; | |
| } | |
| .related-arrow { | |
| color: var(--muted); | |
| font-weight: 700; | |
| } | |
| .related-match-meta { | |
| flex: 1 1 240px; | |
| color: var(--muted); | |
| } | |
| .their-board-picker { margin-bottom: 12px; } | |
| .together-react-row { | |
| display: inline-flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| align-items: center; | |
| justify-content: flex-end; | |
| max-width: 100%; | |
| } | |
| .together-react-pair { | |
| display: inline-flex; | |
| gap: 3px; | |
| align-items: center; | |
| } | |
| .together-react-id { | |
| font-family: ui-monospace, monospace; | |
| font-size: 0.75em; | |
| opacity: 0.85; | |
| } | |
| /* ββ Responsive: tablet+ ββ */ | |
| @media (min-width: 768px) { | |
| .page { max-width: 720px; padding: 24px; } | |
| .action-btn { padding: 14px 28px; min-width: 80px; font-size: 0.82rem; } | |
| .action-btn .action-icon { font-size: 1.6rem; } | |
| .card-lg { padding: 36px 32px; } | |
| .card-title { font-size: 2.2rem; } | |
| } | |
| .desktop-nav { display: none; } | |
| /* ββ Responsive: desktop ββ */ | |
| @media (min-width: 1024px) { | |
| .page { max-width: 880px; } | |
| .tab-bar { display: none; } | |
| body { padding-bottom: 0; } | |
| .desktop-nav { | |
| display: flex; | |
| gap: 0; | |
| margin-bottom: 20px; | |
| border-bottom: 2px solid var(--line); | |
| } | |
| .desktop-nav .tab-btn { | |
| flex-direction: row; | |
| gap: 6px; | |
| padding: 10px 20px; | |
| font-size: 0.88rem; | |
| max-width: none; | |
| border-bottom: 2px solid transparent; | |
| margin-bottom: -2px; | |
| } | |
| .desktop-nav .tab-btn.active { border-bottom-color: var(--accent); color: var(--accent); } | |
| } | |
| /* Mobile / touch ergonomics β bump small interactive surfaces to >=44px so finger taps land. */ | |
| @media (pointer: coarse) { | |
| button.sm, | |
| .ghost.sm { | |
| min-height: 44px; | |
| padding: 10px 14px; | |
| } | |
| .dir-pill { | |
| min-height: 44px; | |
| } | |
| .react-btn { | |
| min-height: 44px; | |
| } | |
| .chip, | |
| button.chip { | |
| min-height: 36px; | |
| padding: 8px 12px; | |
| } | |
| .tab-btn { | |
| min-height: 56px; | |
| } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| *, *::before, *::after { | |
| transition-duration: 0.01ms ; | |
| animation-duration: 0.01ms ; | |
| scroll-behavior: auto ; | |
| } | |
| } | |