* {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
}

body {
  background: var(--ui-shell-bg);
  color: var(--ui-text-primary);
  font-family: var(--spum-font);
  font-size: var(--spum-fs-sm);
}

button,
input {
  font: inherit;
}

button {
  border: 0;
  color: inherit;
  cursor: pointer;
}

a {
  color: inherit;
  text-decoration: none;
}

.sai-demo {
  --demo-topbar-h: 38px;
  --demo-inspector-w: 232px;
  --demo-chat-w: 252px;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: var(--demo-topbar-h) minmax(0, 1fr);
  background: var(--ui-shell-bg);
  color: var(--ui-text-primary);
}

.sai-demo__topbar {
  display: flex;
  align-items: center;
  gap: var(--spum-space-8);
  min-width: 0;
  padding: 0 var(--spum-space-10, 10px);
  background: var(--ui-cast-panel-bg);
  border-bottom: 1px solid var(--ui-border-weak);
}

.sai-demo__brand {
  display: inline-flex;
  align-items: center;
  gap: var(--spum-space-8);
  min-width: 0;
  padding-right: var(--spum-space-8);
  border-right: 1px solid var(--ui-border-weak);
}

.sai-demo__brand-mark {
  width: 26px;
  height: 26px;
  flex: 0 0 auto;
  border: 1px solid var(--ui-border-strong);
  border-radius: var(--spum-radius-md);
  background: var(--ui-control-bg);
  box-shadow: var(--ui-control-inset);
  position: relative;
}

.sai-demo__brand-mark::before,
.sai-demo__brand-mark::after {
  content: "";
  position: absolute;
  background: var(--ui-accent);
}

.sai-demo__brand-mark::before {
  left: 50%;
  top: 6px;
  width: 2px;
  height: 16px;
  transform: translateX(-50%);
}

.sai-demo__brand-mark::after {
  left: 6px;
  top: 50%;
  width: 16px;
  height: 2px;
  transform: translateY(-50%);
}

.sai-demo__brand strong,
.sai-demo__brand em {
  display: block;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.sai-demo__brand strong {
  font-size: 11px;
  line-height: 1.1;
  font-weight: var(--spum-fw-bold);
}

.sai-demo__brand em {
  margin-top: 2px;
  color: var(--ui-text-muted);
  font-size: 9px;
  font-style: normal;
  letter-spacing: 0;
}

.sai-demo__file-label {
  flex: 0 0 auto;
  color: var(--ui-text-faint);
  font-family: var(--spum-font-mono);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0;
}

.sai-live-chip,
.sai-preview-count,
.sai-demo__status {
  height: 24px;
  display: inline-flex;
  align-items: center;
  gap: var(--spum-space-8);
  min-width: 0;
  padding: 0 var(--spum-space-8);
  border: 1px solid var(--ui-border-weak);
  border-radius: var(--spum-radius-sm);
  background: var(--ui-control-bg);
  color: var(--ui-text-secondary);
  white-space: nowrap;
}

.sai-live-chip {
  color: var(--ui-success);
  border-color: color-mix(in srgb, var(--ui-success) 36%, var(--ui-border-mid));
  background: var(--spum-success-soft);
  font-weight: var(--spum-fw-bold);
}

.sai-live-chip i,
.sai-preview-count i,
.sai-demo__status-dot {
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--ui-success);
}

.sai-demo__status {
  margin-left: auto;
}

.sai-demo__status strong {
  max-width: 28vw;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: var(--spum-font-mono);
  font-size: 10px;
  font-weight: 800;
}

.sai-demo__top-actions {
  display: flex;
  gap: var(--spum-space-8);
}

.sai-icon-button,
.sai-inspector__actions button,
.sai-proposal__select {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--ui-border-mid);
  border-radius: var(--spum-radius-md);
  background: var(--ui-control-bg);
  color: var(--ui-text-primary);
  box-shadow: var(--ui-control-inset);
}

.sai-icon-button:hover,
.sai-inspector__actions button:hover,
.sai-proposal__select:hover {
  background: var(--ui-control-bg-hover);
  border-color: var(--ui-control-border-hover);
}

.sai-icon-button {
  width: 26px;
  height: 26px;
}

.sai-demo__workspace {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-columns: var(--demo-inspector-w) minmax(0, 1fr) var(--demo-chat-w);
  grid-template-areas: "inspector field chat";
}

.sai-field {
  grid-area: field;
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: minmax(0, 1fr) 32px;
  background: var(--ui-canvas-bg);
}

.sai-field__stage {
  position: relative;
  min-height: 0;
  overflow: hidden;
  overscroll-behavior: contain;
  background-color: var(--ui-canvas-bg);
  background-image: var(--ui-canvas-grid-image);
  cursor: grab;
  touch-action: none;
  user-select: none;
}

.sai-field__stage.is-panning {
  cursor: grabbing;
}

.sai-field__scene {
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--map-width, 1280px);
  height: var(--map-height, 960px);
  transform:
    translate(
      calc(-50% + var(--map-pan-x, 0px)),
      calc(-50% + var(--map-pan-y, 0px))
    )
    scale(var(--map-scale, .72));
  transform-origin: center;
  image-rendering: pixelated;
  background: transparent;
  will-change: transform;
}

.sai-field__map-canvas,
.sai-field__runtime-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  image-rendering: pixelated;
}

.sai-field__runtime-canvas {
  z-index: 2;
  pointer-events: none;
}

.sai-field__actors {
  position: absolute;
  inset: 0;
  z-index: 4;
}

.sai-field__chip {
  position: absolute;
  left: var(--spum-space-12);
  top: var(--spum-space-12);
  z-index: 6;
  max-width: min(420px, calc(100% - 32px));
  padding: var(--spum-space-8) var(--spum-space-12);
  border: 1px solid var(--ui-border-mid);
  border-radius: var(--spum-radius-md);
  background: color-mix(in srgb, var(--ui-panel-bg) 88%, transparent);
  color: var(--ui-text-secondary);
  font-weight: var(--spum-fw-semibold);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.sai-field__hud {
  display: flex;
  align-items: center;
  gap: var(--spum-space-12);
  min-width: 0;
  padding: 0 var(--spum-space-12);
  border-top: 1px solid var(--ui-border-mid);
  background: var(--ui-panel-bg);
  color: var(--ui-text-muted);
}

.sai-field__hud span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sai-actor {
  --actor-x: 640px;
  --actor-y: 480px;
  position: absolute;
  left: 0;
  top: 0;
  width: 72px;
  min-height: 84px;
  display: grid;
  justify-items: center;
  align-content: end;
  gap: 2px;
  transform: translate3d(var(--actor-x), var(--actor-y), 0) translate(-50%, -88%);
  background: transparent;
  will-change: transform;
  z-index: 3;
}

.sai-actor.is-selected .sai-actor__thumb {
  outline: 3px solid var(--ai-accent);
  outline-offset: 3px;
}

.sai-field__scene.is-runtime-active .sai-actor__thumb {
  display: none;
}

.sai-field__scene.is-runtime-active .sai-actor.is-selected::before {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 14px;
  width: 46px;
  height: 24px;
  transform: translateX(-50%);
  border: 2px solid var(--ai-accent);
  border-radius: 50%;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--ui-shell-bg) 58%, transparent);
}

.sai-actor__thumb {
  width: 82px;
  height: 82px;
  object-fit: contain;
  image-rendering: pixelated;
  filter: drop-shadow(0 8px 8px color-mix(in srgb, var(--ui-shell-bg) 68%, transparent));
}

.sai-actor__name {
  max-width: 96px;
  padding: 3px var(--spum-space-8);
  border: 1px solid var(--ui-border-mid);
  border-radius: var(--spum-radius-md);
  background: color-mix(in srgb, var(--ui-panel-bg) 92%, transparent);
  color: var(--ui-text-primary);
  font-size: var(--spum-fs-xs);
  font-weight: var(--spum-fw-bold);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.sai-actor__bubble {
  position: absolute;
  left: 50%;
  bottom: 92px;
  width: max-content;
  max-width: 230px;
  transform: translateX(-50%);
  padding: var(--spum-space-6) var(--spum-space-8);
  border: 1px solid var(--ai-accent-border);
  border-radius: var(--spum-radius-md);
  background: color-mix(in srgb, var(--ui-panel-bg) 94%, transparent);
  color: var(--ui-text-primary);
  font-size: var(--spum-fs-xs);
  line-height: 1.35;
  box-shadow: var(--ui-panel-shadow);
}

.sai-actor__bubble:empty {
  display: none;
}

.sai-runtime {
  grid-area: inspector;
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  background: var(--ui-cast-panel-bg);
  border-right: 1px solid var(--ui-border-weak);
}

.sai-runtime__section {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: 32px minmax(0, 1fr);
}

.sai-runtime__section--output {
  grid-template-rows: 32px auto;
}

.sai-runtime__section--events {
  border-top: 1px solid var(--ui-border-weak);
}

.sai-runtime__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spum-space-8);
  min-height: 32px;
  padding: 0 var(--spum-space-10, 10px);
  border-bottom: 1px solid var(--ui-border-weak);
}

.sai-runtime__head strong {
  color: var(--ui-text-primary);
  font-family: var(--spum-font-mono);
  font-size: 10px;
  font-weight: 800;
}

.sai-runtime__head span {
  color: var(--ui-text-muted);
  font-family: var(--spum-font-mono);
  font-size: 9px;
  font-weight: 800;
}

.sai-selected {
  min-width: 0;
  padding: var(--spum-space-6);
}

.sai-inspector__empty {
  display: grid;
  gap: var(--spum-space-4);
  color: var(--ui-text-muted);
}

.sai-inspector__empty[hidden],
.sai-inspector__content[hidden] {
  display: none;
}

.sai-inspector__empty strong {
  color: var(--ui-text-primary);
}

.sai-inspector__head {
  display: flex;
  align-items: center;
  gap: var(--spum-space-8);
}

.sai-selected__thumb {
  width: 56px;
  height: 56px;
  flex: 0 0 auto;
  object-fit: contain;
  image-rendering: pixelated;
  border-radius: var(--spum-radius-md);
  background: var(--ui-inset-bg);
}

.sai-inspector__head strong,
.sai-inspector__head span {
  display: block;
  min-width: 0;
}

.sai-inspector__head strong {
  font-size: 13px;
  line-height: 1.15;
}

.sai-inspector__head span,
.sai-inspector__content p {
  color: var(--ui-text-secondary);
}

.sai-inspector__content p {
  margin: var(--spum-space-6) 0;
  font-size: 11px;
  line-height: 1.45;
}

.sai-inspector__facts {
  display: grid;
  gap: var(--spum-space-4);
  margin: 0;
}

.sai-inspector__facts div {
  display: grid;
  gap: 2px;
  padding: var(--spum-space-5, 5px) var(--spum-space-6);
  border: 1px solid var(--ui-border-weak);
  border-radius: var(--spum-radius-md);
  background: var(--ui-control-bg);
}

.sai-inspector__facts dt {
  color: var(--ui-text-muted);
  font-size: 10px;
}

.sai-inspector__facts dd {
  margin: 0;
  color: var(--ui-text-primary);
  font-size: 11px;
  line-height: 1.35;
}

.sai-inspector__actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--spum-space-6);
  margin-top: var(--spum-space-6);
}

.sai-inspector__actions button {
  height: 28px;
  gap: var(--spum-space-6);
  padding: 0 var(--spum-space-8);
  font-weight: var(--spum-fw-semibold);
}

.sai-runtime__feed {
  min-height: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  overflow: auto;
}

.sai-feed-item {
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr) auto;
  gap: var(--spum-space-6);
  padding: var(--spum-space-6) var(--spum-space-8);
  border-bottom: 1px solid var(--ui-border-weak);
}

.sai-feed-item__icon {
  width: 26px;
  height: 26px;
  display: grid;
  place-items: center;
  border-radius: var(--spum-radius-md);
  background: var(--ui-control-bg);
  color: var(--ui-warning);
}

.sai-feed-item__body {
  min-width: 0;
  display: grid;
  gap: 2px;
}

.sai-feed-item__title {
  display: flex;
  align-items: center;
  gap: var(--spum-space-6);
  min-width: 0;
}

.sai-feed-item__title strong {
  min-width: 0;
  color: var(--ui-warning);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sai-feed-item__title span {
  color: var(--ui-warning);
  font-size: var(--spum-fs-xs);
  font-weight: var(--spum-fw-bold);
}

.sai-feed-item p {
  margin: 0;
  color: var(--ui-text-primary);
  font-size: 10px;
  line-height: 1.35;
}

.sai-feed-item time {
  color: var(--ui-text-muted);
  font-size: var(--spum-fs-xs);
}

.sai-console {
  grid-area: chat;
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: 32px minmax(0, 1fr);
  background: var(--ui-cast-panel-bg);
  border-left: 1px solid var(--ui-border-weak);
}

.sai-console__head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--spum-space-8);
  min-width: 0;
  padding: 0 var(--spum-space-10, 10px);
  border-bottom: 1px solid var(--ui-border-weak);
}

.sai-console__head strong {
  min-width: 0;
  overflow: hidden;
  color: var(--ui-text-primary);
  font-family: var(--spum-font-mono);
  font-size: 10px;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sai-console__head-meta {
  min-width: 0;
  overflow: hidden;
  color: var(--ui-text-muted);
  font-family: var(--spum-font-mono);
  font-size: 9px;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sai-console__workbench {
  min-width: 0;
  min-height: 0;
  display: block;
  overflow: hidden;
}

.sai-console:not(.has-proposals) .sai-console__workbench {
  display: block;
}

.sai-console__log {
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: var(--spum-space-6);
  padding: var(--spum-space-6);
  border-bottom: 1px solid var(--ui-border-weak);
  overflow: auto;
}

.sai-message {
  max-width: min(620px, 96%);
  padding: var(--spum-space-5, 5px) var(--spum-space-7, 7px);
  border: 1px solid var(--ui-border-weak);
  border-radius: var(--spum-radius-sm);
  background: var(--ui-control-bg);
  color: var(--ui-text-primary);
  font-size: 10px;
  line-height: 1.4;
}

.sai-message.is-user {
  align-self: flex-end;
  background: var(--ui-selected-tint);
  border-color: var(--ui-border-strong);
}

.sai-message.is-sai {
  align-self: flex-start;
  border-color: var(--ai-accent-border);
}

.sai-message strong {
  display: block;
  margin-bottom: 2px;
  color: var(--ui-text-muted);
  font-size: var(--spum-fs-xs);
  font-weight: var(--spum-fw-semibold);
}

.sai-console__proposals {
  height: 100%;
  min-height: 0;
  max-height: none;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: start;
  gap: var(--spum-space-8);
  padding: var(--spum-space-8);
  overflow: auto;
}

.sai-proposal {
  min-width: 0;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  gap: var(--spum-space-6);
  align-items: stretch;
  padding: var(--spum-space-6);
  border: 1px solid var(--ui-border-weak);
  border-radius: var(--spum-radius-sm);
  background: var(--ui-control-bg);
}

.sai-proposal.is-used {
  opacity: .58;
}

.sai-proposal.is-pending {
  border-color: var(--ai-accent-border);
}

.sai-proposal__draft {
  width: 44px;
  height: 100%;
  min-height: 82px;
  display: grid;
  place-items: center;
  border-radius: var(--spum-radius-sm);
  background: var(--ui-inset-bg);
  color: var(--ui-accent);
  border: 1px solid var(--ui-border-mid);
  box-shadow: var(--ui-control-inset);
}

.sai-proposal__draft svg {
  width: 22px;
  height: 22px;
}

.sai-sprite-render-host {
  position: fixed;
  left: -10000px;
  top: -10000px;
  width: 192px;
  height: 192px;
  opacity: 0;
  overflow: hidden;
  pointer-events: none;
}

.sai-proposal__body {
  min-width: 0;
  display: grid;
  grid-template-rows: auto auto auto 16px 26px;
  gap: 3px;
}

.sai-proposal__title {
  display: flex;
  align-items: center;
  gap: var(--spum-space-6);
  min-width: 0;
}

.sai-proposal__title strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 11px;
}

.sai-proposal__title span {
  flex: 0 0 auto;
  padding: 2px var(--spum-space-4);
  border: 1px solid var(--ui-border-weak);
  border-radius: var(--spum-radius-sm);
  color: var(--ui-text-muted);
  font-family: var(--spum-font-mono);
  font-size: 8px;
  font-weight: 800;
}

.sai-proposal p {
  margin: 0;
  color: var(--ui-text-secondary);
  font-size: 10px;
  line-height: 1.35;
}

.sai-proposal__meta {
  display: flex;
  align-items: center;
  gap: var(--spum-space-4);
  min-width: 0;
  overflow: hidden;
}

.sai-proposal__meta span {
  flex: 0 1 auto;
  min-width: 0;
  max-width: 33%;
  padding: 2px var(--spum-space-4);
  overflow: hidden;
  border: 1px solid var(--ui-border-weak);
  border-radius: var(--spum-radius-sm);
  color: var(--ui-text-muted);
  font-size: 10px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sai-proposal__swatches {
  display: grid;
  grid-template-columns: repeat(5, 16px);
  align-items: center;
  gap: var(--spum-space-4);
  min-width: 0;
}

.sai-proposal__swatches i {
  width: 16px;
  height: 16px;
  border: 1px solid var(--ui-border-weak);
  border-radius: var(--spum-radius-sm);
  background: var(--swatch);
}

.sai-proposal__select {
  height: 26px;
  width: 100%;
  gap: var(--spum-space-6);
  padding: 0 var(--spum-space-8);
  font-family: var(--spum-font-mono);
  font-size: 9px;
  font-weight: var(--spum-fw-bold);
}

.sai-console__form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 36px;
  gap: var(--spum-space-6);
  padding: var(--spum-space-6) var(--spum-space-8);
  border-top: 1px solid var(--ui-border-weak);
  background: var(--ui-inset-bg);
}

.sai-console__input-wrap {
  min-width: 0;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  align-items: center;
  height: 28px;
  border: 1px solid var(--ai-accent-border);
  border-radius: var(--spum-radius-sm);
  background: var(--ui-input-bg);
  overflow: hidden;
}

.sai-console__input-wrap span {
  display: grid;
  place-items: center;
  height: 100%;
  border-right: 1px solid var(--ui-border-mid);
  color: var(--ai-accent);
  font-weight: var(--spum-fw-bold);
}

.sai-console__input-wrap input {
  min-width: 0;
  height: 100%;
  padding: 0 var(--spum-space-12);
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--ui-text-primary);
}

.sai-console__input-wrap input::placeholder {
  color: var(--ui-text-muted);
}

.sai-send-button {
  width: 36px;
  height: 28px;
  background: var(--ai-accent-bg);
  border-color: var(--ai-accent-border);
}

@media (max-width: 980px) {
  .sai-demo {
    --demo-chat-h: 330px;
  }

  .sai-demo__workspace {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr) var(--demo-chat-h);
    grid-template-areas:
      "field"
      "chat";
  }

  .sai-runtime {
    display: none;
  }

  .sai-console.has-proposals .sai-console__workbench {
    grid-template-rows: 86px minmax(0, 1fr);
  }

  .sai-console__log {
    border-bottom: 1px solid var(--ui-border-weak);
  }

  .sai-console__proposals {
    grid-template-columns: minmax(0, 1fr);
    max-height: 178px;
  }

  .sai-demo__status,
  .sai-preview-count {
    display: none;
  }
}

@media (max-width: 560px) {
  .sai-demo {
    --demo-topbar-h: 42px;
    --demo-chat-h: 340px;
  }

  .sai-demo__topbar {
    padding: 0 var(--spum-space-8);
  }

  .sai-demo__brand strong {
    font-size: 11px;
  }

  .sai-demo__brand em,
  .sai-demo__file-label,
  .sai-live-chip,
  .sai-console__head-meta {
    display: none;
  }

  .sai-console__head {
    grid-template-columns: minmax(0, 1fr);
  }

  .sai-console__log {
    padding: var(--spum-space-8);
  }

  .sai-console__proposals {
    max-height: 182px;
    padding: var(--spum-space-8);
  }
}

@media (max-width: 700px), (max-height: 420px) {
  .sai-demo {
    --demo-topbar-h: 32px;
    --demo-chat-h: 0px;
    grid-template-rows: var(--demo-topbar-h) minmax(0, 1fr);
  }

  .sai-demo__topbar {
    min-height: 0;
    padding: 0 var(--spum-space-8);
  }

  .sai-demo__brand {
    border-right: 0;
  }

  .sai-demo__brand-mark {
    width: 24px;
    height: 24px;
  }

  .sai-demo__brand strong {
    font-size: 10px;
  }

  .sai-demo__brand em,
  .sai-demo__file-label,
  .sai-live-chip,
  .sai-preview-count,
  .sai-demo__status,
  .sai-demo__top-actions {
    display: none;
  }

  .sai-demo__workspace {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr);
    grid-template-areas: "field";
  }

  .sai-runtime,
  .sai-console {
    display: none;
  }

  .sai-field {
    grid-template-rows: minmax(0, 1fr);
  }

  .sai-field__hud {
    display: none;
  }

  .sai-field__chip {
    left: var(--spum-space-8);
    top: var(--spum-space-8);
    max-width: calc(100% - 16px);
    padding: var(--spum-space-5, 5px) var(--spum-space-8);
    font-size: 10px;
  }

  .sai-actor__name {
    max-width: 78px;
    font-size: 10px;
  }

  .sai-actor__bubble {
    max-width: 160px;
  }
}
