/* Reel Portal — page-specific layout on top of the blueprint design tokens.
   Only tokens from the design system are used (--line, --accent, --text-*, --t*, --bg-*) so this
   stays on-brand: hairline borders, 0 radius, mono accent, breathable spacing. */

/* ---- add bar -------------------------------------------------------- */
.rp-add { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; }
.rp-add .bp-field { flex: 1; min-width: 280px; margin: 0; }
.rp-add .bp-btn { white-space: nowrap; }

.rp-flash { margin-bottom: 18px; display: flex; gap: 10px; flex-wrap: wrap; }

/* ---- library grid --------------------------------------------------- */
.rp-grid {
  display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}
.rp-card { border: 1px solid var(--line); background: var(--bg-1); display: flex; flex-direction: column;
  transition: border-color .14s ease; }
.rp-card:hover { border-color: var(--accent); }

.rp-thumb { position: relative; display: block; aspect-ratio: 9 / 16; max-height: 360px; overflow: hidden;
  background: color-mix(in oklch, var(--bg) 60%, #000); border-bottom: 1px solid var(--line); }
.rp-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.rp-thumb-none { width: 100%; height: 100%; display: grid; place-items: center; color: var(--text-2); }
.rp-thumb .rp-play { position: absolute; inset: 0; margin: auto; width: 46px; height: 46px;
  display: grid; place-items: center; color: var(--text); background: color-mix(in oklch, var(--bg) 55%, transparent);
  border: 1px solid var(--accent-line); opacity: 0; transition: opacity .14s ease; }
.rp-thumb:hover .rp-play { opacity: 1; }
.rp-dur { position: absolute; right: 6px; bottom: 6px; font-size: var(--t4); letter-spacing: .04em;
  color: var(--text); background: color-mix(in oklch, var(--bg) 70%, transparent); padding: 1px 5px;
  border: 1px solid var(--line); }

.rp-card-body { padding: 11px 12px 12px; display: flex; flex-direction: column; gap: 7px; flex: 1; }
.rp-title { font-size: var(--t3); color: var(--text); line-height: 1.4; display: -webkit-box;
  -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.rp-meta { font-size: var(--t4); color: var(--text-2); letter-spacing: .03em; }
.rp-actions { display: flex; align-items: center; gap: 6px; margin-top: auto; padding-top: 6px; flex-wrap: wrap; }
.rp-actions .rp-del { margin-left: auto; display: inline; }
.rp-actions .rp-del .bp-btn { padding-left: 8px; padding-right: 8px; }

/* ---- public viewer -------------------------------------------------- */
.rp-viewer { max-width: 560px; }
.rp-player { width: 100%; max-height: 76vh; background: #000; border: 1px solid var(--line); display: block; }
.rp-v-meta { margin-top: 14px; }
.rp-v-title { font-size: var(--t2); color: var(--text); line-height: 1.4; }
.rp-v-sub { font-size: var(--t4); color: var(--text-2); letter-spacing: .03em; margin-top: 5px; }
.rp-v-actions { margin-top: 16px; display: flex; gap: 10px; flex-wrap: wrap; }

/* copy-button transient confirmation */
.bp-btn.is-copied { border-color: var(--accent); color: var(--accent); }

/* ---- Instagram account page + banner -------------------------------- */
.rp-banner { display: flex; align-items: center; gap: 12px; margin-bottom: 22px; padding: 12px 14px;
  border: 1px solid var(--warn); background: color-mix(in oklch, var(--warn) 9%, transparent);
  color: var(--text-1); font-size: var(--t3); text-decoration: none; transition: background .14s ease; }
.rp-banner:hover { background: color-mix(in oklch, var(--warn) 14%, transparent); }
.rp-banner b { color: var(--text); }
.rp-banner-ic { color: var(--warn); display: flex; }
.rp-banner-cta { margin-left: auto; white-space: nowrap; }

.rp-dot { display: inline-block; width: 6px; height: 6px; vertical-align: middle; }
.rp-dot.ok { background: var(--ok); }
.rp-dot.warn { background: var(--warn); }

.rp-acct-status { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 6px; }

.rp-textarea { width: 100%; background: var(--bg); color: var(--text); border: 1px solid var(--line);
  font-family: var(--mono); font-size: var(--t3); line-height: 1.5; padding: 10px 12px; resize: vertical;
  outline: none; }
.rp-textarea:focus { border-color: var(--accent); }
.rp-textarea::placeholder { color: var(--text-2); }

.rp-help { margin-top: 16px; font-size: var(--t4); color: var(--text-2); line-height: 1.6; }
.rp-help-h { color: var(--text-1); margin-bottom: 6px; letter-spacing: .03em; }
.rp-help ul { margin: 0 0 12px; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; }
.rp-help b { color: var(--accent); font-weight: 500; }
.rp-help code { background: var(--accent-soft); padding: 1px 5px; border: 1px solid var(--line-soft); color: var(--text-1); }
.rp-note { display: flex; align-items: flex-start; gap: 7px; padding: 10px 12px; border: 1px solid var(--line-soft);
  background: color-mix(in oklch, var(--bg-1) 50%, transparent); color: var(--text-2); }
.rp-note b { color: var(--text-1); font-weight: 500; }
.rp-note-warn { border-color: var(--warn); background: color-mix(in oklch, var(--warn) 8%, transparent); }
.rp-note-warn b { color: var(--text); }
