/* SPDX-License-Identifier: EUPL-1.2 */

/*
 * Generic fake-webpage bodies rendered inside mock tile bodies.
 * Deliberately abstract: page-TYPE layouts (video grid, docs, mail,
 * chat, article, map, code host, shop), never a real site's branding.
 * These are site illustration, not Hominis chrome — free styling, but
 * they read theme from the fidelity-kit tokens so light/dark holds.
 */

.fp {
  position: absolute;
  inset: 0;
  overflow: hidden;
  --fp-ink: color-mix(in srgb, var(--hominis-chrome-text) 72%, transparent);
  --fp-ink-2: color-mix(in srgb, var(--hominis-chrome-text) 38%, transparent);
  --fp-ink-3: color-mix(in srgb, var(--hominis-chrome-text) 14%, transparent);
  --fp-well: color-mix(in srgb, var(--hominis-chrome-text) 7%, transparent);
  font-size: 10px;
  color: var(--fp-ink-2);
  pointer-events: none;
  user-select: none;
}

/* text-line bars */
.fp i {
  display: block;
  height: 6px;
  border-radius: 3px;
  background: var(--fp-ink-3);
  margin: 6px 0;
}

.fp i.s { width: 42%; }
.fp i.m { width: 68%; }
.fp i.l { width: 88%; }
.fp i.t {
  height: 9px;
  background: var(--fp-ink-2);
  width: 55%;
}

.fp-pad {
  position: absolute;
  inset: 0;
  padding: 10px 12px;
}

/* masthead strip shared by several types */
.fp-mast {
  display: flex;
  align-items: center;
  gap: 6px;
  height: 22px;
  padding: 0 10px;
  border-bottom: 1px solid var(--fp-ink-3);
  background: var(--fp-well);
}

.fp-mast b {
  width: 44px;
  height: 7px;
  border-radius: 3px;
  background: var(--fp-ink-2);
}

.fp-mast u {
  width: 20px;
  height: 5px;
  border-radius: 2px;
  background: var(--fp-ink-3);
  text-decoration: none;
}

.fp-mast .fp-pillbox {
  margin-left: auto;
  width: 60px;
  height: 10px;
  border-radius: 5px;
  background: var(--fp-ink-3);
}

/* — video grid — */
.fp-video .fp-thumbs {
  position: absolute;
  inset: 26px 10px 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
  gap: 8px;
  align-content: start;
}

.fp-video .fp-thumbs > span {
  display: block;
}

.fp-video .fp-thumbs em {
  display: block;
  aspect-ratio: 16 / 9;
  border-radius: 4px;
  background:
    radial-gradient(circle at center, var(--fp-ink-2) 0 4px, transparent 5px),
    var(--fp-well);
}

.fp-video .fp-thumbs i {
  margin: 4px 0 0;
  width: 80%;
}

/* — docs / wiki — */
.fp-docs .fp-side {
  position: absolute;
  top: 22px;
  bottom: 0;
  left: 0;
  width: 30%;
  max-width: 120px;
  border-right: 1px solid var(--fp-ink-3);
  background: var(--fp-well);
  padding: 8px;
  box-sizing: border-box;
}

.fp-docs .fp-side i { width: 80%; }

.fp-docs .fp-main {
  position: absolute;
  top: 22px;
  bottom: 0;
  left: max(30%, 0px);
  right: 0;
  padding: 10px 14px;
}

@container (min-width: 0) { /* no-op guard for stray containers */ }

/* — mail — */
.fp-mail .fp-rows {
  position: absolute;
  inset: 26px 0 0;
}

.fp-mail .fp-rows > span {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 10px;
  border-bottom: 1px solid var(--fp-ink-3);
}

.fp-mail .fp-rows em {
  width: 14px;
  height: 14px;
  flex: none;
  border-radius: 50%;
  background: var(--fp-ink-3);
}

.fp-mail .fp-rows i {
  margin: 0;
  flex: none;
}

.fp-mail .fp-rows i:nth-child(2) { width: 22%; background: var(--fp-ink-2); }
.fp-mail .fp-rows i:nth-child(3) { flex: 1; }

/* — chat — */
.fp-chat .fp-bubbles {
  position: absolute;
  inset: 8px 10px 30px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 6px;
}

.fp-chat .fp-bubbles > span {
  height: 16px;
  border-radius: 9px;
  background: var(--fp-well);
  width: 55%;
}

.fp-chat .fp-bubbles > span.me {
  align-self: flex-end;
  width: 44%;
  background: color-mix(in srgb, var(--hominis-accent) 22%, transparent);
}

.fp-chat .fp-field {
  position: absolute;
  bottom: 8px;
  left: 10px;
  right: 10px;
  height: 16px;
  border-radius: 8px;
  border: 1px solid var(--fp-ink-3);
}

/* — article / news — */
.fp-article .fp-hero {
  height: 44px;
  margin: 8px 0;
  border-radius: 4px;
  background:
    linear-gradient(135deg, var(--fp-ink-3), transparent 70%),
    var(--fp-well);
}

.fp-article .fp-cols {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 10px;
}

/* — map — */
.fp-map {
  background:
    linear-gradient(var(--fp-ink-3) 1px, transparent 1px) 0 0 / 34px 34px,
    linear-gradient(90deg, var(--fp-ink-3) 1px, transparent 1px) 0 0 / 34px 34px,
    color-mix(in srgb, var(--hominis-chrome-surface-recessed) 70%, transparent);
}

.fp-map .fp-road {
  position: absolute;
  background: var(--fp-ink-3);
  border-radius: 3px;
}

.fp-map .fp-pin {
  position: absolute;
  width: 12px;
  height: 12px;
  border-radius: 50% 50% 50% 0;
  background: var(--hominis-accent);
  transform: rotate(-45deg);
}

.fp-map .fp-search {
  position: absolute;
  top: 8px;
  left: 8px;
  width: 45%;
  height: 16px;
  border-radius: 8px;
  background: var(--hominis-chrome-surface-raised);
  border: 1px solid var(--fp-ink-3);
}

/* — code host — */
.fp-code .fp-lines {
  position: absolute;
  inset: 26px 0 0;
  padding: 6px 0;
  font-size: 0;
}

.fp-code .fp-lines > span {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 2px 10px 2px 0;
}

.fp-code .fp-lines b {
  width: 22px;
  flex: none;
  height: 5px;
  border-radius: 2px;
  background: var(--fp-ink-3);
  margin-left: 8px;
}

.fp-code .fp-lines i {
  margin: 0;
  height: 5px;
}

.fp-code .fp-lines i.k { background: color-mix(in srgb, var(--hominis-ink-iris) 60%, transparent); }
.fp-code .fp-lines i.f { background: color-mix(in srgb, var(--hominis-ink-teal) 60%, transparent); }
.fp-code .fp-lines i.s2 { background: color-mix(in srgb, var(--hominis-ink-amber) 60%, transparent); }

/* — shop — */
.fp-shop .fp-cards {
  position: absolute;
  inset: 26px 10px 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(64px, 1fr));
  gap: 8px;
  align-content: start;
}

.fp-shop .fp-cards > span {
  border: 1px solid var(--fp-ink-3);
  border-radius: 4px;
  padding: 4px;
}

.fp-shop .fp-cards em {
  display: block;
  aspect-ratio: 1;
  border-radius: 3px;
  background: var(--fp-well);
}

.fp-shop .fp-cards i {
  margin: 4px 0 0;
  width: 70%;
}

.fp-shop .fp-cards i.price {
  width: 40%;
  background: color-mix(in srgb, var(--hominis-accent) 45%, transparent);
}

/* — social feed — */
.fp-social .fp-feed {
  position: absolute;
  inset: 26px 14% 0;
  border-inline: 1px solid var(--fp-ink-3);
  padding: 8px 10px;
}

.fp-social .fp-post {
  display: flex;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px solid var(--fp-ink-3);
}

.fp-social .fp-post em {
  width: 16px;
  height: 16px;
  flex: none;
  border-radius: 50%;
  background: var(--fp-ink-3);
}

.fp-social .fp-post div { flex: 1; }
