/* CardChan — "Sticker Bomb" design system.
   Tokens transcribed from planning/design/README.md. Theme switches via
   the data-theme="dark" attribute on <html>; light values are the fallbacks
   so the page paints with no flash. Accents/badges are identical in both
   modes — only surfaces, text, outlines-shadow, and background change. */

:root {
  --ink: #14121f;
  --pink: #ff3d90;
  --pink-light: #ff7ab8;
  --cyan: #45d7f2;
  --lime: #c6ff5e;
  --yellow: #ffe14d;

  /* Themed (light defaults) */
  --bg: linear-gradient(180deg, #f1fbff, #f7f0ff 55%, #fff0f8);
  --dot: rgba(140, 90, 220, 0.10);
  --surface: #ffffff;
  --surface-2: #fbf7ff;
  --text-strong: #2c2140;
  --text-body: #5a4a78;
  --text-muted: #7a6aa0;
  --violet: #8a4fd6;
  --nav: #4a3a66;
  --shadow: rgba(20, 18, 31, 0.88);
  --head-edge: #ffffff;

  --r-pill: 999px;
  --r-card: 18px;
  --r-panel: 24px;
}

html[data-theme="dark"] {
  --bg: linear-gradient(180deg, #191427, #1e1530 55%, #261426);
  --dot: rgba(200, 150, 255, 0.07);
  --surface: #241d38;
  --surface-2: #2c2442;
  --text-strong: #f3ecff;
  --text-body: #c9bce6;
  --text-muted: #9c8fc2;
  --violet: #c9a4ff;
  --nav: #d9cef2;
  --shadow: rgba(5, 3, 12, 0.95);
  --head-edge: rgba(0, 0, 0, 0.4);
}

html[data-view="desktop"] body {
  min-width: 1120px;
}

html:not([data-view="desktop"]) .cc-view-desktop-label,
html[data-view="desktop"] .cc-view-auto-label {
  display: none;
}

/* #744: on large monitors the site is desktop-width regardless, so the
   Desktop view toggle is a confusing no-op — hide it. It stays available
   on phones/tablets where forcing desktop layout is actually useful. */
@media (min-width: 1120px) {
  /* Compound selector (.cc-menu__item.cc-view-toggle) so this out-specifies the
     later `.cc-menu__item { display: block }` rule regardless of source order. */
  .cc-menu__item.cc-view-toggle {
    display: none;
  }
}

* { box-sizing: border-box; }

/* Bare <a> tags inherit their parent color in light mode; in dark mode the
   parent colors are dim enough that links become hard to read, so we give
   them a clearly visible tint. Components that want a specific color
   (nav, chips, buttons, auth forms) override this with their own rule. */
a { color: inherit; }
:where(html[data-theme="dark"]) a { color: var(--violet); }
html[data-theme="dark"] .cc-footer a { color: #e0d0ff; }

body {
  margin: 0;
  font-family: "M PLUS Rounded 1c", system-ui, sans-serif;
  font-weight: 600;
  font-size: 16px;
  line-height: 1.55;
  color: var(--text-body);
  background-image: radial-gradient(var(--dot) 1.4px, transparent 1.8px), var(--bg);
  background-size: 24px 24px, auto;
  background-attachment: fixed;
  min-height: 100vh;
}

.cc-container {
  max-width: 1340px;
  margin: 0 auto;
  padding: 0 30px;
}

/* --- Typography --- */
.cc-logo,
h1, h2, h3,
.cc-display {
  font-family: "Mochiy Pop One", system-ui, sans-serif;
  font-weight: 400;
  color: var(--text-strong);
}

.cc-mono { font-family: "Space Mono", monospace; }
.cc-annotation { font-family: "Space Mono", monospace; color: var(--violet); font-size: 13px; }

.cc-logo {
  font-size: 28px;
  color: #fff;
  -webkit-text-stroke: 2px var(--ink);
  paint-order: stroke fill;
  text-shadow: 5px 6px 0 #ff5fa2;
  text-decoration: none;
}

.cc-hero-h1 {
  font-size: 54px;
  line-height: 1.04;
  margin: 0.2em 0;
  text-shadow: 2px 2px 0 var(--head-edge);
}
.cc-hero-h1 .accent {
  color: var(--pink);
  text-shadow: 2px 2px 0 var(--head-edge), 5px 5px 0 rgba(255, 61, 144, 0.2);
}

/* --- Nav --- */
.cc-nav {
  display: flex;
  align-items: center;
  gap: 22px;
  padding: 22px 0 14px;
}
.cc-nav__drawer {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 22px;
  min-width: 0;
}
.cc-nav__links,
.cc-nav__actions {
  display: flex;
  align-items: center;
  gap: 22px;
}
.cc-nav__links { min-width: 0; }
.cc-nav__actions { margin-left: auto; }
.cc-nav__toggle {
  display: none;
  width: 42px;
  height: 42px;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  background: var(--surface);
  box-shadow: 3px 3px 0 var(--ink);
  color: var(--ink);
  cursor: pointer;
  font-family: "Mochiy Pop One", sans-serif;
  font-size: 20px;
  line-height: 1;
}
.cc-nav a.cc-navlink {
  font-weight: 800;
  font-size: 14px;
  color: var(--nav);
  text-decoration: none;
}
.cc-nav a.cc-navlink:hover { color: var(--pink); }

@media (max-width: 1100px) {
  .cc-nav {
    flex-wrap: wrap;
    gap: 12px;
    padding-top: 14px;
  }
  .cc-nav .cc-logo { flex: 1; }
  .cc-nav__toggle { display: inline-flex; }
  .cc-nav__drawer {
    flex-basis: 100%;
    display: none;
    align-items: stretch;
    flex-direction: column;
    gap: 10px;
    padding: 10px;
    border: 2px solid var(--ink);
    border-radius: var(--r-card);
    background: var(--surface);
    box-shadow: 4px 4px 0 var(--ink);
  }
  .cc-nav.is-open .cc-nav__drawer { display: flex; }
  .cc-nav__links,
  .cc-nav__actions {
    align-items: stretch;
    flex-direction: column;
    gap: 6px;
  }
  .cc-nav__actions { margin-left: 0; }
  .cc-nav a.cc-navlink,
  .cc-nav .cc-menu > summary,
  .cc-nav .cc-btn,
  .cc-nav .cc-theme-toggle {
    width: 100%;
    min-height: 42px;
    justify-content: flex-start;
  }
  .cc-nav a.cc-navlink {
    display: flex;
    align-items: center;
    padding: 9px 11px;
    border-radius: 8px;
  }
  .cc-nav a.cc-navlink:hover { background: var(--surface-2); }
  .cc-nav .cc-menu { width: 100%; }
  .cc-nav .cc-menu__panel {
    position: static;
    width: 100%;
    min-width: 0;
    margin-top: 6px;
    box-shadow: none;
  }
}

/* --- Buttons & chips --- */
.cc-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: "Mochiy Pop One", sans-serif;
  font-size: 14px;
  color: var(--ink);
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  padding: 9px 16px;
  background: var(--surface);
  box-shadow: 3px 3px 0 var(--ink);
  cursor: pointer;
  text-decoration: none;
  transition: transform 0.06s ease, box-shadow 0.06s ease;
}
.cc-btn:hover { transform: translateY(-2px); }
.cc-btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--ink); }
.cc-btn--pink { background: linear-gradient(135deg, var(--pink-light), var(--pink)); color: #fff; }
.cc-btn--cyan { background: var(--cyan); color: var(--ink); }
.cc-btn--yellow { background: var(--yellow); color: var(--ink); }
.cc-btn--lime { background: var(--lime); color: var(--ink); }
.cc-btn--danger {
  background: var(--ink);
  color: var(--pink-light);
  border-color: var(--ink);
  box-shadow: 2px 2px 0 rgba(255, 61, 144, .55);
}
.cc-btn--danger:hover { color: var(--pink); }
.cc-btn--danger:active { box-shadow: 1px 1px 0 rgba(255, 61, 144, .35); }

.cc-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-weight: 700;
  font-size: 13px;
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  padding: 5px 12px;
  background: var(--surface);
  color: var(--text-body);
  box-shadow: 2px 2px 0 var(--ink);
  text-decoration: none;
}

/* Selectable filter chips (label + hidden radio/checkbox), e.g. /collections craft tier (#352) */
.cc-chip--select {
  text-align: center;
  cursor: pointer;
  font-size: 12px;
  transition: transform 0.06s ease, box-shadow 0.06s ease;
}
.cc-chip--select:hover { transform: translateY(-2px); }
.cc-chip--select:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--ink); }
.cc-chip--select:has(input:checked) { background: var(--lime); color: var(--ink); }

/* Active-state modifier for anchor-based tier filters (no input to key off), e.g. /creators craft tier (#352) */
.cc-chip--on { background: var(--lime); color: var(--ink); }

.cc-toggle-row {
  position: relative;
  display: flex;
  align-items: center;
  gap: 10px;
  width: fit-content;
  margin: 7px 0;
  font-family: "Space Mono", monospace;
  font-size: 13px;
  cursor: pointer;
}
.cc-toggle__input,
.cc-segment__input,
.cc-preference-chip input,
.cc-dropzone input[type="file"] {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}
.cc-toggle {
  position: relative;
  width: 48px;
  height: 26px;
  flex: 0 0 48px;
  border: 2px solid var(--ink);
  border-radius: 999px;
  background: var(--surface-2);
  box-shadow: 2px 2px 0 var(--ink);
  transition: background .12s ease;
}
.cc-toggle::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 16px;
  height: 16px;
  border: 2px solid var(--ink);
  border-radius: 50%;
  background: var(--surface);
  transition: transform .12s ease;
}
.cc-toggle__input:checked + .cc-toggle { background: var(--lime); }
.cc-toggle__input:checked + .cc-toggle::after { transform: translateX(21px); }
.cc-toggle__input:focus-visible + .cc-toggle,
.cc-segment__input:focus-visible + span,
.cc-preference-chip:has(input:focus-visible) { outline: 3px solid var(--cyan); outline-offset: 2px; }

.cc-segment {
  display: inline-flex;
  overflow: hidden;
  border: 2px solid var(--ink);
  border-radius: 14px;
  box-shadow: 3px 3px 0 var(--ink);
  background: var(--surface);
}
.cc-segment__option { position: relative; cursor: pointer; }
.cc-segment__option + .cc-segment__option { border-left: 2px solid var(--ink); }
.cc-segment__option span {
  display: block;
  padding: 6px 11px;
  font-family: "Space Mono", monospace;
  font-size: 12px;
  font-weight: 700;
}
.cc-segment__input:checked + span { background: var(--lime); color: var(--ink); }
.cc-field {
  padding: 7px 10px;
  border: 2px solid var(--ink);
  border-radius: 14px;
  background: var(--surface);
  color: var(--text-body);
  box-shadow: 2px 2px 0 var(--ink);
  font: inherit;
}
.cc-preference-chip { position: relative; }
.cc-preference-chip:has(input:checked) { background: var(--lime); color: var(--ink); }
.cc-preference-chip-wrap { display: inline-flex; }
.cc-preference-chip[data-state="like"] { background: var(--lime); color: var(--ink); }
.cc-preference-chip[data-state="avoid"] {
  background: var(--pink);
  color: var(--ink);
  text-decoration: line-through;
}
.cc-preference-chip:focus-visible { outline: 3px solid var(--cyan); outline-offset: 2px; }
.cc-preference-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0 0 14px; }
.cc-settings-link-row { display: flex; gap: 6px; }
.cc-settings-link-row > input { min-width: 0; }
.cc-settings-digest-grid {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px 14px;
  align-items: center;
  max-width: 520px;
}
.cc-browse-sort { display: flex; flex-wrap: wrap; gap: 5px; margin: 5px 0 12px; }
.cc-browse-sort .cc-chip { position: relative; flex: 1 1 92px; padding: 4px 7px; }
.cc-browse-sort input { position: absolute; width: 1px; height: 1px; clip-path: inset(50%); }
.cc-active-filters { display: flex; gap: 7px; flex-wrap: wrap; margin: -4px 0 16px; }
.cc-active-filters .cc-chip:nth-child(3n+1) { background: var(--pink-light); color: var(--ink); }
.cc-active-filters .cc-chip:nth-child(3n+2) { background: var(--cyan); color: var(--ink); }
.cc-active-filters .cc-chip:nth-child(3n) { background: var(--yellow); color: var(--ink); }
@media (max-width: 620px) {
  .cc-settings-digest-grid { grid-template-columns: 1fr; gap: 5px; }
  .cc-settings-digest-grid .cc-segment { margin-bottom: 10px; }
}

.cc-dropzone {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  min-height: 132px;
  padding: 20px;
  border: 2px dashed var(--ink);
  border-radius: var(--r-card);
  background: var(--surface-2);
  color: var(--text-body);
  cursor: pointer;
  text-align: center;
  transition: background .12s ease, transform .12s ease, box-shadow .12s ease;
}
.cc-dropzone:hover,
.cc-dropzone:focus-visible,
.cc-dropzone.is-dragover {
  outline: none;
  background: color-mix(in srgb, var(--cyan) 22%, var(--surface-2));
  box-shadow: 3px 3px 0 var(--ink);
  transform: translate(-1px, -1px);
}
.cc-dropzone__glyph { flex-basis: 100%; font-size: 32px; line-height: 1; }
.cc-dropzone__hint { font-family: "Space Mono", monospace; font-size: 13px; }
.cc-dropzone__browse { pointer-events: none; padding: 5px 12px; font-size: 13px; }
.cc-dropzone__file { flex-basis: 100%; overflow-wrap: anywhere; }

/* Sitting 2 shared controls: one-pick selects and secondary disclosures. */
.cc-select {
  appearance: none;
  min-height: 38px;
  max-width: 100%;
  padding: 8px 34px 8px 14px;
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  background-color: var(--surface);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M3 5.25 7 9l4-3.75' fill='none' stroke='%2314121f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  color: var(--text-strong);
  font-family: "M PLUS Rounded 1c", system-ui, sans-serif;
  font-size: 13px;
  font-weight: 700;
  box-shadow: 2px 2px 0 var(--ink);
}
html[data-theme="dark"] .cc-select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M3 5.25 7 9l4-3.75' fill='none' stroke='%23f3ecff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  border-color: rgba(255, 255, 255, .3);
  box-shadow: 2px 2px 0 rgba(0, 0, 0, .55);
}
.cc-select:focus-visible { outline: 2.5px solid var(--cyan); outline-offset: 2px; }

.cc-disclosure { padding: 10px 0; }
.cc-disclosure + .cc-disclosure { border-top: 1.5px dashed color-mix(in srgb, var(--ink) 14%, transparent); }
.cc-disclosure > summary {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--text-strong);
  font-family: "M PLUS Rounded 1c", system-ui, sans-serif;
  font-size: 14px;
  font-weight: 800;
  cursor: pointer;
  list-style: none;
}
.cc-disclosure > summary::-webkit-details-marker { display: none; }
.cc-disclosure > summary::before {
  content: "⌄";
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  border: 2px solid var(--ink);
  border-radius: 50%;
  background: var(--surface-2);
  color: var(--text-strong);
  line-height: 1;
  transform: rotate(-90deg);
  transition: transform .15s ease;
}
.cc-disclosure[open] > summary::before { transform: rotate(0); }
.cc-disclosure[open] > summary { margin-bottom: 10px; }
.cc-disclosure__body { border-top: 1.5px dashed color-mix(in srgb, var(--ink) 14%, transparent); padding-top: 10px; }

.cc-empty {
  padding: 34px;
  border: 2px dashed color-mix(in srgb, var(--ink) 35%, transparent);
  border-radius: var(--r-card);
  background: color-mix(in srgb, var(--surface) 60%, transparent);
  text-align: center;
}
html[data-theme="dark"] .cc-empty { border-color: rgba(255, 255, 255, .28); }
.cc-empty__glyph { display: block; margin-bottom: 6px; font-size: 22px; }
.cc-empty__title { margin: 0; font-family: "Mochiy Pop One", system-ui, sans-serif; font-size: 16px; color: var(--text-strong); }
.cc-empty__note { margin: 5px 0 0; font-family: "Space Mono", monospace; font-size: 11.5px; color: var(--text-muted); }
.cc-empty--compact { margin-top: 14px; padding: 18px; }
.cc-news-heading { display: grid; gap: 4px; margin-top: 0; font-size: 18px; }
.cc-news-date { color: var(--violet); font-family: "Space Mono", monospace; font-size: 11px; font-weight: 700; letter-spacing: .1em; }
.cc-news-panel ul { margin: 8px 0; padding: 0; list-style: none; }
.cc-news-panel li { position: relative; padding-left: 22px; line-height: 1.8; }
.cc-news-panel li + li { margin-top: 7px; }
.cc-news-panel li::before { content: "✦"; position: absolute; left: 0; color: var(--violet); font-weight: 900; }
.cc-news-more { margin-top: 14px; }
.cc-news-more ul { margin-top: 0; }
.cc-site-tools-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; align-items: start; }
.cc-site-tools-grid > * { min-width: 0; }
.cc-site-tools-grid table { display: block; max-width: 100%; overflow-x: auto; }
.cc-site-tools-grid__wide { grid-column: 1 / -1; }
@media (max-width: 760px) {
  .cc-site-tools-grid { grid-template-columns: 1fr; }
  .cc-site-tools-grid__wide { grid-column: auto; }
}
.cc-creator-chip { display: grid; min-width: 0; color: var(--text-strong); }
.cc-creator-chip--card {
  grid-template-columns: 1fr;
  justify-items: center;
  gap: 6px;
  padding: 14px;
  border: 2px solid var(--ink);
  border-radius: var(--r-card);
  background: var(--surface);
  box-shadow: 3px 3px 0 var(--ink);
  text-align: center;
}
.cc-creator-chip--row { grid-template-columns: 44px minmax(0, 1fr) auto; gap: 9px; align-items: center; }
.cc-creator-chip__avatar {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 2px solid var(--ink);
  border-radius: 50%;
  background: var(--surface-2);
  box-shadow: 1.5px 1.5px 0 var(--ink);
  overflow: hidden;
  text-decoration: none;
}
.cc-creator-chip--card .cc-creator-chip__avatar { width: 56px; height: 56px; }
.cc-creator-chip__avatar img { width: 100%; height: 100%; object-fit: cover; }
.cc-creator-chip__copy { min-width: 0; }
.cc-creator-chip__name { color: var(--text-strong); font-size: 13px; font-weight: 800; text-decoration: none; overflow-wrap: anywhere; }
.cc-creator-chip__name:hover { text-decoration: underline; }
.cc-creator-chip__meta { margin-top: 2px; color: var(--text-muted); font-family: "Space Mono", monospace; font-size: 10.5px; overflow-wrap: anywhere; }
.cc-creator-chip__tier { padding: 1px 6px; border: 1.5px solid var(--ink); border-radius: var(--r-pill); background: var(--yellow); color: var(--ink); font-family: "Space Mono", monospace; font-size: 9px; font-weight: 700; text-transform: uppercase; }
.cc-creator-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }

.cc-behind-counter {
  padding: 18px;
  border: 2px solid var(--ink);
  border-radius: var(--r-card);
  background: #14121f;
  color: #f3ecff;
  box-shadow: 5px 6px 0 var(--pink);
}
.cc-behind-counter h2,
.cc-behind-counter h3 { color: #f3ecff; }
.cc-behind-counter .cc-disclosure > summary { color: #f3ecff; }
.cc-behind-counter .cc-disclosure > summary::before { border-color: rgba(255, 255, 255, .75); background: #272238; color: #f3ecff; }
.cc-behind-counter .cc-disclosure__body { border-top-color: rgba(255, 255, 255, .24); }
.cc-behind-counter .cc-annotation { color: #b9accf; }
.cc-behind-counter .cc-annotation a { color: #7de8fb; }
.cc-behind-counter__group + .cc-behind-counter__group { margin-top: 16px; padding-top: 14px; border-top: 1.5px dashed rgba(255, 255, 255, .24); }
.cc-behind-counter__kicker { color: var(--pink-light); font-family: "Space Mono", monospace; font-size: 10.5px; font-weight: 700; letter-spacing: .12em; }
.cc-behind-counter .cc-btn--danger { border-color: rgba(255, 255, 255, .75); }
.cc-image-choice { padding: 2px; border: 2px solid rgba(255, 255, 255, .75); border-radius: var(--r-card); background: transparent; cursor: pointer; }
.cc-image-choice img { display: block; width: 64px; height: 80px; border-radius: calc(var(--r-card) - 2px); object-fit: cover; }

.cc-picture-wizard { width: min(100%, 1080px); margin: 18px auto 40px; }
.cc-picture-wizard__head { display: grid; justify-items: center; gap: 6px; margin-bottom: 18px; text-align: center; }
.cc-picture-wizard__head h1 { margin: 4px 0 0; font-size: 38px; }
.cc-picture-wizard__steps { display: flex; gap: 8px; align-items: center; justify-content: center; flex-wrap: wrap; margin-top: 8px; font-size: 12px; font-weight: 800; }
.cc-picture-wizard__steps > span:not([aria-hidden]) { padding: 7px 13px; border: 2px solid var(--ink); border-radius: var(--r-pill); background: var(--surface); box-shadow: 2px 2px 0 var(--ink); }
.cc-picture-wizard__steps .is-done { color: var(--violet); }
.cc-picture-wizard__steps .is-current { background: var(--lime); color: var(--ink); }
.cc-picture-wizard__form { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 14px; align-items: start; }
.cc-picture-wizard__errors { grid-column: 1 / -1; }
.cc-picture-wizard__picture { position: sticky; top: 84px; display: grid; gap: 10px; }
.cc-picture-wizard__kicker { color: var(--text-muted); font-family: "Space Mono", monospace; font-size: 9.5px; font-weight: 700; letter-spacing: .08em; }
.cc-picture-wizard__dropzone { position: relative; display: grid; min-height: 300px; place-items: center; overflow: hidden; border: 2px solid var(--ink); border-radius: 14px; background: linear-gradient(145deg, color-mix(in srgb, var(--cyan) 45%, var(--surface)), color-mix(in srgb, var(--violet) 60%, var(--surface))); box-shadow: 3px 3px 0 var(--ink); transition: box-shadow .12s ease, transform .12s ease; }
.cc-picture-wizard__dropzone:focus-visible,
.cc-picture-wizard__dropzone.is-dragover { outline: 3px solid var(--cyan); outline-offset: 3px; box-shadow: 5px 5px 0 var(--ink); transform: translate(-1px, -1px); }
.cc-picture-wizard__dropzone input[type="file"] { position: absolute; width: 1px; height: 1px; clip-path: inset(50%); }
.cc-picture-wizard__dropzone > label { display: grid; z-index: 1; gap: 8px; place-items: center; padding: 18px; cursor: pointer; }
.cc-picture-wizard__dropzone > label.has-preview { position: absolute; right: 10px; bottom: 10px; padding: 0; }
.cc-picture-wizard__dropzone > label.has-preview .cc-picture-wizard__placeholder,
.cc-picture-wizard__dropzone > label.has-preview .cc-annotation { display: none; }
.cc-picture-wizard__placeholder { font-size: 42px; }
.cc-picture-wizard__dropzone img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cc-picture-wizard__field { display: grid; gap: 5px; min-width: 0; }
.cc-picture-wizard__field input,
.cc-picture-wizard__field textarea,
.cc-picture-wizard__field select,
.cc-picture-wizard__recipe select { box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%; padding: 9px 10px; border: 2px solid var(--ink); border-radius: 10px; background-color: var(--surface); color: var(--text-body); }
.cc-picture-wizard__field select.cc-select,
.cc-picture-wizard__recipe select.cc-select { padding-right: 34px; }
.cc-picture-wizard__choices { display: grid; min-width: 0; gap: 12px; }
.cc-picture-wizard__choices > .cc-panel { min-width: 0; }
.cc-picture-wizard__section-head { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; margin-bottom: 12px; }
.cc-picture-wizard__section-head h2 { margin: 0; font-size: 18px; }
.cc-picture-wizard__section-head span { color: var(--violet); font-family: "Space Mono", monospace; font-size: 10px; }
.cc-picture-wizard__essential-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.cc-picture-wizard__family { min-width: 0; margin: 0; padding: 0; border: 0; }
.cc-picture-wizard__family legend { margin-bottom: 6px; color: var(--text-muted); font-family: "Space Mono", monospace; font-size: 10px; font-weight: 700; text-transform: uppercase; }
.cc-picture-wizard__chips { display: flex; gap: 6px; flex-wrap: wrap; min-width: 0; }
.cc-choice-chip { position: relative; cursor: pointer; }
.cc-choice-chip input { position: absolute; width: 1px; height: 1px; clip-path: inset(50%); }
.cc-choice-chip span { display: inline-flex; min-height: 30px; align-items: center; padding: 5px 10px; border: 2px solid var(--ink); border-radius: var(--r-pill); background: var(--surface); color: var(--text-strong); box-shadow: 1.5px 1.5px 0 var(--ink); font-size: 11px; font-weight: 800; }
.cc-choice-chip input:checked + span { background: var(--lime); color: var(--ink); }
.cc-choice-chip input:focus-visible + span { outline: 3px solid var(--cyan); outline-offset: 2px; }
.cc-picture-wizard__more + .cc-picture-wizard__more { margin-top: 2px; border-top: 1.5px dashed color-mix(in srgb, var(--ink) 16%, transparent); }
.cc-picture-wizard__more { padding: 9px 0; }
.cc-picture-wizard__picked { color: var(--violet); font-family: "Space Mono", monospace; font-size: 10px; }
.cc-picture-wizard__finish { display: grid; gap: 12px; }
.cc-picture-wizard__recipe { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.cc-picture-wizard__recipe label { display: grid; gap: 5px; min-width: 0; font-size: 12px; }
.cc-remix-wizard__back { margin: 0; }
.cc-remix-wizard__original h2 { margin: 2px 0 0; font-size: 22px; }
.cc-remix-wizard__original-image { display: block; width: 100%; max-height: 430px; border: 2px solid var(--ink); border-radius: 14px; box-shadow: 3px 3px 0 var(--ink); object-fit: cover; }
.cc-remix-wizard__archetype { margin: -4px 0 0; }
.cc-remix-wizard__description { margin: 0; font-size: 12px; white-space: pre-wrap; }
.cc-remix-wizard__starter-label { margin: 12px 0 6px; font-size: 10px; }
.cc-remix-wizard__starters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.cc-remix-wizard__starter { min-width: 0; padding: 7px 10px; border: 2px solid var(--ink); border-radius: var(--r-pill); background: var(--surface); color: var(--text-strong); box-shadow: 1.5px 1.5px 0 var(--ink); cursor: pointer; font: 800 11px "Space Mono", monospace; text-align: left; }
.cc-remix-wizard__starter:hover { background: color-mix(in srgb, var(--cyan) 24%, var(--surface)); transform: translate(-1px, -1px); }
.cc-remix-wizard__spice { margin-top: 14px; }
.cc-remix-wizard__spice small { color: var(--text-muted); font: inherit; }
.cc-remix-wizard__signup { color: var(--violet); font-weight: 800; }
.cc-remix-wizard__actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.cc-remix-wizard__actions .cc-btn { box-sizing: border-box; width: 100%; min-width: 0; justify-content: center; text-align: center; }
.cc-remix-wizard__actions .is-disabled { opacity: .55; }
@media (max-width: 760px) {
  .cc-picture-wizard__head h1 { font-size: 31px; }
  .cc-picture-wizard__form { grid-template-columns: 1fr; }
  .cc-picture-wizard__picture { position: static; }
  .cc-picture-wizard__dropzone { min-height: 260px; }
  .cc-picture-wizard__essential-grid,
  .cc-picture-wizard__recipe { grid-template-columns: 1fr; }
  .cc-remix-wizard__starters,
  .cc-remix-wizard__actions { grid-template-columns: 1fr; }
}

.cc-provider-choice {
  position: relative;
  display: block;
  padding: 12px;
  border: 2px solid var(--ink);
  border-radius: 12px;
  background: var(--surface);
  box-shadow: 2px 2px 0 var(--ink);
  cursor: pointer;
}
.cc-provider-choice input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.cc-provider-choice:has(input:checked) { background: var(--lime); color: var(--ink); }
.cc-provider-choice:has(input:focus-visible) { outline: 3px solid var(--cyan); outline-offset: 2px; }
.cc-provider-choice:has(input:checked) .cc-annotation { color: color-mix(in srgb, var(--ink) 72%, var(--violet)); }
.cc-detail-cover--compact { align-self: start; max-height: 430px; overflow: hidden; }
.cc-detail-cover--compact > img { width: 100%; max-height: 430px; object-fit: cover; }
.cc-detail-summary-panel { margin-top: 14px; }
.cc-collect-form { display: flex; gap: 6px; flex: 1 1 360px; flex-wrap: wrap; min-width: 0; }
.cc-collect-form .cc-select { flex: 1 1 160px; min-width: 0; }
.cc-collect-form > .cc-chip { flex: 1 1 150px; min-width: 0; }

.cc-upload-stepper {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 18px 0;
  padding: 0;
  list-style: none;
  counter-reset: none;
}
.cc-upload-stepper li {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  color: var(--text-muted);
  font: 700 11px "Space Mono", monospace;
  text-align: center;
}
.cc-upload-stepper li:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 16px;
  left: calc(50% + 22px);
  width: calc(100% - 44px);
  border-top: 3px dashed var(--ink);
  opacity: .35;
}
.cc-upload-stepper span {
  z-index: 1;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border: 2px solid var(--ink);
  border-radius: 50%;
  background: var(--surface);
  box-shadow: 2px 2px 0 var(--ink);
  color: var(--text-muted);
  font-family: "Mochiy Pop One", sans-serif;
}
.cc-upload-stepper .is-active { color: var(--text-strong); }
.cc-upload-stepper .is-active span { background: var(--lime); color: var(--ink); }

.cc-regrade-actions .cc-dropzone,
.cc-layout-detail .cc-dropzone { min-height: 104px; padding: 14px; }

/* --- Panels & sticker cards --- */
.cc-panel {
  background: var(--surface);
  border: 2px solid var(--ink);
  border-radius: var(--r-panel);
  box-shadow: 6px 7px 0 var(--shadow);
  padding: 26px 28px;
}

.cc-card {
  background: var(--surface);
  border: 3.5px solid #fff;
  outline: 2.5px solid var(--ink);
  border-radius: var(--r-card);
  box-shadow: 5px 6px 0 var(--shadow);
  overflow: hidden;
}

/* Responsive grid of sticker cards (browse walls, home rails) */
.cc-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 18px;
}
.cc-card-grid--creators { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 16px; }

/* Shared page layouts */
.cc-layout-sidebar {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: 26px;
  align-items: start;
}
.cc-layout-sidebar--narrow { grid-template-columns: 220px minmax(0, 1fr); gap: 24px; }
.cc-layout-profile {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 28px;
  align-items: start;
}
.cc-layout-detail {
  display: grid;
  grid-template-columns: 300px minmax(0, 1fr);
  gap: 30px;
  align-items: start;
}
.cc-layout-fork {
  display: grid;
  grid-template-columns: 340px minmax(0, 1fr);
  gap: 20px;
  align-items: start;
}
.cc-layout-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 16px;
}
.cc-layout-home {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(260px, 0.8fr);
  gap: 34px;
  align-items: center;
}
.cc-layout-about {
  display: grid;
  grid-template-columns: 680px minmax(0, 1fr);
  gap: 24px;
  align-items: start;
  max-width: 960px;
  margin: 18px auto 0;
}
.cc-about-portrait {
  display: block;
  color: inherit;
  text-decoration: none;
}
.cc-about-portrait img,
.cc-about-portrait__fallback {
  display: grid;
  place-items: center;
  width: 100%;
  aspect-ratio: 1;
  box-sizing: border-box;
  object-fit: cover;
  border: 3.5px solid #fff;
  outline: 2.5px solid var(--ink);
  border-radius: var(--r-card);
  box-shadow: 5px 6px 0 var(--shadow);
  background: var(--surface);
}
.cc-about-portrait__fallback {
  padding: 20px;
  color: var(--text-muted);
  font-weight: 900;
  text-align: center;
}

/* Crypto tip jar (#1038) */
.cc-tipjar__tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}
.cc-tipjar__tab { cursor: pointer; }
.cc-tipjar__tab.is-active { background: var(--lime); color: var(--ink); }
/* No-JS fallback: every panel stays visible & stacked. Enhanced = one at a time. */
.cc-tipjar.is-enhanced .cc-tip-panel { margin-top: 0; }
.cc-tip-panel { margin-top: 16px; }
.cc-tip-panel + .cc-tip-panel { border-top: 2px dashed var(--border); padding-top: 16px; }
.cc-tipjar.is-enhanced .cc-tip-panel + .cc-tip-panel { border-top: 0; padding-top: 0; }
.cc-tip-panel__network {
  font-weight: 900;
  font-size: 15px;
  color: var(--text-strong);
  margin-bottom: 6px;
}
.cc-tip-warn {
  margin: 0 0 10px;
  padding: 8px 10px;
  font-size: 13px;
  font-weight: 700;
  color: var(--ink);
  background: var(--yellow);
  border: 2px solid var(--ink);
  border-radius: 8px;
}
.cc-tip-qr {
  width: 180px;
  max-width: 100%;
  margin: 0 0 10px;
  padding: 10px;
  background: #fff;
  border: 2px solid var(--ink);
  border-radius: 10px;
  box-sizing: border-box;
}
.cc-tip-qr__svg { display: block; width: 100%; height: auto; }
.cc-tip-address {
  display: block;
  margin-bottom: 10px;
  padding: 8px 10px;
  font-size: 13px;
  line-height: 1.4;
  word-break: break-all;
  user-select: all;
  background: var(--surface-2);
  border: 2px solid var(--border);
  border-radius: 8px;
}
.cc-tip-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.cc-tip-copy.is-copied { background: var(--lime); color: var(--ink); }
.cc-tip-fineprint {
  margin: 14px 0 0;
  font-size: 12px;
  line-height: 1.5;
  color: var(--text-muted);
}

.cc-layout-badges {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}
.cc-home-search {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.cc-home-search .cc-chip { min-width: 0; }
.cc-sticky-rail { position: sticky; top: 14px; }
.cc-sticky-rail--loose { top: 16px; }

@media (max-width: 900px) {
  .cc-layout-home,
  .cc-layout-detail,
  .cc-layout-fork,
  .cc-layout-profile,
  .cc-layout-sidebar,
  .cc-layout-sidebar--narrow,
  .cc-layout-split,
  .cc-layout-about {
    grid-template-columns: minmax(0, 1fr);
  }
  .cc-layout-home { align-items: start; }
  .cc-layout-badges { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cc-sticky-rail { position: static; }
}

@media (max-width: 640px) {
  .cc-container { padding: 0 14px; }
  .cc-panel { padding: 18px; }
  .cc-home-search .cc-chip,
  .cc-home-search .cc-btn {
    width: 100%;
  }
  .cc-card-grid,
  .cc-card-grid--creators {
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 14px;
  }
  .cc-layout-badges { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 420px) {
  .cc-card-grid,
  .cc-card-grid--creators {
    grid-template-columns: minmax(0, 1fr);
  }
}

html[data-view="desktop"] .cc-container { padding: 0 30px; }
html[data-view="desktop"] .cc-nav {
  flex-wrap: nowrap;
  gap: 22px;
  padding: 22px 0 14px;
}
html[data-view="desktop"] .cc-nav__toggle { display: none; }
html[data-view="desktop"] .cc-nav__drawer {
  flex: 1;
  display: flex;
  align-items: center;
  flex-direction: row;
  gap: 22px;
  min-width: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
html[data-view="desktop"] .cc-nav__links,
html[data-view="desktop"] .cc-nav__actions {
  align-items: center;
  flex-direction: row;
  gap: 22px;
}
html[data-view="desktop"] .cc-nav__actions { margin-left: auto; }
html[data-view="desktop"] .cc-nav a.cc-navlink,
html[data-view="desktop"] .cc-nav .cc-menu > summary,
html[data-view="desktop"] .cc-nav .cc-btn,
html[data-view="desktop"] .cc-nav .cc-theme-toggle {
  width: auto;
  min-height: 0;
  justify-content: center;
}
html[data-view="desktop"] .cc-nav a.cc-navlink {
  display: inline;
  padding: 0;
  border-radius: 0;
}
html[data-view="desktop"] .cc-nav a.cc-navlink:hover { background: transparent; }
html[data-view="desktop"] .cc-nav .cc-menu { width: auto; }
html[data-view="desktop"] .cc-nav .cc-menu__panel {
  position: absolute;
  right: 0;
  top: calc(100% + 6px);
  width: auto;
  min-width: 210px;
  margin-top: 0;
  box-shadow: 4px 4px 0 var(--ink);
}
html[data-view="desktop"] .cc-layout-home { grid-template-columns: minmax(0, 2fr) minmax(260px, 0.8fr); }
html[data-view="desktop"] .cc-layout-detail { grid-template-columns: 300px minmax(0, 1fr); }
html[data-view="desktop"] .cc-layout-fork { grid-template-columns: 340px minmax(0, 1fr); }
html[data-view="desktop"] .cc-layout-profile { grid-template-columns: 220px minmax(0, 1fr); }
html[data-view="desktop"] .cc-layout-sidebar { grid-template-columns: 240px minmax(0, 1fr); }
html[data-view="desktop"] .cc-layout-sidebar--narrow { grid-template-columns: 220px minmax(0, 1fr); }
html[data-view="desktop"] .cc-layout-split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
html[data-view="desktop"] .cc-layout-about { grid-template-columns: 680px minmax(0, 1fr); }
html[data-view="desktop"] .cc-layout-badges { grid-template-columns: repeat(4, minmax(0, 1fr)); }
html[data-view="desktop"] .cc-sticky-rail { position: sticky; }
html[data-view="desktop"] .cc-card-grid { grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); }
html[data-view="desktop"] .cc-card-grid--creators { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }

/* --- Chat pages and reusable transcript themes --- */
[x-cloak] { display: none !important; }
.cc-chat-shell { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 18px; margin: 18px 0 34px; }
.cc-chat-stage { display: grid; grid-template-columns: 1fr; gap: 18px; width: min(100%, 960px); margin: 18px auto 42px; }
.cc-chat-stage__header { position: sticky; z-index: 25; top: 10px; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 12px 16px; border-radius: 20px; }
.cc-chat-stage__cast { display: flex; align-items: center; padding-right: 6px; }
.cc-chat-stage__avatar,
.cc-chat-stage__cast-add { display: grid; place-items: center; width: 44px; height: 44px; margin-right: -8px; border: 2px solid var(--ink); border-radius: 50%; background: var(--surface-2); box-shadow: 2px 2px 0 var(--ink); color: var(--text-strong); overflow: hidden; text-decoration: none; }
.cc-chat-stage__avatar img { width: 100%; height: 100%; object-fit: cover; }
.cc-chat-stage__avatar span { font-weight: 900; }
.cc-chat-stage__avatar--viewer { padding: 0; cursor: zoom-in; font: inherit; }
.cc-chat-human__avatar { display: grid; place-items: center; width: 38px; height: 38px; margin-right: 4px; border: 2px solid var(--cyan); border-radius: 12px; background: var(--surface); box-shadow: 2px 2px 0 var(--ink); overflow: hidden; }
.cc-chat-human__avatar img { width: 100%; height: 100%; object-fit: cover; }
.cc-chat-human__avatar span { font-weight: 900; }
.cc-chat-stage__cast-add { margin-right: 0; background: var(--surface); font-size: 20px; }
.cc-chat-stage__identity { min-width: 0; }
.cc-chat-stage__identity h1 { margin: 1px 0 0; overflow: hidden; font-size: 22px; text-overflow: ellipsis; white-space: nowrap; }
.cc-chat-stage__identity .cc-annotation { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-chat-stage__primary-actions { display: flex; gap: 7px; align-items: center; }
.cc-chat-stage__primary-actions form { margin: 0; }
.cc-chat-stage__tools { position: relative; }
.cc-chat-stage__tools > summary { min-width: 38px; padding: 6px 9px; list-style: none; }
.cc-chat-stage__tools > summary::-webkit-details-marker { display: none; }
.cc-chat-stage__tools-menu { position: absolute; z-index: 30; top: calc(100% + 8px); right: 0; display: grid; width: min(88vw, 430px); max-height: 75vh; gap: 12px; padding: 14px; overflow-y: auto; border: 2px solid var(--ink); border-radius: 16px; background: var(--surface); box-shadow: 5px 5px 0 var(--ink); }
.cc-chat-stage__form { display: grid; gap: 8px; }
.cc-chat-stage__form input,
.cc-chat-stage__form textarea { width: 100%; padding: 8px 10px; border: 2px solid var(--ink); border-radius: 8px; background: var(--surface); color: var(--text-body); }
.cc-chat-stage__cast-tools { display: grid; gap: 8px; }
.cc-chat-stage__cast-row { display: flex; gap: 8px; justify-content: space-between; align-items: center; }
.cc-chat-stage__cast-row > div,
.cc-chat-stage__button-row { display: flex; gap: 7px; flex-wrap: wrap; align-items: center; }
.cc-chat-stage__cast-row form,
.cc-chat-stage__button-row form { display: inline; margin: 0; }
.cc-chat-stage__housekeeping { display: flex; gap: 8px; align-items: center; padding: 12px; border-radius: 12px; background: #14121f; color: #f3ecff; }
.cc-chat-stage__housekeeping .cc-behind-counter__kicker { margin-right: auto; }
.cc-chat-stage__housekeeping form { margin: 0; }
.cc-chat-stage__room { display: grid; min-width: 0; padding: 4px 0 0; }
.cc-chat-stage__room-content { min-width: 0; }
.cc-chat-publish-focus .cc-chat-stage__header,
.cc-chat-publish-focus #cc-chat-room > :not(#cc-chat-publish-panel) {
  opacity: .55;
  filter: grayscale(.8);
  transition: opacity 160ms ease, filter 160ms ease;
}
.cc-chat-publish-focus .cc-chat-stage__header:focus-within,
.cc-chat-publish-focus #cc-chat-room > :not(#cc-chat-publish-panel):focus-within {
  opacity: 1;
  filter: none;
}
.cc-chat-publish-focus #cc-chat-publish-panel { position: relative; z-index: 1; }
@media (prefers-reduced-motion: reduce) {
  .cc-chat-publish-focus .cc-chat-stage__header,
  .cc-chat-publish-focus #cc-chat-room > :not(#cc-chat-publish-panel) { transition: none; }
}
.cc-chat-inspiration[hidden] { display: none; }
.cc-chat-inspiration { min-width: 0; }
.cc-chat-inspiration__panel {
  position: sticky; top: 104px; display: grid; gap: 10px; padding: 12px;
  border: 2px solid var(--ink); border-radius: 16px; background: var(--surface);
  box-shadow: 5px 5px 0 var(--ink);
}
.cc-chat-inspiration__title { margin: 0; padding-right: 34px; overflow-wrap: anywhere; font-weight: 900; }
.cc-chat-inspiration__close {
  position: absolute; top: 8px; right: 8px; display: grid; place-items: center;
  width: 32px; height: 32px; padding: 0; border: 2px solid var(--ink);
  border-radius: 50%; background: var(--surface-2); color: var(--text-strong); cursor: pointer;
}
.cc-chat-inspiration__image {
  display: block; width: 100%; max-height: calc(100vh - 240px); object-fit: contain;
  border: 2px solid var(--ink); border-radius: 10px; background: var(--surface-2);
}
.cc-chat-inspiration__thumbs { display: flex; gap: 8px; overflow-x: auto; }
.cc-chat-inspiration__thumbs[hidden] { display: none; }
.cc-chat-inspiration__thumbs:empty { display: none; }
.cc-chat-inspiration__thumb {
  flex: 0 0 54px; width: 54px; height: 54px; padding: 0; overflow: hidden;
  border: 2px solid var(--ink); border-radius: 8px; background: var(--surface-2); cursor: pointer;
}
.cc-chat-inspiration__thumb[aria-pressed="true"] { outline: 3px solid var(--cyan); outline-offset: 1px; }
.cc-chat-inspiration__thumb img { width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 760px) {
  .cc-chat-stage.is-viewing-character { width: min(100%, 1280px); }
  .cc-chat-stage.is-viewing-character .cc-chat-stage__room { grid-template-columns: minmax(220px, 320px) minmax(0, 1fr); gap: 18px; }
}
.cc-chat-stage__fork-entry { margin: 0 0 8px; text-align: right; }
.cc-chat-stage__room-tools { margin-inline: auto !important; width: min(100%, 720px); padding: 10px 14px; border: 2px solid var(--ink); border-radius: 14px; background: color-mix(in srgb, var(--surface) 85%, transparent); }
.cc-chat-stage .cc-chat-transcript { min-height: 420px; padding: 12px 4px 2px; }
.cc-chat-stage .cc-chat-composer { position: sticky; z-index: 15; bottom: 10px; margin-top: 22px; padding: 14px; border: 2px solid var(--ink); border-radius: 18px; background: var(--surface); box-shadow: 5px 6px 0 var(--ink); }
.cc-chat-stage .cc-chat-composer__actions .cc-btn--cyan { order: 1; }
.cc-chat-stage .cc-chat-composer__actions .cc-btn--yellow { order: 2; }
.cc-chat-stage .cc-chat-composer__actions .cc-btn--pink { order: 3; }
.cc-chat-character { align-self: start; position: sticky; top: 18px; }
/* #1072: the whole rail visibly mutes while an imported chat's cast is still
   being built -- disabled inputs/buttons already stop clicks, this is just
   the "don't bother, it's cooking" signal. aria-disabled spans (export
   links) get the same look since <a> can't take the disabled attribute. */
.cc-chat-character--locked { opacity: 0.55; }
.cc-chat-character--locked [disabled],
.cc-chat-character--locked [aria-disabled="true"] { cursor: not-allowed; }
.cc-chat-import-lock-note { opacity: 1; font-weight: 700; }
.cc-chat-character__image { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; border: 2px solid var(--ink); border-radius: 8px; background: var(--surface); }
.cc-chat-character__fallback { display: grid; place-items: center; width: 100%; aspect-ratio: 3 / 4; border: 2px dashed var(--text-muted); border-radius: 8px; color: var(--text-muted); }
.cc-chat-participants { display: grid; gap: 10px; }
.cc-chat-participant { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 8px; align-items: center; }
.cc-chat-participant img,
.cc-chat-participant__fallback { width: 44px; height: 44px; border: 2px solid var(--ink); border-radius: 8px; object-fit: cover; background: var(--surface-2); }
.cc-chat-participant__fallback { display: grid; place-items: center; color: var(--text-muted); font-size: 12px; }
.cc-chat-participant__name { font-weight: 900; overflow-wrap: anywhere; }
.cc-chat-participants--cards { gap: 14px; }
.cc-chat-participant--card { display: grid; grid-template-columns: 1fr; gap: 8px; align-items: start; }
.cc-chat-participant--card .cc-chat-character__image,
.cc-chat-participant--card .cc-chat-character__fallback {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
}
.cc-chat-room-panel { min-width: 0; }
.cc-chat-style-picker input { accent-color: var(--pink); }
.cc-chat-transcript { display: flex; flex-direction: column; gap: 12px; min-height: 340px; }
.cc-chat-message {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  max-width: min(86%, 720px);
}
.cc-chat-message--persona { align-self: flex-end; flex-direction: row-reverse; }
.cc-chat-message--character { align-self: flex-start; }
.cc-chat-message__avatar {
  flex: 0 0 38px;
  width: 38px;
  height: 38px;
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  background: var(--surface-2);
  box-shadow: 2px 2px 0 var(--ink);
  overflow: hidden;
}
.cc-chat-message__avatar--viewer { padding: 0; color: inherit; cursor: zoom-in; font: inherit; }
.cc-chat-message__avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cc-chat-message__avatar span { display: grid; place-items: center; width: 100%; height: 100%; color: var(--text-strong); font-weight: 900; }
.cc-chat-message__content {
  min-width: 0;
  width: 100%;
  border: 2px solid var(--ink);
  border-radius: 8px;
  padding: 10px 12px;
  background: var(--surface);
  box-shadow: 3px 3px 0 var(--ink);
}
.cc-chat-message--failed .cc-chat-message__content { background: #ffe2ef; }
html[data-theme="dark"] .cc-chat-message--failed .cc-chat-message__content { background: #4a2037; }
.cc-chat-message__meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; font-size: 12px; color: var(--text-muted); }
.cc-chat-message__body { white-space: pre-wrap; overflow-wrap: anywhere; }
/* #895: image rows carry markup, not model prose — pre-wrap would render the
   template's own newlines/indentation as phantom blank lines. Normalize it. */
.cc-chat-message__body--media { white-space: normal; }
.cc-chat-media-disclosure { margin: 0; }
.cc-chat-media-disclosure > summary { cursor: pointer; color: var(--text-muted); font-size: 12px; font-weight: 800; }
.cc-chat-media-disclosure__body { margin-top: 8px; }
.cc-chat-message:has(.cc-chat-edit[open]) .cc-chat-message__body { display: none; }
.cc-chat-message__actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; margin-top: 10px; }
.cc-chat-message__actions .cc-btn,
.cc-chat-swipe .cc-btn,
.cc-chat-branches .cc-btn { min-height: 32px; padding: 6px 10px; font-size: 12px; }
.cc-chat-edit { margin: 0; }
.cc-chat-edit[open] { flex-basis: 100%; }
.cc-chat-edit summary { cursor: pointer; font-size: 12px; font-weight: 800; color: var(--text-muted); }
.cc-chat-edit summary.cc-chat-icon-btn { display: grid; list-style: none; color: var(--text-strong); }
.cc-chat-edit summary.cc-chat-icon-btn::-webkit-details-marker { display: none; }
.cc-chat-edit form { display: grid; gap: 8px; margin-top: 8px; }
.cc-chat-edit__buttons { display: flex; gap: 8px; flex-wrap: wrap; }
.cc-chat-meta-action { margin: 0; }
.cc-chat-edit textarea,
.cc-chat-try-again input,
.cc-chat-message__body textarea {
  width: 100%;
  border: 2px solid var(--ink);
  border-radius: 8px;
  padding: 8px 10px;
  background: var(--surface);
  color: var(--text-body);
}
.cc-chat-model,
.cc-chat-badge { border: 1px solid var(--text-muted); border-radius: 999px; padding: 1px 6px; font-size: 11px; }
.cc-chat-swipe { display: grid; gap: 8px; margin-top: 10px; }
.cc-chat-swipe__nav { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; font-size: 12px; font-weight: 800; color: var(--text-muted); }
.cc-chat-swipe__nav form { margin: 0; }
.cc-chat-icon-btn { display: grid; place-items: center; width: 32px; height: 32px; border: 2px solid var(--ink); border-radius: 999px; background: var(--surface); color: var(--text-strong); font-size: 20px; font-weight: 900; box-shadow: 2px 2px 0 var(--ink); }
.cc-chat-icon-btn:not([disabled]) { cursor: pointer; }
.cc-chat-icon-btn[disabled] { opacity: .45; box-shadow: none; }
.cc-chat-try-again { margin: 0; }
.cc-chat-try-again[open] { flex-basis: 100%; }
.cc-chat-try-again summary { cursor: pointer; list-style: none; width: max-content; }
.cc-chat-try-again summary::-webkit-details-marker { display: none; }
.cc-chat-try-again form { display: grid; gap: 8px; margin-top: 8px; max-width: 720px; }
.cc-chat-try-again__models { display: grid; gap: 8px; }
.cc-chat-try-again__model { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; border: 1px solid var(--text-muted); border-radius: 8px; padding: 8px 10px; background: var(--surface-soft); overflow-wrap: anywhere; }
.cc-chat-try-again__actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.cc-chat-branches { margin: 0 0 14px; }
.cc-chat-branches__panel { display: grid; gap: 10px; margin-top: 10px; border: 2px dashed var(--text-muted); border-radius: 8px; padding: 10px; }
.cc-chat-branch__point { margin: 0 0 8px; font-size: 12px; color: var(--text-muted); overflow-wrap: anywhere; }
.cc-chat-branch__children { display: grid; gap: 8px; }
.cc-chat-branch__child { width: 100%; text-align: left; border: 2px solid var(--ink); border-radius: 8px; padding: 8px 10px; background: var(--surface); color: var(--text-body); cursor: pointer; }
.cc-chat-branch__child.is-current { background: var(--lime); color: var(--ink); }
.cc-chat-branch__child span,
.cc-chat-branch__child small,
.cc-chat-branch__child time { display: block; overflow-wrap: anywhere; }
.cc-chat-branch__child span { font-weight: 900; }
.cc-chat-branch__child time { margin-top: 3px; font-size: 11px; color: var(--text-muted); }
.cc-chat-typing { display: flex; gap: 5px; align-items: center; height: 28px; }
.cc-chat-typing span { width: 7px; height: 7px; border-radius: 50%; background: var(--text-muted); animation: cc-chat-bounce 1s infinite ease-in-out; }
.cc-chat-typing span:nth-child(2) { animation-delay: .15s; }
.cc-chat-typing span:nth-child(3) { animation-delay: .3s; }
@keyframes cc-chat-bounce { 0%, 80%, 100% { transform: translateY(0); opacity: .45; } 40% { transform: translateY(-5px); opacity: 1; } }
.cc-chat-error p { margin: 0 0 8px; }
.cc-chat-inline-error { margin: 14px 0 0; border: 2px solid var(--pink); border-radius: 8px; padding: 8px 10px; font-weight: 800; }
.cc-chat-composer { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; margin-top: 18px; align-items: end; }
.cc-chat-composer--multi { grid-template-columns: 1fr; align-items: stretch; }
.cc-chat-speaker-pills { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cc-chat-composer textarea,
.cc-chat-composer input[type="text"] { width: 100%; border: 2px solid var(--ink); border-radius: 8px; padding: 10px 12px; background: var(--surface); color: var(--text-body); }
/* #2029: sillytavern/novel styles invite longer prose than bubbles' quick back-and-forth,
   so give the composer more room to write on desktop. min-height (not rows) so it responds
   to the media query and to font-size/zoom; capped + resizable per Brent's decision. */
@media (min-width: 760px) {
  #cc-chat-room[data-chat-style="sillytavern"] .cc-chat-composer textarea[name="content"],
  #cc-chat-room[data-chat-style="novel"] .cc-chat-composer textarea[name="content"] {
    min-height: 20vh;
    max-height: 40vh;
    resize: vertical;
  }
}
.cc-chat-steering { grid-column: 1 / -1; }
.cc-chat-steering summary { cursor: pointer; font-size: 13px; font-weight: 800; color: var(--text-muted); }
.cc-chat-composer__actions { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, max-content)); gap: 8px; justify-content: end; }
.cc-chat-composer__actions .cc-btn { justify-content: center; text-align: center; white-space: normal; }
.cc-chat-generated-image { max-width: 100%; border: 2px solid var(--ink); border-radius: 6px; display: block; }
/* #895: render the full image at column width instead of upscaling the 400px thumb. */
.cc-chat-generated-image--full { width: 100%; height: auto; }
/* #895 decision 3: blur an NSFW thumb in place until the player reveals it. */
.cc-chat-generated-image--nsfw-blur { filter: blur(12px); user-select: none; }
.cc-chat-image-meta { margin-top: 8px; }
.cc-chat-image-meta summary { cursor: pointer; }
.cc-chat-image-meta p { white-space: pre-wrap; margin: 6px 0 0; }
.cc-chat-spoiler-controls { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: space-between; }
.cc-chat-spoiler-blurred .cc-chat-message__body,
.cc-chat-spoiler-blurred .cc-chat-generated-image {
  filter: blur(7px);
  opacity: .62;
  transition: filter .18s ease, opacity .18s ease;
  user-select: none;
}
.cc-chat-spoiler-remix { display: none; margin-top: 8px; }
.cc-chat-message.is-spoiler-frontier .cc-chat-spoiler-remix { display: inline-flex; }

.cc-chat-transcript--bubbles .cc-chat-message__content { border-radius: 18px; }
.cc-chat-transcript--bubbles .cc-chat-message--persona .cc-chat-message__content { background: #fff0b8; }
.cc-chat-transcript--bubbles .cc-chat-message--character .cc-chat-message__content { background: #dff8ff; }
html[data-theme="dark"] .cc-chat-transcript--bubbles .cc-chat-message--persona .cc-chat-message__content { background: #443b1b; }
html[data-theme="dark"] .cc-chat-transcript--bubbles .cc-chat-message--character .cc-chat-message__content { background: #183b47; }

.cc-chat-transcript--sillytavern .cc-chat-message { align-self: stretch; max-width: none; align-items: flex-start; flex-direction: row; }
.cc-chat-transcript--sillytavern .cc-chat-message__avatar { flex-basis: 46px; width: 46px; height: 46px; border-radius: 8px; }
.cc-chat-transcript--sillytavern .cc-chat-message__content { align-self: flex-start; min-height: 0; height: auto; border-radius: 8px; background: var(--surface-2); }
.cc-chat-transcript--sillytavern .cc-chat-message__meta {
  margin: -10px -12px 10px;
  padding: 8px 10px;
  border-bottom: 2px solid var(--ink);
  background: color-mix(in srgb, var(--surface) 72%, var(--cyan) 28%);
}
.cc-chat-transcript--sillytavern .cc-chat-message--persona .cc-chat-message__meta {
  background: color-mix(in srgb, var(--surface) 72%, var(--yellow) 28%);
}
.cc-published-chat-message__body { white-space: normal; }
/* #2039: keep the wrapper normal so its indented image/details markup does
   not create phantom blank lines; only the model prose preserves whitespace. */
.cc-published-chat-message__text { white-space: pre-wrap; }
.cc-published-chat-message__footer {
  display: flex;
  justify-content: flex-end;
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1.5px dashed color-mix(in srgb, var(--ink) 18%, transparent);
}
.cc-published-chat-message__footer form { margin: 0; }

.cc-chat-transcript--novel {
  gap: 4px;
  padding: 10px 0;
  font-family: Georgia, "Times New Roman", serif;
  color: var(--text-strong);
}
.cc-chat-transcript--novel .cc-chat-message { align-self: stretch; max-width: none; display: block; }
.cc-chat-transcript--novel .cc-chat-message__avatar { display: none; }
.cc-chat-transcript--novel .cc-chat-message__content {
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: transparent;
  padding: 7px 2px;
}
.cc-chat-transcript--novel .cc-chat-message__meta { margin-bottom: 2px; font-family: "Space Mono", monospace; font-size: 11px; }
.cc-chat-transcript--novel .cc-chat-message__body { font-size: 18px; line-height: 1.7; }
.cc-chat-transcript--novel .cc-chat-swipe,
.cc-chat-transcript--novel .cc-chat-message__actions { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; }

.cc-chat-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.cc-chat-actions form { margin: 0; }
.cc-chat-character input,
.cc-chat-character textarea,
.cc-chat-inbox input[type="search"],
.cc-chat-inbox__edit input,
.cc-chat-inbox__edit textarea {
  width: 100%;
  border: 2px solid var(--ink);
  border-radius: 8px;
  padding: 8px 10px;
  background: var(--surface);
  color: var(--text-body);
}
#cc-chat-add-participant { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.cc-chat-stage__cast-row { min-width: 0; }
.cc-chat-stage__cast-row > :first-child,
.cc-chat-stage__housekeeping .cc-btn { overflow-wrap: anywhere; }

.cc-chat-inbox { display: grid; grid-template-columns: 268px minmax(0, 1fr); gap: 22px; align-items: start; margin: 18px 0 34px; }
.cc-chat-import { display: grid; gap: 16px; margin: 18px 0 34px; min-width: 0; }
.cc-chat-import__panel { max-width: 720px; }
.cc-chat-inbox__rail { position: sticky; top: 84px; }
.cc-chat-inbox__filters { display: grid; gap: 10px; border-radius: 22px; }
.cc-chat-inbox__filter-head { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
.cc-chat-inbox__filter-head h2 { margin: 0; font-size: 17px; }
.cc-chat-inbox__filter-head a { color: var(--pink); font-family: "Space Mono", monospace; font-size: 11px; }
.cc-chat-inbox__filter-title { color: var(--text-muted); font-family: "Space Mono", monospace; font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.cc-chat-inbox__filter-section { display: grid; gap: 8px; margin-top: 2px; padding-top: 12px; border-top: 2px dashed color-mix(in srgb, var(--ink) 16%, transparent); }
.cc-chat-inbox__check { display: grid; grid-template-columns: auto 26px minmax(0, 1fr) auto; gap: 7px; align-items: center; padding: 4px; border-radius: 8px; font-size: 13px; font-weight: 800; }
.cc-chat-inbox__check:has(input:checked) { background: color-mix(in srgb, var(--lime) 20%, transparent); }
.cc-chat-inbox__check input { accent-color: var(--lime); }
.cc-chat-inbox__check img,
.cc-chat-inbox__check-avatar { display: grid; width: 26px; height: 26px; place-items: center; border: 2px solid var(--ink); border-radius: 50%; background: var(--surface-2); object-fit: cover; font-size: 10px; }
.cc-chat-inbox__check span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-chat-inbox__check small { color: var(--text-muted); font-weight: 800; }
.cc-chat-inbox__filter-pills { display: flex; gap: 5px; flex-wrap: wrap; }
.cc-chat-inbox__status-segment { display: grid; grid-template-columns: repeat(3, 1fr); border: 2px solid var(--ink); border-radius: 12px; overflow: hidden; }
.cc-chat-inbox__status-segment a { padding: 6px 3px; color: var(--text-strong); font-size: 11px; font-weight: 800; text-align: center; text-decoration: none; }
.cc-chat-inbox__status-segment a + a { border-left: 1px solid var(--ink); }
.cc-chat-inbox__status-segment a.is-selected { background: var(--ink); color: var(--lime); }
.cc-chat-inbox__main { min-width: 0; }
.cc-chat-inbox__head { display: flex; justify-content: space-between; gap: 14px; align-items: end; flex-wrap: wrap; margin-bottom: 14px; }
.cc-chat-inbox__head h1 { font-size: 40px; margin: 0 0 4px; }
.cc-chat-inbox__head .cc-annotation strong { color: var(--violet); }
.cc-chat-inbox__controls { display: flex; gap: 14px; align-items: center; justify-content: flex-end; flex-wrap: wrap; margin-bottom: 12px; }
.cc-chat-inbox__search { flex: 1 1 280px; max-width: 420px; }
.cc-chat-inbox__search input { border-radius: 16px; box-shadow: 4px 4px 0 var(--cyan); font-family: "Space Mono", monospace; }
.cc-chat-inbox__chips { display: flex; gap: 6px; flex-wrap: wrap; }
.cc-chat-inbox__chips .cc-chip { text-decoration: none; }
.cc-chat-inbox .cc-chip.is-selected { background: var(--lime); color: var(--ink); }
.cc-chat-inbox__sort-label { align-self: center; color: var(--text-muted); font-family: "Space Mono", monospace; font-size: 11px; font-weight: 700; }
.cc-chat-inbox__ledger { display: grid; gap: 0; padding: 0; overflow: visible; border-radius: 22px; }
.cc-chat-inbox__ledger--branches { margin-bottom: 12px; }
/* #1454: card-detail mini-inbox — container/layout only. The rows inside reuse
   the shared .cc-chat-inbox__* classes untouched; this just gives the section
   its own spacing/heading and lets the copy column flex down in the narrower
   card-detail column so the row never overflows. */
.cc-card-mini-inbox { margin: 8px 0 14px; }
.cc-card-mini-inbox__head { display: flex; gap: 12px; align-items: baseline; justify-content: space-between; flex-wrap: wrap; margin: 0 0 8px; }
.cc-card-mini-inbox__head h2 { margin: 0; font-size: 16px; }
.cc-card-mini-inbox .cc-chat-inbox__ledger { border-radius: 16px; }
.cc-card-mini-inbox .cc-chat-inbox__row-link { grid-template-columns: 66px minmax(110px, 200px) minmax(0, 1fr); gap: 10px 12px; }
.cc-chat-inbox__ledger--branches .cc-chat-inbox__row { grid-template-columns: minmax(0, 1fr) auto; }
.cc-chat-inbox__ledger--branches .cc-chat-inbox__row-link { grid-template-columns: 76px minmax(0, 1fr); }
.cc-chat-inbox__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 132px auto;
  gap: 12px;
  align-items: center;
  min-width: 0;
  padding: 13px 18px;
  background: transparent;
}
.cc-chat-inbox__row + .cc-chat-inbox__row { border-top: 1.5px dashed color-mix(in srgb, var(--ink) 16%, transparent); }
.cc-chat-inbox__row:hover { background: color-mix(in srgb, var(--violet) 5%, var(--surface)); }
.cc-chat-inbox__row.is-pinned { background: color-mix(in srgb, var(--yellow) 18%, var(--surface)); }
.cc-chat-inbox__row-link { display: grid; grid-template-columns: 76px 190px minmax(0, 1fr); gap: 12px 16px; align-items: center; min-width: 0; color: inherit; text-decoration: none; }
.cc-chat-inbox__avatars { display: flex; align-items: center; width: 76px; min-height: 44px; }
.cc-chat-inbox__avatars img,
.cc-chat-inbox__avatars span {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  margin-right: -8px;
  border: 2px solid var(--ink);
  border-radius: 50%;
  background: var(--surface-2);
  box-shadow: 1.5px 1.5px 0 var(--ink);
  object-fit: cover;
  display: grid;
  place-items: center;
  font-weight: 900;
}
.cc-chat-inbox__copy { min-width: 0; }
.cc-chat-inbox__titleline { display: flex; gap: 10px; justify-content: space-between; align-items: baseline; min-width: 0; }
.cc-chat-inbox__titleline h2 { font-size: 14px; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-chat-inbox__archived {
  flex: 0 0 auto; padding: 1px 7px; border: 1.5px solid var(--ink); border-radius: 999px;
  color: var(--text-muted); background: var(--surface-2); font: 700 9.5px "Space Mono", monospace;
}
.cc-chat-inbox__new {
  flex: 0 0 auto; padding: 1px 7px; border: 1.5px solid var(--ink); border-radius: 999px;
  color: var(--ink); background: var(--pink); font: 800 9.5px "Space Mono", monospace;
  text-transform: uppercase;
}
.cc-chat-inbox__titleline time,
.cc-chat-inbox__meta { color: var(--text-muted); font-size: 12px; font-weight: 800; white-space: nowrap; }
.cc-chat-inbox__description,
.cc-chat-inbox__snippet { margin: 3px 0 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-chat-inbox__description { color: var(--text-muted); font-size: 11px; font-weight: 600; }
.cc-chat-inbox__last-message { min-width: 0; }
.cc-chat-inbox__snippet { min-width: 0; color: var(--text-body); font-size: 12.5px; font-weight: 600; }
.cc-chat-inbox__snippet p { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-chat-inbox__snippet strong { color: var(--violet); }
.cc-chat-inbox__meta { display: grid; grid-template-columns: 74px 58px; gap: 0; justify-self: end; font-family: "Space Mono", monospace; font-size: 11px; text-align: right; }
.cc-chat-inbox__meta .is-hot { color: var(--pink); }
.cc-chat-inbox__actions { position: relative; }
.cc-chat-inbox__actions > summary { min-width: 34px; min-height: 30px; padding: 4px 8px; list-style: none; }
.cc-chat-inbox__actions > summary::-webkit-details-marker { display: none; }
.cc-chat-inbox__action-menu { position: absolute; z-index: 20; top: calc(100% + 6px); right: 0; display: grid; min-width: 190px; gap: 7px; padding: 10px; border: 2px solid var(--ink); border-radius: 12px; background: var(--surface); box-shadow: 4px 4px 0 var(--ink); }
.cc-chat-inbox__action-menu form { margin: 0; }
.cc-chat-inbox__action-menu > .cc-btn,
.cc-chat-inbox__action-menu > form > .cc-btn { width: 100%; min-height: 30px; padding: 5px 9px; font-size: 12px; }
.cc-chat-inbox__branch-actions { grid-column: 1 / -1; display: flex; gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
.cc-chat-inbox__branch-actions form { margin: 0; }
.cc-chat-inbox__rename { width: 100%; }
.cc-chat-inbox__rename > summary { font-size: 12px; }
.cc-chat-inbox__edit { display: grid; gap: 8px; min-width: min(78vw, 260px); padding: 10px; }

@media (max-width: 759px) {
  .cc-chat-shell { display: block; margin-top: 10px; }
  .cc-chat-stage { display: grid; width: 100%; }
  .cc-chat-stage__header { grid-template-columns: auto minmax(0, 1fr); top: 6px; padding: 10px; }
  .cc-chat-stage__avatar,
  .cc-chat-stage__cast-add { width: 38px; height: 38px; }
  .cc-chat-human__avatar { width: 34px; height: 34px; }
  .cc-chat-stage__primary-actions { grid-column: 1 / -1; justify-content: flex-end; flex-wrap: wrap; }
  .cc-chat-stage__tools-menu { position: fixed; top: auto; right: 14px; bottom: 14px; left: 14px; width: auto; }
  .cc-chat-stage__housekeeping { flex-wrap: wrap; }
  .cc-chat-stage__housekeeping .cc-behind-counter__kicker { flex-basis: 100%; }
  body.cc-chat-image-open { overflow: hidden; }
  .cc-chat-inspiration {
    position: fixed; z-index: 210; inset: 0; display: grid; place-items: center;
    padding: 12px; background: color-mix(in srgb, var(--ink) 82%, transparent);
  }
  .cc-chat-inspiration__panel { position: relative; top: auto; width: min(100%, 560px); max-height: 96vh; overflow: auto; }
  .cc-chat-inspiration__image { max-height: calc(96vh - 150px); }
  .cc-chat-stage .cc-chat-composer { bottom: 6px; padding: 10px; }
  .cc-chat-character { position: static; display: block; margin-bottom: 12px; padding: 10px !important; }
  .cc-chat-character__image,
  .cc-chat-character__fallback { width: 56px; height: 56px; aspect-ratio: 1; border-radius: 8px; }
  .cc-chat-character h1 { font-size: 18px !important; margin-bottom: 2px !important; }
  .cc-chat-character p { margin: 2px 0 !important; }
  .cc-chat-message { max-width: 94%; }
  .cc-chat-message__avatar { flex-basis: 32px; width: 32px; height: 32px; }
  .cc-chat-composer,
  .cc-chat-try-again__model { grid-template-columns: 1fr; }
  .cc-chat-composer__actions { grid-template-columns: repeat(3, minmax(0, 1fr)); justify-content: stretch; }
  .cc-chat-composer__actions .cc-btn { padding: 7px 8px; font-size: 12px; }
  .cc-chat-transcript--sillytavern .cc-chat-message__avatar { flex-basis: 38px; width: 38px; height: 38px; }
  .cc-chat-transcript--novel .cc-chat-message__body { font-size: 17px; line-height: 1.65; }
  .cc-chat-inbox { grid-template-columns: 1fr; }
  .cc-chat-inbox__rail { position: static; }
  .cc-chat-inbox__controls { justify-content: stretch; }
  .cc-chat-inbox__search { width: 100%; }
  .cc-chat-inbox__ledger { overflow: visible; }
  .cc-chat-inbox__row { grid-template-columns: minmax(0, 1fr) auto; padding: 12px; }
  .cc-chat-inbox__row-link { grid-template-columns: 58px minmax(0, 1fr); }
  /* #1454: the mini-inbox's desktop row-link override has higher specificity
     than the shared mobile rule above, so it would otherwise keep the 3-column
     desktop grid below 759px and squeeze the card-detail column. Match it here
     so the mini-inbox collapses to the same 2-column/2-row layout as /chats/. */
  .cc-card-mini-inbox .cc-chat-inbox__row-link { grid-template-columns: 58px minmax(0, 1fr); }
  .cc-chat-inbox__avatars { width: 58px; }
  .cc-chat-inbox__copy { grid-column: 2; }
  .cc-chat-inbox__last-message { grid-column: 1 / -1; }
  .cc-chat-inbox__meta { grid-column: 1; grid-row: 2; justify-self: start; text-align: left; }
  .cc-chat-inbox__actions { grid-column: 2; grid-row: 2; justify-self: end; }
  .cc-chat-inbox__action-menu { position: fixed; top: auto; right: 14px; bottom: 14px; left: 14px; max-height: 70vh; overflow-y: auto; }
}

/* Sticker card (asset grid item) — see templates/components/sticker_card.html */
.cc-sticker { display: flex; flex-direction: column; }
.cc-sticker__art {
  position: relative;
  display: block;
  overflow: hidden;
  aspect-ratio: 4 / 5;
  text-decoration: none;
}
.cc-sticker__art--placeholder { background-image: linear-gradient(135deg, var(--pink-light), var(--cyan)); }
.cc-sticker__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.cc-nsfw-cover-blur { filter: blur(22px); transform: scale(1.06); }
.cc-sticker__nsfw-gate { position: absolute; inset: 50% auto auto 50%; transform: translate(-50%, -50%); white-space: nowrap; }
.cc-sticker__tier { position: absolute; top: 8px; left: 8px; }
.cc-sticker__tokens { position: absolute; bottom: 8px; right: 8px; font-size: 11px; padding: 3px 8px; }
.cc-sticker__body { padding: 12px 14px 14px; }
.cc-sticker__title { font-size: 17px; margin: 0; line-height: 1.15; }
.cc-sticker__sub { margin: 4px 0 0; font-size: 13px; color: var(--text-muted); }
.cc-sticker__metrics { display: flex; gap: 12px; margin-top: 10px; font-size: 12px; color: var(--text-body); }
.cc-metric-pills { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 12px; }
.cc-metric-pill { display: inline-flex; align-items: baseline; gap: 5px; padding: 4px 9px; border: 2px solid var(--ink); border-radius: 999px; background: var(--cyan); color: var(--ink); box-shadow: 2px 2px 0 var(--ink); font-size: 12px; }
.cc-metric-pill small { font-size: 9px; text-transform: uppercase; }
.cc-metric-pill--pink { background: var(--pink-light); }
.cc-metric-pill--gold { background: var(--yellow); }
.cc-chip--family-gender { background: var(--pink-light); color: var(--ink); }
.cc-chip--family-language-spoken,
.cc-chip--family-language-written { background: var(--cyan); color: var(--ink); }
.cc-chip--family-voice { background: var(--violet); color: var(--ink); }
.cc-chip--family-tense { background: var(--yellow); color: var(--ink); }
.cc-chip--family-llm,
.cc-chip--family-model { background: var(--orange); color: var(--ink); }
.cc-chip--family-vibes { background: var(--surface); }
.cc-stat-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); margin: 12px 0 8px; padding-top: 10px; border-top: 2px dashed var(--ink); }
.cc-stat-strip > span { padding: 4px 9px; text-align: center; border-right: 1px dashed var(--text-muted); }
.cc-stat-strip > span:last-child { border-right: 0; }
.cc-stat-strip strong { display: block; font-family: "Mochiy Pop One", sans-serif; font-size: 18px; color: var(--text-strong); }
.cc-stat-strip small { display: block; font: 700 9px "Space Mono", monospace; color: var(--text-muted); text-transform: uppercase; }
.cc-profile-bio { max-height: 8.2em; overflow: hidden; margin-top: 10px; padding: 10px 12px; white-space: pre-wrap; background: var(--surface-2); border: 1px dashed var(--ink); border-radius: 12px; }
.cc-profile-bio.is-expanded { max-height: none; }
.cc-profile-bio-toggle { border: 0; background: none; color: var(--violet); cursor: pointer; font: 700 11px "Space Mono", monospace; }
.cc-inbox-sender-avatar { width: 48px; height: 48px; flex: 0 0 48px; display: flex; align-items: center; justify-content: center; overflow: hidden; border: 2px solid var(--ink); border-radius: 50%; background: var(--surface-2); box-shadow: 2px 2px 0 var(--ink); font-family: "Mochiy Pop One", sans-serif; }
.cc-inbox-sender-avatar img { width: 100%; height: 100%; object-fit: cover; }
.cc-sender-badge { display: inline-block; padding: 1px 5px; border: 1px solid var(--ink); border-radius: 999px; background: var(--cyan); color: var(--ink); font: 700 9px "Space Mono", monospace; }
.cc-sender-badge--mod { background: var(--pink-light); }
.cc-sender-badge--owner { background: var(--yellow); }
.cc-message-bubble-wrap { max-width: 80%; }
.cc-message-bubble-wrap.is-mine { align-self: flex-end; text-align: right; }
.cc-message-bubble { white-space: pre-wrap; background: var(--surface-2); border: 2px solid var(--ink); border-radius: var(--r-card); padding: 8px 12px; text-align: left; }
.cc-message-bubble-wrap.is-mine .cc-message-bubble { background: color-mix(in srgb, var(--lime) 45%, var(--surface)); }
@media (max-width: 700px) {
  .cc-stat-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cc-stat-strip > span { border-right: 0; border-bottom: 1px dashed var(--text-muted); }
  .cc-message-bubble-wrap { max-width: 92%; }
}

/* --- Badges (Gold / Silver / Popular / Trending) --- */
.cc-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-weight: 800;
  font-size: 10px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  padding: 3px 8px;
  box-shadow: 2px 2px 0 var(--ink);
}
.cc-badge--gold { background: linear-gradient(135deg, #ffe49a, #f2b23c); color: #5b3a00; }
.cc-badge--silver { background: linear-gradient(135deg, #eff3f8, #c3cedb); color: #3a4656; }
.cc-badge--popular { background: linear-gradient(135deg, #ff93c2, #ff4f94); color: #fff; }
.cc-badge--trending { background: linear-gradient(135deg, #a6e4ff, #37b6f2); color: #073049; }
.cc-badge--private { background: var(--surface-2); color: var(--text-muted); border-style: dashed; }
.cc-badge--draft,
.cc-badge--pending-review {
  background: var(--surface-2);
  color: var(--text-muted);
  white-space: nowrap;
}
.cc-badge--draft { border-style: dashed; }
.cc-badge--pending-review {
  font-size: 9px;
  padding-inline: 6px;
}
.cc-badge--collection { background: linear-gradient(135deg, #d0f0ff, #9bd8f5); color: #0a4060; }
.cc-badge--lorebook { background: linear-gradient(135deg, #e6d5ff, #b89de0); color: #2d1a5e; }
.cc-badge--prompt { background: linear-gradient(135deg, #d4f7d4, #82d982); color: #1a3d1a; }

/* --- Mythic (#264): holographic/sparkling badge --- */
/* Doubled class beats html[data-theme="dark"] a { color } (this badge is an
   <a>, unlike the other span-based badges, so it needs the extra specificity). */
.cc-badge.cc-badge--mythic {
  background: linear-gradient(120deg, #ff9ad5, #ffd699, #9adfff, #d4a9ff, #ff9ad5);
  background-size: 300% 100%;
  color: #2a1145;
  text-decoration: none;
  animation: cc-mythic-shimmer 4s linear infinite;
}
@keyframes cc-mythic-shimmer {
  0% { background-position: 0% 50%; }
  100% { background-position: 300% 50%; }
}
@media (prefers-reduced-motion: reduce) {
  .cc-badge.cc-badge--mythic { animation: none; background-position: 0% 50%; }
}
.cc-badge.cc-badge--vip {
  background: linear-gradient(135deg, #d8fbff, #a9d8ff 45%, #d8c4ff);
  border-color: #5c4e84;
  color: #251c40;
  text-decoration: none;
}

/* --- Theme toggle chip --- */
.cc-theme-toggle {
  width: 38px; height: 38px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  background: var(--surface);
  box-shadow: 2px 2px 0 var(--ink);
  cursor: pointer;
  font-size: 16px;
}

/* Dark mode: neutral (uncolored) buttons + the theme toggle would be dark-on-dark.
   Give them light text + a visible light outline. Colored variants keep their look. */
html[data-theme="dark"] .cc-theme-toggle,
html[data-theme="dark"] .cc-btn:not([disabled]):not(.cc-btn--pink):not(.cc-btn--cyan):not(.cc-btn--yellow):not(.cc-btn--lime) {
  background: var(--surface-2);
  color: var(--text-strong);
  border-color: rgba(255, 255, 255, 0.30);
  box-shadow: 3px 3px 0 rgba(0, 0, 0, 0.55);
}

/* --- Auth pages (django-allauth) ---
   allauth emits plain HTML (h1/p/form/label/input/button/.helptext + a
   social <ul>); scoped under .cc-auth (set on <main> by the layout override). */
.cc-auth {
  max-width: 460px;
  margin: 28px auto 8px;
}
.cc-auth h1 {
  font-size: 34px;
  text-align: center;
  margin: 0 0 6px;
}
.cc-auth > p {
  text-align: center;
  color: var(--text-muted);
  margin: 0 0 22px;
  font-size: 14px;
}
.cc-auth a { color: var(--pink); text-decoration: none; font-weight: 800; }
.cc-auth a:hover { text-decoration: underline; }

.cc-auth form {
  background: var(--surface);
  border: 2px solid var(--ink);
  border-radius: var(--r-panel);
  box-shadow: 6px 7px 0 var(--shadow);
  padding: 24px 24px 26px;
  display: flex;
  flex-direction: column;
}
.cc-auth form p {
  margin: 0 0 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
/* Checkbox rows (e.g. "Remember me") go horizontal. */
.cc-auth form p:has(input[type="checkbox"]) {
  flex-direction: row;
  align-items: center;
  gap: 8px;
}
.cc-auth label { font-weight: 800; font-size: 13px; color: var(--text-strong); }
.cc-auth form > label { display: grid; gap: 4px; margin-bottom: 12px; }
.cc-auth form > label > .cc-mono { color: var(--text-strong); font-size: 12px; font-weight: 700; }
.cc-auth-toggle { display: flex !important; margin: 8px 0 14px !important; }
.cc-auth-toggle input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.cc-auth-toggle input:checked + .cc-toggle { background: var(--lime); }
.cc-auth-toggle input:checked + .cc-toggle::after { transform: translateX(21px); }
.cc-auth-toggle input:focus-visible + .cc-toggle { outline: 3px solid var(--cyan); outline-offset: 2px; }
.cc-auth-password-note { margin: -2px 0 14px; color: var(--text-muted); font: 11.5px "Space Mono", monospace; }
.cc-auth input[type="email"],
.cc-auth input[type="password"],
.cc-auth input[type="text"] {
  width: 100%;
  font-family: inherit;
  font-weight: 600;
  font-size: 15px;
  color: var(--text-strong);
  background: var(--surface-2);
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  padding: 10px 16px;
  box-shadow: 3px 3px 0 var(--cyan);
}
.cc-auth input:focus { outline: none; box-shadow: 3px 3px 0 var(--pink); }
.cc-auth .helptext { font-size: 12px; color: var(--text-muted); }
.cc-auth .helptext ul { margin: 4px 0 0; padding-left: 18px; }
.cc-auth .errorlist {
  list-style: none;
  margin: 2px 0 0;
  padding: 0;
  color: var(--pink);
  font-size: 13px;
  font-weight: 700;
}
.cc-auth button[type="submit"] {
  margin-top: 8px;
  font-family: "Mochiy Pop One", sans-serif;
  font-size: 15px;
  color: #fff;
  background: linear-gradient(135deg, var(--pink-light), var(--pink));
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  padding: 11px 18px;
  box-shadow: 3px 3px 0 var(--ink);
  cursor: pointer;
  transition: transform 0.06s ease, box-shadow 0.06s ease;
}
.cc-auth button[type="submit"]:hover { transform: translateY(-2px); }
.cc-auth button[type="submit"]:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--ink); }

/* --- Forms / upload / card detail --- */
.cc-form-errors {
  color: var(--pink);
  font-weight: 700;
  font-size: 13px;
  list-style: none;
  padding-left: 0;
  margin: 6px 0;
}
input[type="file"] {
  display: block;
  width: 100%;
  font-family: inherit;
  font-weight: 600;
  color: var(--text-body);
  border: 2px dashed var(--ink);
  border-radius: var(--r-card);
  padding: 18px;
  background: var(--surface-2);
  cursor: pointer;
}
.cc-reviewing { position: relative; overflow: hidden; }
.cc-reviewing::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent, var(--cyan), transparent);
  animation: cc-scan 2.4s linear infinite;
}
@keyframes cc-scan { 0% { transform: translateY(0); } 100% { transform: translateY(240px); } }
.cc-checklist { list-style: none; padding-left: 0; margin: 10px 0 0; font-size: 13px; line-height: 1.9; }

/* Editable textareas */
.cc-edit-area {
  width: 100%;
  font-family: inherit;
  font-weight: 600;
  font-size: 14px;
  color: var(--text-strong);
  background: var(--surface-2);
  border: 2px solid var(--ink);
  border-radius: var(--r-card);
  padding: 10px 12px;
  margin: 4px 0 14px;
}
.cc-edit-area[data-cc-autosize] { resize: vertical; }
html[data-theme="dark"] .cc-edit-area { border-color: rgba(255, 255, 255, 0.25); }
.cc-card-edit-help {
  margin: 2px 0 6px;
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.45;
}
.cc-card-edit-readonly {
  color: var(--text-muted);
  background: color-mix(in srgb, var(--surface-2) 72%, var(--ink) 4%);
  cursor: default;
}

/* Clamp + tabs for first-message preview */
.cc-clamp { display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; }
.cc-collection-chat-greeting {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 10px;
}
.cc-collection-chat-greeting > input { margin-top: .3em; accent-color: var(--pink); }
.cc-collection-chat-greeting:has(> input:checked) { background: color-mix(in srgb, var(--lime) 35%, var(--surface)); }
.cc-collection-chat-greeting__toggle {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  min-width: 0;
  gap: 10px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--text-body);
  font: inherit;
  line-height: 1.5;
  text-align: left;
  cursor: pointer;
}
.cc-collection-chat-greeting__toggle::after {
  content: "⌄";
  color: var(--violet);
  font-size: 18px;
  font-weight: 900;
  line-height: 1;
}
.cc-collection-chat-greeting__text {
  display: -webkit-box;
  min-width: 0;
  overflow: hidden;
  overflow-wrap: anywhere;
  white-space: pre-wrap;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
}
.cc-collection-chat-greeting.is-expanded .cc-collection-chat-greeting__text { display: block; }
.cc-collection-chat-greeting.is-expanded .cc-collection-chat-greeting__toggle::after { content: "⌃"; }
.cc-collection-chat-greeting__toggle:focus-visible {
  outline: 3px solid var(--cyan);
  outline-offset: 3px;
}
.cc-tab {
  border: 2px solid var(--ink);
  background: var(--surface);
  border-radius: var(--r-pill);
  padding: 4px 12px;
  font-weight: 800;
  font-size: 12px;
  cursor: pointer;
  color: var(--text-strong);
  text-decoration: none;
}
.cc-tabs { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cc-tabs a { text-decoration: none; }
.cc-tab.is-active { background: var(--lime); color: var(--ink); }
html[data-theme="dark"] .cc-tab { border-color: rgba(255, 255, 255, 0.25); color: var(--text-strong); }
html[data-theme="dark"] .cc-tab.is-active { color: var(--ink); }
.cc-report__axis { margin: 10px 0; font-size: 14px; }
.cc-report__axis p { margin: 2px 0 0; color: var(--text-muted); font-size: 13px; }
.cc-stars { display: inline-flex; gap: 2px; }
.cc-star { color: var(--text-muted); }
.cc-star.is-on { color: #f2b23c; }
.cc-regrade-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin: 12px 0 0;
}

/* --- Footer --- */
.cc-footer {
  margin: 48px 0 32px;
  color: var(--text-muted);
  font-size: 14px;
  text-align: center;
}
.cc-footer .cc-mono { display: block; margin-top: 6px; }

/* "Me" dropdown menu (nav, issue #5) */
.cc-menu { position: relative; display: inline-block; }
.cc-menu > summary { list-style: none; cursor: pointer; }
.cc-menu > summary::-webkit-details-marker { display: none; }
.cc-menu__panel {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 60;
  min-width: 210px; padding: 6px; display: flex; flex-direction: column; gap: 2px;
  background: var(--surface); border: 2px solid var(--ink);
  box-shadow: 4px 4px 0 var(--ink); border-radius: 10px;
}
.cc-menu__item {
  display: block; width: 100%; text-align: left; padding: 9px 11px;
  border: none; background: none; cursor: pointer; font: inherit;
  color: var(--ink); border-radius: 6px; text-decoration: none;
  white-space: nowrap;
}
html[data-theme="dark"] .cc-menu__item { color: #f3ecff; }
.cc-menu__item:hover { background: var(--surface-2); }
.cc-menu__sep { height: 1px; background: var(--ink); opacity: .15; margin: 4px 2px; }

/* Disabled / busy buttons after submit (issue #8) */
button[disabled], .cc-btn.is-busy, .cc-chip.is-busy { opacity: .55; cursor: not-allowed; }
.cc-btn[disabled] {
  opacity: 1;
  color: var(--text-muted);
  background: var(--surface-2);
  border-color: color-mix(in srgb, var(--ink) 35%, transparent);
  box-shadow: none;
  cursor: not-allowed;
  transform: none;
}

/* Sticker-bomb playful tilt to match the original design (P8-5).
   Cards in a grid sit at slight alternating angles and straighten on hover. */
.cc-card-grid > * { transition: transform .12s ease, box-shadow .12s ease; }
.cc-card-grid > *:nth-child(3n+1) { transform: rotate(-3.5deg); }
.cc-card-grid > *:nth-child(3n+2) { transform: rotate(0.9deg); }
.cc-card-grid > *:nth-child(3n)   { transform: rotate(3.5deg); }
.cc-card-grid > *:hover { transform: rotate(0deg) translateY(-3px); z-index: 1; }
@media (max-width: 760px) {
  .cc-card-grid > *:nth-child(3n+1) { transform: rotate(-2deg); }
  .cc-card-grid > *:nth-child(3n+2) { transform: rotate(0.7deg); }
  .cc-card-grid > *:nth-child(3n)   { transform: rotate(2deg); }
}
@media (prefers-reduced-motion: reduce) {
  .cc-card-grid > *, .cc-card-grid > *:hover, .cc-card-grid > *:nth-child(3n+1),
  .cc-card-grid > *:nth-child(3n+2), .cc-card-grid > *:nth-child(3n) {
    transform: none; transition: none;
  }
}

/* Feature-page screenshot: same tilt + straighten-on-hover as the browse grid,
   so a demo shot on /features/ reads as the same design system (#575). */
.cc-feature-shot { transform: rotate(-1.5deg); transition: transform .12s ease, box-shadow .12s ease; }
.cc-feature-shot:hover { transform: rotate(0deg) translateY(-3px); }
@media (prefers-reduced-motion: reduce) {
  .cc-feature-shot, .cc-feature-shot:hover { transform: none; transition: none; }
}

/* Card hover summary overlaid on the image (issue #39) */
.cc-sticker__summary {
  position: absolute; left: 0; right: 0; bottom: 0;
  background: rgba(255, 255, 255, 0.88); color: #111;
  font-size: 12px; line-height: 1.25; padding: 8px 10px;
  max-height: 72%; overflow: hidden;
  opacity: 0; transition: opacity 0.12s ease; pointer-events: none;
}
.cc-sticker:hover .cc-sticker__summary,
.cc-sticker:focus-within .cc-sticker__summary { opacity: 1; }

/* --- The gossip wall (#302) ---------------------------------------------
   Post cards get bucketed size/brightness scaling by reaction_count, per
   the design mock: 0 reactions is a quiet baseline card, 1-4 nudges up,
   5-9 ("popular", >= GOSSIP_POPULAR_THRESHOLD in catalog/views_gossip.py)
   gets a POPULAR badge + glow, 10+ ("gold") gets the biggest/brightest
   treatment + a GOLD badge. Buckets (not continuous math) so the effect is
   testable and consistent (assertContains on the class name). */
.cc-gossip-post {
  position: relative; display: flex; border-radius: 20px; overflow: hidden;
  border: 2.5px solid var(--ink); box-shadow: 4px 5px 0 var(--shadow);
  transition: transform .12s ease;
}
.cc-gossip-post__stripe {
  flex-shrink: 0; width: 64px; display: flex; align-items: center; justify-content: center;
  font-family: 'Mochiy Pop One', sans-serif; font-size: 26px; color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.25);
}
.cc-gossip-post__body { flex: 1; min-width: 0; padding: 16px 18px; }
.cc-gossip-post--bucket-0 { font-size: 13.5px; }
.cc-gossip-post--bucket-1 { font-size: 14.5px; }
.cc-gossip-post--bucket-2 {
  font-size: 16px; box-shadow: 5px 6px 0 var(--shadow), 0 0 22px rgba(255, 61, 144, .35);
}
.cc-gossip-post--bucket-3 {
  font-size: 17.5px; transform: scale(1.02);
  box-shadow: 6px 7px 0 var(--shadow), 0 0 32px rgba(255, 209, 77, .55);
}
.cc-gossip-post__badge {
  position: absolute; top: 10px; left: 10px; z-index: 1;
  display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px;
  border-radius: 999px; font-family: 'Mochiy Pop One', sans-serif; font-size: 10.5px;
  border: 1.5px solid var(--ink); box-shadow: 2px 2px 0 var(--shadow);
}
.cc-gossip-post__badge--popular { background: linear-gradient(135deg, #ff9ec2, #ff3d90); color: #fff; }
.cc-gossip-post__badge--gold { background: linear-gradient(135deg, #ffe9a6, #ffd24d); color: #5b3a00; }
.cc-gossip-post__vibe {
  display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px;
  border-radius: 999px; font-weight: 800; font-size: 10.5px; background: var(--ink); color: #fff;
}
.cc-mention {
  background: rgba(138, 79, 214, .16); color: var(--violet); font-weight: 700;
  padding: 0 3px; border-radius: 5px; text-decoration: none;
}
.cc-gossip-reaction {
  display: inline-flex; align-items: center; gap: 5px; padding: 5px 11px;
  border-radius: 999px; border: 1.5px solid var(--ink); background: var(--surface-2);
  font-weight: 700; font-size: 12.5px; cursor: pointer; color: var(--text-strong);
}
.cc-gossip-reaction--mine { background: var(--lime); }
.cc-gossip-reaction--add {
  border-style: dashed; background: transparent; color: var(--text-muted);
  width: 30px; height: 30px; justify-content: center; padding: 0; font-size: 15px;
}
@media (prefers-reduced-motion: reduce) { .cc-sticker__summary { transition: none; } }

/* Moderation taxonomy — Sitting 2 delivered mock (#1137). */
.sr-only {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.cc-mod-tags-heading,
.cc-mod-tag-section-heading {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
}
.cc-mod-tags-heading { justify-content: space-between; margin: 0 0 12px; }
.cc-mod-tags-heading p { margin: 0; }
.cc-mod-tags-toolbar {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 20px;
}
.cc-mod-tags-toolbar > .cc-btn { margin-left: auto; }
.cc-mod-tags-search { width: min(320px, 100%); }
.cc-mod-tags-search input {
  width: 100%; font: 12px 'Space Mono', monospace; color: var(--text-strong);
  background: var(--surface); border: 2px solid var(--ink); border-radius: 14px;
  padding: 10px 14px; box-shadow: 4px 4px 0 var(--cyan); outline: none;
}
.cc-mod-tags-search input:focus-visible { outline: 2.5px solid var(--cyan); outline-offset: 2px; }
.cc-mod-tags-toolbar .cc-segment button {
  border: 0; border-left: 2px solid var(--ink); padding: 8px 14px;
  color: var(--text-strong); background: var(--surface); font: 800 12px 'M PLUS Rounded 1c', sans-serif;
  cursor: pointer;
}
.cc-mod-tags-toolbar .cc-segment button:first-child { border-left: 0; }
.cc-mod-tags-toolbar .cc-segment button.is-active { color: var(--ink); background: var(--lime); }
.cc-mod-tag-dupes { margin-bottom: 20px; box-shadow: 5px 6px 0 var(--pink); }
.cc-mod-tag-section-heading h2 { margin: 0; font-size: 18px; }
.cc-mod-tag-dupe-row {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 12px;
}
.cc-mod-tag-dupe-row > .cc-btn { margin-left: auto; }
.cc-mod-tag-families { padding-block: 8px; margin-bottom: 20px; }
.cc-mod-tag-family { border-bottom: 1.5px dashed color-mix(in srgb, var(--ink) 18%, transparent); }
.cc-mod-tag-family:last-child { border-bottom: 0; }
.cc-mod-tag-family > summary { gap: 12px; }
.cc-mod-tag-family-name { font: 15px 'Mochiy Pop One', sans-serif; }
.cc-mod-tag-settings-label { margin-left: auto; color: var(--violet); font: 10.5px 'Space Mono', monospace; }
.cc-mod-tag-family-body { padding: 2px 0 16px 34px; }
.cc-mod-tag-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.cc-mod-tag-chips small { color: var(--text-muted); font: 9.5px 'Space Mono', monospace; }
.cc-mod-tag-edit > summary { cursor: pointer; list-style: none; }
.cc-mod-tag-edit > summary::-webkit-details-marker { display: none; }
.cc-mod-tag-edit[open] { flex: 1 1 100%; }
.cc-mod-tag-edit[open] > summary { width: fit-content; color: var(--ink); background: var(--lime); box-shadow: 2px 2px 0 var(--shadow); }
.cc-mod-tag-edit > form {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 8px;
  padding: 10px 12px; border: 1.5px dashed color-mix(in srgb, var(--ink) 28%, transparent);
  border-radius: 14px; background: color-mix(in srgb, var(--surface-2) 70%, transparent);
}
.cc-mod-tag-edit > form .cc-toggle-row { margin-block: 0; }
.cc-mod-tag-settings {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 14px;
  padding-top: 12px; border-top: 1.5px dashed color-mix(in srgb, var(--ink) 18%, transparent);
}
.cc-mod-tag-settings .cc-mono { display: flex; align-items: center; gap: 7px; font-size: 11px; }
.cc-mod-tag-remix { flex: 1 1 100%; flex-wrap: wrap; }
.cc-mod-tag-remix .cc-field { flex: 1 1 340px; }
.cc-mod-tag-strays { margin-bottom: 90px; }
.cc-mod-tag-strays .cc-mod-tag-chips { margin-top: 14px; }
.cc-mod-tag-pick { cursor: pointer; }
.cc-mod-tag-pick > input { position: absolute; inline-size: 1px; block-size: 1px; opacity: 0; pointer-events: none; }
.cc-mod-tag-pick > input:checked + .cc-chip { color: var(--ink); background: var(--lime); border-width: 2px; box-shadow: 2px 2px 0 var(--shadow); }
.cc-mod-tag-pick > input:focus-visible + .cc-chip { outline: 2.5px solid var(--cyan); outline-offset: 2px; }
.cc-mod-tag-check { display: none; }
.cc-mod-tag-pick > input:checked + .cc-chip .cc-mod-tag-check { display: inline; }
.cc-mod-tag-bulk {
  position: fixed; z-index: 30; left: 50%; bottom: 22px; transform: translateX(-50%);
  display: flex; align-items: center; gap: 12px; width: max-content; max-width: calc(100vw - 24px);
  padding: 10px 12px 10px 22px; color: #f3ecff; background: #14121f;
  border-radius: 999px; box-shadow: 5px 5px 0 var(--pink);
}
.cc-mod-tag-bulk .cc-select { color: #f3ecff; background-color: #2c2442; border-color: rgba(255,255,255,.35); box-shadow: none; }
.cc-mod-tag-bulk .cc-select option { color: #14121f; background: #fff; }
.cc-mod-tag-clear { border: 0; color: #9c8fc2; background: transparent; font: 11px 'Space Mono', monospace; cursor: pointer; }
[data-tag-section][hidden], [data-tag-search-row][hidden] { display: none !important; }
@media (max-width: 700px) {
  .cc-mod-tags-toolbar > .cc-btn { margin-left: 0; }
  .cc-mod-tag-family > summary { align-items: flex-start; flex-wrap: wrap; }
  .cc-mod-tag-settings-label { width: 100%; margin-left: 34px; }
  .cc-mod-tag-family-body { padding-left: 0; }
  .cc-mod-tag-bulk { bottom: 10px; flex-wrap: wrap; justify-content: center; border-radius: 20px; padding: 10px 14px; }
  .cc-mod-tag-bulk .cc-mono { width: 100%; text-align: center; }
}

/* Media lightbox (#1153/#2200): full-viewport overlay for click-to-enlarge card
   and collection covers plus approved gallery videos. Theme-aware via CSS vars;
   media is scaled to fit the viewport without cropping. */
body.cc-lightbox-open { overflow: hidden; }
.cc-lightbox[hidden] { display: none; }
.cc-lightbox {
  position: fixed; inset: 0; z-index: 200;
  display: flex; align-items: center; justify-content: center;
  padding: 2vmin;
  background: color-mix(in srgb, var(--ink) 82%, transparent);
}
.cc-lightbox__img,
.cc-lightbox__video {
  max-width: 95vw; max-height: 95vh; object-fit: contain;
  border-radius: var(--r-card);
  box-shadow: 0 10px 40px rgba(0,0,0,.5);
}
.cc-lightbox__img[hidden],
.cc-lightbox__video[hidden] { display: none; }
.cc-lightbox__close {
  position: absolute; top: 14px; right: 16px;
  width: 44px; height: 44px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  font-size: 22px; cursor: pointer;
  color: var(--text-strong); background: var(--surface);
  border: 2px solid var(--ink); border-radius: 50%;
  box-shadow: 3px 3px 0 var(--ink);
}
.cc-lightbox__close:hover { transform: translateY(-1px); }
.cc-lightbox__link[hidden] { display: none; }
.cc-lightbox__link {
  position: absolute; bottom: 18px; left: 50%; transform: translateX(-50%);
  padding: 8px 16px; font-size: 14px; font-weight: 700; white-space: nowrap;
  color: var(--text-strong); background: var(--surface);
  border: 2px solid var(--ink); border-radius: 999px;
  box-shadow: 3px 3px 0 var(--ink); text-decoration: none;
}
.cc-lightbox__link:hover { transform: translateX(-50%) translateY(-1px); }

/* Gallery strip items (#1456/#1457): each 72px thumbnail plus its owner/staff
   controls stack in a fixed-width column so a row of them wraps cleanly in the
   narrow left card column and the forced-mobile view without horizontal
   overflow. The thumbnail size itself is unchanged. */
.gallery-item {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
  width: 78px; /* 72px image + 2*3px anchor padding */
  max-width: 100%;
}
.gallery-make-default {
  margin: 0;
}
.gallery-make-default-btn,
.gallery-restore-prev-btn {
  display: block;
  width: 100%;
  box-sizing: border-box;
  padding: 3px 4px;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  color: var(--text-strong);
  background: var(--surface);
  border: 1.5px solid var(--ink);
  border-radius: 6px;
  cursor: pointer;
  overflow-wrap: anywhere;
}
.gallery-make-default-btn:hover,
.gallery-restore-prev-btn:hover {
  background: var(--lime, var(--surface));
  transform: translateY(-1px);
}
.gallery-make-default-btn:focus-visible,
.gallery-restore-prev-btn:focus-visible {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
}
.gallery-restore-prev-btn {
  width: auto;
  display: inline-block;
}
.cc-my-download-row {
  display: grid;
  grid-template-columns: minmax(220px, 300px) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

@media (max-width: 720px) {
  .cc-my-download-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .cc-my-download-row > .cc-card {
    max-width: 300px;
  }
}
