/* Universe owns the workspace edges; other application views retain their spacing. */
.workspace-view.universe-view {
  padding: 0;
  min-width: 0;
}
.universe {
  --uv-line: var(--season-border, #56534b);
  --uv-muted: var(--season-text-muted, #b8b5ab);
  --uv-accent: var(--season-primary, #e6c880);
  box-sizing: border-box;
  width: 100%;
  padding: 16px;
  color: var(--season-text, #f5f3ee);
  background:
    var(
      --season-gradient-atmosphere,
      radial-gradient(ellipse at top, #e6c8801e, transparent 65%)
    ),
    var(--season-background, #090b10);
}
.universe *,
.universe *::before,
.universe *::after {
  box-sizing: border-box;
}
.uv-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
.uv-heading h1 {
  font-size: 18px;
  font-weight: 400;
  letter-spacing: 2px;
  margin: 6px 0;
}
.universe small {
  color: var(--uv-accent);
  font-size: 10px;
  letter-spacing: 1.5px;
}
.universe p {
  color: var(--uv-muted);
  line-height: 1.6;
  font-size: 13px;
}
.universe button,
.uv-editor button {
  color: inherit;
  background: var(--season-surface, #171a20);
  border: 1px solid var(--uv-line);
  border-radius: 8px;
  padding: 10px 12px;
  cursor: pointer;
  font: inherit;
  font-size: 12px;
}
.universe button:hover,
.uv-editor button:hover {
  background: var(--season-hover, #302d27);
  border-color: var(--season-primary, #e6c880);
}
.universe :focus-visible,
.uv-editor :focus-visible {
  outline: 2px solid var(--season-primary, #e6c880);
  outline-offset: 3px;
}
.universe button:disabled {
  opacity: 0.45;
  cursor: default;
}
.uv-layout {
  display: grid;
  grid-template-columns: clamp(160px, 17vw, 300px) minmax(0, 1fr) clamp(
      140px,
      12vw,
      230px
    );
  gap: 16px;
  align-items: start;
}
.uv-portrait-rail,
.uv-cards-rail {
  min-width: 0;
  background: linear-gradient(
    150deg,
    var(--season-surface, #171a20),
    var(--season-background-secondary, #101217)
  );
  border: 1px solid var(--uv-line);
  border-radius: 12px;
  padding: 12px;
}
.uv-portrait {
  position: relative;
  aspect-ratio: 2/3;
  margin-top: 14px;
  overflow: hidden;
  background:
    var(--season-gradient-atmosphere, none),
    var(--season-background-secondary, #101217);
  border-radius: 8px;
}
.uv-portrait img,
.uv-portrait video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.uv-portrait-empty {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  text-align: center;
  color: var(--season-primary, #e6c880);
  font-size: 40px;
}
.uv-portrait button {
  position: absolute;
  bottom: 12px;
  left: 12px;
  right: 12px;
}
.uv-portrait-rail h2 {
  font-size: 20px;
  font-weight: 400;
  overflow-wrap: anywhere;
}
.uv-main {
  min-width: 0;
}
.uv-stage {
  aspect-ratio: 16/9;
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border: 1px solid var(--uv-line);
  border-radius: 12px;
  background:
    var(--season-gradient-atmosphere, none), var(--season-background, #090b10);
  box-shadow: 0 20px 70px #0006;
}
.uv-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  z-index: 1;
}
.uv-video.uv-preload {
  opacity: 0;
  pointer-events: none;
  z-index: 0;
}
.universe [hidden] {
  display: none !important;
}
.uv-empty {
  position: absolute;
  inset: 0;
  padding: clamp(16px, 3vw, 48px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  overflow: auto;
}
.uv-empty > span {
  font-size: 50px;
  color: var(--uv-accent);
}
.uv-empty h2 {
  font-size: clamp(18px, 2vw, 30px);
  font-weight: 400;
  margin: 12px 0;
}
.uv-entry-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
  gap: 12px;
  overflow: auto;
  margin-bottom: 16px;
}
.uv-entry-grid section {
  padding: 12px;
  border: 1px solid var(--uv-line);
  border-radius: 10px;
  background: var(--season-background-secondary, #101217);
}
.uv-entry-grid h3 {
  font-weight: 400;
  margin: 4px 0 12px;
}
.uv-entry-grid button {
  display: block;
  width: 100%;
  text-align: left;
  margin-top: 8px;
  overflow-wrap: anywhere;
}
.uv-entry-grid button small {
  display: block;
  margin-top: 8px;
  font-size: 9px;
}
.uv-cards {
  max-height: 72vh;
  overflow: auto;
  display: grid;
  gap: 12px;
  margin-top: 14px;
  padding: 3px;
}
.uv-cards button {
  padding: 6px;
  text-align: left;
  min-width: 0;
}
.uv-card-art {
  display: grid;
  place-items: center;
  position: relative;
  aspect-ratio: 2/3;
  border-radius: 5px;
  background:
    var(--season-gradient-atmosphere, none),
    var(--season-surface-elevated, #22252c);
  color: var(--season-primary, #e6c880);
  font-size: 35px;
  overflow: hidden;
}
.uv-card-art img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.uv-cards strong {
  display: block;
  font-size: 12px;
  font-weight: 500;
  margin: 8px 3px;
  overflow-wrap: anywhere;
}
.uv-cards [aria-pressed="true"] {
  border-color: var(--uv-accent);
  box-shadow: 0 0 18px var(--season-glow, #e6c88024);
  background: var(--season-active, #393325);
}
.uv-tools {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
  padding: 12px 0;
}
.uv-tools button {
  font-size: 12px;
  padding: 10px 14px;
}
.uv-actions {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 5;
  display: flex;
  flex-wrap: wrap;
  align-content: flex-end;
  gap: 8px;
  padding: 24px 16px 16px;
  max-height: 45%;
  overflow: auto;
  background: linear-gradient(
    transparent,
    color-mix(in srgb, var(--season-background, #090b10) 95%, transparent)
  );
}
.uv-actions button {
  padding: 12px 18px;
  text-align: left;
  overflow-wrap: anywhere;
  border-color: var(--uv-accent);
  box-shadow: 0 2px 12px #0005;
}
.uv-no-actions {
  color: var(--uv-muted);
  font-size: 12px;
}
.uv-status {
  position: absolute;
  z-index: 4;
  top: 12px;
  right: 12px;
  max-width: 70%;
  padding: 10px;
  border: 1px solid var(--uv-line);
  background: color-mix(
    in srgb,
    var(--season-background, #090b10) 94%,
    transparent
  );
  border-radius: 8px;
  font-size: 12px;
  pointer-events: none;
}
.uv-status:empty {
  display: none;
}
.uv-arrival {
  position: absolute;
  top: 0;
  left: 0;
  padding: 24px;
  max-width: 85%;
  z-index: 3;
  background: linear-gradient(
    135deg,
    color-mix(in srgb, var(--season-background, #090b10) 94%, transparent),
    transparent
  );
  opacity: 0;
  transform: translateY(-8px);
  transition:
    opacity 0.5s,
    transform 0.5s;
  pointer-events: none;
}
.uv-arrival.is-visible {
  opacity: 1;
  transform: none;
}
.uv-arrival h2 {
  margin: 8px 0;
  font-weight: 400;
  text-transform: uppercase;
  font-size: clamp(16px, 2vw, 32px);
  letter-spacing: 2px;
  text-shadow: 0 2px 8px #000;
}
.universe:fullscreen {
  min-height: 100vh;
  overflow: auto;
}
@media (min-width: 1001px) {
  .uv-layout {
    /* Equal rails keep the world centered in the entire workspace. */
    grid-template-columns: minmax(180px, 1fr) minmax(0, 3fr) minmax(180px, 1fr);
    align-items: stretch;
  }
  .uv-main {
    width: 100%;
    align-self: start;
  }
  .uv-portrait-rail {
    display: flex;
    flex-direction: column;
  }
  .uv-portrait {
    flex: 1;
    min-height: 200px;
    aspect-ratio: auto;
  }
  .uv-portrait-rail h2 {
    margin: 14px 0 4px;
  }
  .uv-portrait-rail > p {
    margin: 4px 0 0;
  }
  .uv-cards-rail {
    overflow: hidden;
  }
  .uv-cards {
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  }
}
@media (max-width: 1000px) {
  .uv-layout {
    grid-template-columns: 130px minmax(0, 1fr);
  }
  .uv-cards-rail {
    grid-column: 1/-1;
  }
  .uv-cards {
    display: flex;
    max-height: 230px;
    overflow: auto;
  }
  .uv-cards button {
    flex: 0 0 105px;
  }
  .uv-empty {
    justify-content: flex-start;
  }
}
@media (max-width: 620px) {
  .universe {
    padding: 10px 10px 85px;
  }
  .uv-layout {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .uv-main {
    grid-row: 2;
  }
  .uv-portrait-rail {
    display: grid;
    grid-template-columns: 65px minmax(0, 1fr);
    gap: 6px 12px;
    align-items: center;
  }
  .uv-portrait-rail > small {
    grid-column: 2;
  }
  .uv-portrait {
    grid-column: 1;
    grid-row: 1/4;
    margin: 0;
  }
  .uv-portrait-rail h2,
  .uv-portrait-rail p {
    margin: 0;
  }
  .uv-portrait-rail p {
    font-size: 10px;
  }
  .uv-heading h1 {
    font-size: 15px;
  }
  .uv-arrival {
    padding: 12px;
  }
  .uv-tools {
    justify-content: flex-start;
    gap: 6px;
  }
  .uv-tools button {
    padding: 10px;
    font-size: 11px;
  }
  .uv-actions {
    padding: 18px 8px 8px;
    gap: 6px;
  }
  .uv-actions button {
    padding: 9px 12px;
    font-size: 11px;
  }
  .uv-entry-grid {
    overflow: visible;
  }
  .uv-empty {
    padding: 12px;
  }
  .uv-status {
    font-size: 10px;
    top: 6px;
    right: 6px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .universe *,
  .universe *::before,
  .universe *::after {
    animation: none !important;
    transition: none !important;
  }
}
.uv-editor {
  color: #e8eff8;
  background: #101c2a;
  border: 1px solid #466174;
  border-radius: 14px;
  width: min(580px, 92vw);
  max-height: 90vh;
  padding: 28px;
}
.uv-editor::backdrop {
  background: #020812cc;
  backdrop-filter: blur(8px);
}
.uv-editor form {
  display: grid;
  gap: 18px;
}
.uv-editor label {
  display: grid;
  gap: 8px;
  font-size: 12px;
  color: #b5c6d8;
}
.uv-editor input,
.uv-editor select {
  width: 100%;
  box-sizing: border-box;
  background: #0a1420;
  border: 1px solid #405168;
  border-radius: 6px;
  padding: 11px;
  color: #eff6ff;
  font: inherit;
}
.uv-editor p {
  font-size: 12px;
  line-height: 1.7;
  color: #a7b8ca;
  margin: 0;
}
.uv-editor footer {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}
.uv-inline-preview {
  width: 100%;
  max-height: 230px;
  background: #080f18;
  border-radius: 7px;
}
.uv-inline-preview:not([src]) {
  display: none;
}
.uv-sequence[hidden] {
  display: none;
}

/* Character progression is an overlay; the cinematic scene stays mounted. */
.ih-character-sheet{width:min(760px,94vw);max-height:88dvh;overflow:auto;color:#eef3ff;background:radial-gradient(ellipse at top right,#253a5266,transparent 65%),#101720;border:1px solid #768aa450;border-radius:22px;padding:28px;box-shadow:0 32px 100px #000b;font-family:inherit}
.ih-character-sheet::backdrop{background:#03080cb0;backdrop-filter:blur(5px)}
.ih-character-sheet header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.ih-character-sheet h2{font-size:clamp(26px,5vw,38px);margin:8px 0}.ih-character-sheet header small{color:#be9b62;letter-spacing:.16em;font-size:10px}.ih-character-sheet p{color:#aebdce}.ih-character-sheet button{font:inherit;color:inherit;cursor:pointer;border:1px solid #768aa43d;background:#1e2a38;border-radius:9px;padding:10px 16px}.ih-character-sheet button:focus-visible{outline:2px solid #e8c17d;outline-offset:3px}.ih-character-sheet nav{display:flex;gap:10px;border-bottom:1px solid #768aa43d;padding:22px 0 16px}.ih-character-sheet nav button{letter-spacing:.12em;font-size:12px;flex:1}.ih-character-sheet nav button[aria-pressed=true]{background:#b88c3730;border-color:#e8c17d;color:#f6d89e}.ih-ledger-note{font-size:12px}.ih-stat-list{display:grid;gap:12px}.ih-stat-list article{display:flex;align-items:center;gap:16px;padding:18px;border:1px solid #768aa430;border-radius:12px;background:linear-gradient(110deg,#29485b55,#1b263555)}.ih-stat-list h3{font-size:16px;margin:0 0 5px}.ih-stat-list small{color:#94b6b9;font-size:12px}.ih-stat-list strong{margin-left:auto;font-size:24px;font-variant-numeric:tabular-nums;color:#d5efff}.ih-resource-icon{font-size:30px;color:#8ed0e3}.ih-inventory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(94px,1fr));gap:10px}.ih-character-sheet .ih-item-slot{min-height:104px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 6px;background:linear-gradient(140deg,#36425780,#151f2e);border:1px solid #7f93aa50;border-radius:9px}.ih-item-slot span{font-size:27px;color:#d8bb84}.ih-item-slot small{font-size:10px;max-width:100%;overflow-wrap:anywhere}.ih-item-slot strong{font-size:13px;font-variant-numeric:tabular-nums;color:#f8db9e}.ih-character-sheet .ih-empty-slot{opacity:.35;min-height:104px;color:#788ba3;background:#18212d}.ih-sheet-detail{min-height:2.6em;font-size:13px;border-top:1px solid #768aa430;padding-top:18px}.uv-portrait-rail>[data-uv=character]{margin:12px 0;width:100%;padding:12px;border:1px solid #bca16a88;border-radius:10px;background:#b88c3722;color:#f4d99f}.uv-portrait-rail>[data-uv=sync]{padding:8px;background:#562e1e;color:#ffddbc;border:1px solid #c68d65;border-radius:6px}
@media(max-width:480px){.ih-character-sheet{padding:18px}.ih-stat-list article{gap:10px;padding:12px}.ih-stat-list strong{font-size:19px}.ih-inventory-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ih-stat-list article>div{min-width:0}.ih-stat-list h3{overflow-wrap:anywhere}.ih-stat-list strong{flex-shrink:0}
.uv-tools button:disabled { opacity: .45; cursor: not-allowed; }
.uv-energy-summary{display:grid;gap:8px;margin:14px 0;padding:16px;border:1px solid #75c4dc55;border-radius:12px;background:linear-gradient(135deg,#25425888,#101d2b);color:#d8f3ff}
.uv-energy-summary>span{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:#a1c3d7}
.uv-energy-summary>strong{font-size:32px;font-variant-numeric:tabular-nums;line-height:1.1}
.uv-energy-summary>small{font-size:12px;line-height:1.7;color:#a8c4c8}
.uv-energy-summary{min-width:0}.uv-energy-summary>strong{overflow-wrap:anywhere}
@media(max-width:620px){.uv-energy-summary{grid-column:1/-1}.uv-portrait-rail>[data-hero-context],.uv-portrait-rail>[data-uv=character],.uv-portrait-rail>[data-uv=sync]{grid-column:2}}
.ih-sheet-actions{display:flex;align-items:flex-start;gap:8px}.ih-character-sheet .ih-sheet-play{min-width:140px;min-height:52px;background:linear-gradient(135deg,#eed49b,#ad7c35);color:#14191f;border-color:#e8c17d;font-size:20px;font-weight:800;letter-spacing:.08em}
@media(max-width:480px){.ih-character-sheet .ih-sheet-play{min-width:92px;min-height:42px;font-size:15px;padding:8px}}
.ih-sheet-detail:empty{display:none}
.uv-produced-resource{display:grid;gap:6px;border-top:1px solid #75c4dc44;padding-top:12px;margin-top:4px;min-width:0}.uv-produced-resource[hidden]{display:none}.uv-produced-resource>span{font-size:12px;color:#c3dbeb;overflow-wrap:anywhere}.uv-produced-resource>strong{font-size:28px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.uv-produced-resource>small{font-size:11px;color:#a8c4c8}

.uv-actions .uv-create-path { border:1px dashed #b4d7bd; background:#1c312c; }
.uv-create-path small { font-size:9px; margin-left:8px; letter-spacing:.1em; }
.uv-growth { min-height:1.5em; color:#bed9c7; font-size:13px; padding:0 24px; }
.uv-area-image { width:100%; max-height:160px; object-fit:contain; border-radius:10px; }
.uv-location-audio { display:flex; flex-wrap:wrap; gap:12px; padding:12px; background:#11151c; color:#cbd3df; }
.uv-location-audio p { flex-basis:100%; margin:0; font-size:12px; }
.uv-location-audio iframe { border:0; max-width:100%; }

