/* --- PexoBotRP product page (views/pexobotrp/index.ejs) -------------------------------------------------------
   Layout only: the look is Niveus (bed, deck, lit cards, tiles, steps, disclosures) and the Discord window.
   The project color reaches cards, tiles and beds through --nv-card-tint / --nv-tile-tint / --nv-bed-tint. */
.rp-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); align-items: center; gap: clamp(2rem, 5vw, 5rem); padding-block: clamp(3rem, 6vw, 6rem) var(--nv-space-8); }
.rp-hero__copy { align-items: flex-start; gap: var(--nv-space-5); min-inline-size: 0; }
.rp-hero__copy > * { animation: nv-arrive var(--nv-duration-slower) var(--nv-ease-entrance) both; }
.rp-hero__copy > :nth-child(n+3) { animation-delay: var(--nv-stagger); }
.rp-hero__copy > :nth-child(n+5) { animation-delay: calc(var(--nv-stagger) * 2); }
.rp-back { color: var(--nv-color-text-secondary); text-decoration: none; }
.rp-back::before { content: "← "; }
.rp-back:hover { color: var(--nv-color-text-primary); }
.rp-page { position: relative; isolation: isolate; }
/* The project's colours behind the hero. The glow starts above the page, behind the floating nav, so no edge shows
   between the bar's row and the hero. */
.rp-page::before { content: ""; position: absolute; inset: -6rem 0 auto; block-size: 52rem; z-index: -1; pointer-events: none;
  background: radial-gradient(38rem 26rem at 78% 18rem, color-mix(in srgb, var(--nv-card-tint) 22%, transparent), transparent 70%),
              radial-gradient(34rem 22rem at 8% 10rem, color-mix(in srgb, var(--brand-2) 16%, transparent), transparent 70%); }
.rp-title .nv-text-lit { background-image: linear-gradient(120deg, var(--nv-color-accent), var(--nv-card-tint) 70%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.rp-title { margin: 0; font-size: clamp(3rem, 6.5vw, 5.5rem); letter-spacing: -0.05em; line-height: 1; }
.rp-tagline { margin: 0; max-inline-size: 22ch; font: var(--nv-font-heading); font-size: clamp(1.4rem, 2.4vw, 2rem); text-wrap: balance; }
.rp-facts { align-self: stretch; grid-template-columns: repeat(4, minmax(0, 1fr)); }

.rp-stage { position: relative; padding: clamp(var(--nv-space-6), 4vw, var(--nv-space-12)); animation: nv-arrive var(--nv-duration-slower) var(--nv-ease-entrance) calc(var(--nv-stagger) * 3) both; }
.rp-window { overflow: hidden; }
.rp-window .discord { border-radius: inherit; }
.rp-window .dc-scroll { padding-block: var(--nv-space-4); }
.rp-window .dc-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rp-portrait { display: grid; place-items: center; font: var(--nv-font-title); color: var(--nv-color-on-accent); background-image: linear-gradient(145deg, var(--nv-color-accent), var(--nv-card-tint)); }
.rp-note { position: absolute; inset-block-start: var(--nv-space-3); inset-inline-end: var(--nv-space-3); z-index: 2; --nv-tile-tint: var(--nv-color-success); animation: nv-arrive var(--nv-duration-slower) var(--nv-ease-entrance) calc(var(--nv-stagger) * 6) both; }

.rp-features { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--nv-space-4); }
.rp-feature h3, .rp-feature p { margin: 0; }
.rp-feature .nv-tile { --nv-tile-tint: var(--nv-card-tint); }
.rp-feature--main { grid-row: span 2; grid-column: span 2; }
.rp-feature--main .hero-perks { margin-block-start: auto; display: grid; gap: var(--nv-space-2); }
.rp-feature--main .nv-title { font: var(--nv-font-heading); }
.rp-feature .nv-card__body { block-size: 100%; }
.rp-how .nv-steps { margin: 0; }
.rp-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: start; }
.rp-plus h2, .rp-plus p { margin: 0; }

@media (max-width: 64rem) {
  .rp-hero, .rp-split { grid-template-columns: minmax(0, 1fr); }
  .rp-features { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rp-feature--main { grid-row: auto; grid-column: 1 / -1; }
}
@media (max-width: 40rem) {
  .rp-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rp-features { grid-template-columns: minmax(0, 1fr); }
  .rp-note { position: static; margin-block-start: var(--nv-space-4); }
  .rp-stage { padding: var(--nv-space-3); }
  .rp-window .dc-embed__thumb { display: none; }
  .rp-window .dc-msg { padding-inline: var(--nv-space-2); }
  .rp-actions > a { flex: 1 1 100%; justify-content: center; }
}

/* --- Server settings and character IDs (views/pexobotrp/panel/identity.ejs) ---------------------------------
   Layout only. Cards, setting rows, switches, the Discord window and the save bar come from Niveus and app.css,
   so the module looks like every PexoBot module. Colors are Niveus roles. */
.rpi-skel { block-size: 18rem; border-radius: var(--nv-radius-lg); }
.rpi-mono { font-family: var(--nv-font-family-mono); }
.setting--wide { grid-template-columns: minmax(0, 1fr); }
[data-rpi-rules] .setting { grid-template-columns: minmax(0, 1fr) auto; cursor: pointer; }
.setting__control > .rpi-prefix { inline-size: 9rem; text-transform: uppercase; }
.rpi-range__dash { align-self: center; color: var(--nv-color-text-tertiary); }
.rpi-num { inline-size: 10rem; }
.rpi-num .nv-input { font-variant-numeric: tabular-nums; }
.rpi-range { display: flex; gap: var(--nv-space-2); }
.rpi-range .rpi-num { inline-size: 7.5rem; }
.setting__control .rpi-num + .rpi-num { margin: 0; }
/* Rows follow the card, not the window: two cards side by side leave too little room for label + control,
   so a narrow card puts the label above its control (the switches in Rules stay on one line). */
.settings { container-type: inline-size; }
@container (max-width: 34rem) {
  .setting:not(.setting--wide) { grid-template-columns: minmax(0, 1fr); }
  [data-rpi-rules] .setting { grid-template-columns: minmax(0, 1fr) auto; }
  .setting__control { justify-content: flex-start; }
  .setting__control > .nv-select-menu, .setting__control > .rpi-roles { inline-size: 100%; justify-content: flex-start; }
}
/* The unit sits where browsers draw the number spinner; arrows and wheel still work through the keyboard. */
.rpi-num .nv-input { appearance: textfield; -moz-appearance: textfield; }
.rpi-num .nv-input::-webkit-inner-spin-button, .rpi-num .nv-input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }

/* Role chips: picked roles, then a compact select that adds one more. */
.rpi-roles { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--nv-space-1-5); }
.rpi-roles__add { inline-size: auto; max-inline-size: 11rem; }
.rpi-chip { gap: var(--nv-space-1); padding-inline-end: var(--nv-space-1); }
.rpi-chip__x { display: grid; place-items: center; inline-size: 1.125rem; block-size: 1.125rem; padding: 0; border: 0; border-radius: var(--nv-radius-full); background: transparent; color: inherit; cursor: pointer; transition: var(--nv-transition-control); }
.rpi-chip__x:hover { background-color: var(--nv-color-danger-subtle); color: var(--nv-color-danger-text); }
.rpi-limit__row { display: grid; grid-template-columns: minmax(0, 1fr) 9rem 9.5rem auto; gap: var(--nv-space-2); align-items: center; padding: var(--nv-space-2); }
.rpi-limit .rpi-num { inline-size: 100%; }

.rpi-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.rpi-stats dd { margin: 0; }
.mod-tabs .nv-nav__item { gap: var(--nv-space-2); }

/* Message designer: template switch, editor, buttons; the Discord window sits in .pv-col. */
.rpi-tpl-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--nv-space-3); }
.rpi-color { display: inline-flex; align-items: center; gap: var(--nv-space-2); }
.rpi-btnrow { display: grid; grid-template-columns: 9rem 3.5rem minmax(0, 1fr) 8rem auto; gap: var(--nv-space-2); align-items: center; }
.rpi-btnrow + .rpi-btnrow { padding-block-start: var(--nv-space-2); border-block-start: var(--nv-border-width) solid var(--nv-color-border-subtle); }
.rpi-emoji { text-align: center; }
.rpi-swatch { inline-size: var(--nv-space-3); block-size: var(--nv-space-3); border-radius: var(--nv-radius-full); background-color: var(--nv-color-text-tertiary); box-shadow: var(--nv-glow-sm); }
.rpi-swatch[data-style="1"] { background-color: var(--nv-color-accent); }
.rpi-swatch[data-style="3"] { background-color: var(--nv-color-success); }
.rpi-swatch[data-style="4"] { background-color: var(--nv-color-danger); }
[data-rpi-page="messages"] .nv-disclosure.nv-card { padding: 0; }
[data-rpi-page="messages"] .nv-disclosure__summary { padding: var(--nv-space-4) var(--nv-space-5); }
[data-rpi-page="messages"] .nv-disclosure__body { padding: 0 var(--nv-space-5) var(--nv-space-5); }

.rpi-field .nv-card__header { gap: var(--nv-space-3); }
.rpi-publish__row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--nv-space-4); }
.rpi-publish__go { flex-wrap: nowrap; }
.rpi-publish__go .nv-select { inline-size: 14rem; }

.rpi-reg-head { display: grid; grid-template-columns: minmax(0, 26rem) minmax(0, 14rem) 1fr auto; align-items: center; gap: var(--nv-space-3); }
[data-rpi-prev] svg { rotate: 180deg; }
.rpi-empty { display: flex; flex-direction: column; align-items: center; gap: var(--nv-space-2); padding: var(--nv-space-10) var(--nv-space-4); text-align: center; }
.rpi-delivery { margin: 0; padding: 0; }

/* Document dialog */
.rpi-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); gap: var(--nv-space-3) var(--nv-space-5); margin: 0; }
.rpi-facts > div { display: flex; flex-direction: column; gap: var(--nv-space-0-5); }
.rpi-facts dd { margin: 0; overflow-wrap: anywhere; white-space: pre-wrap; }
.rpi-history { --_marker: 1.75rem; --_gap: var(--nv-space-3); }
.rpi-span { grid-column: 1 / -1; }
.rpi-dialog .nv-dialog__header > .row { flex: 1; align-items: center; }

@media (max-width: 48rem) {
  .rpi-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rpi-limit__row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; }
  .rpi-limit__row > .nv-select { grid-column: 1 / -1; }
  .rpi-btnrow { grid-template-columns: 3.5rem minmax(0, 1fr) auto; }
  .rpi-btnrow__what { grid-column: 1 / -1; }
  .rpi-btnrow > .nv-select { grid-column: 1 / 3; }
  .rpi-roles { justify-content: flex-start; }
  .rpi-reg-head { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .rpi-reg-head > .rpi-search { grid-column: 1 / -1; }
  .rpi-reg-head > .grow { display: none; }
  .rpi-publish__go { inline-size: 100%; flex-wrap: wrap; }
  .rpi-publish__go .nv-select { inline-size: 100%; }
}

/* Document design tab (#identity → Wzór dokumentu): theme swatches and the live SVG card. */
.rpi-themes { display: flex; flex-wrap: wrap; gap: var(--nv-space-2); }
.rpi-theme { display: grid; justify-items: center; gap: var(--nv-space-1); cursor: pointer; }
.rpi-theme input { position: absolute; opacity: 0; pointer-events: none; }
.rpi-theme__swatch { inline-size: 3.25rem; block-size: 2.25rem; border-radius: var(--nv-radius-md); border: var(--nv-border-width) solid var(--nv-color-border);
  background: linear-gradient(135deg, var(--a) 0 45%, var(--b) 45% 70%, var(--c) 70%); box-shadow: var(--nv-elevation-1); transition: transform 120ms ease, box-shadow 120ms ease; }
.rpi-theme input:checked + .rpi-theme__swatch { box-shadow: 0 0 0 2px var(--nv-color-background), 0 0 0 4px var(--nv-color-accent); transform: translateY(-1px); }
.rpi-theme input:focus-visible + .rpi-theme__swatch { outline: 2px solid var(--nv-color-accent); outline-offset: 3px; }
.rpi-doc__preview { display: grid; place-items: center; padding: var(--nv-space-3); border-radius: var(--nv-radius-lg); background-color: var(--nv-color-surface-inset); }
.rpi-doc__preview svg { inline-size: 100%; block-size: auto; filter: drop-shadow(0 10px 24px rgb(0 0 0 / 0.35)); }
.rpi-doc__pick { inline-size: auto; min-inline-size: 13rem; }
.rpi-style [aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; }

/* Date field: text in the panel's order plus a calendar popover (identity.js datePicker). */
.rpi-date { position: relative; display: block; }
.rpi-date > .nv-input { padding-inline-end: 2.75rem; }
.rpi-date__btn { position: absolute; inset-block-start: 50%; inset-inline-end: var(--nv-space-1); transform: translateY(-50%); }
.rpi-cal { inline-size: 17rem; padding: var(--nv-space-2); }
.rpi-cal__head { display: flex; align-items: center; gap: var(--nv-space-1); margin-block-end: var(--nv-space-2); }
.rpi-cal__title { flex: 1; text-transform: capitalize; text-align: center; }
.rpi-cal__year { inline-size: 5rem; appearance: textfield; -moz-appearance: textfield; }
.rpi-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; text-align: center; }
.rpi-cal__day { block-size: 2rem; border: 0; border-radius: var(--nv-radius-sm); background: transparent; color: var(--nv-color-text-primary); font: inherit; cursor: pointer; transition: var(--nv-transition-control); }
.rpi-cal__day:hover { background: var(--nv-color-surface-hover); }
.rpi-cal__day:focus-visible { outline: var(--nv-focus-ring); }
.rpi-cal__day.is-on { background: var(--nv-color-accent); color: var(--nv-color-on-accent); }

/* Diagnostics permission list (core.js diagnostics). */
.rpd-perms { margin: 0; padding: 0; list-style: none; }
