/* Homepage room and blackout panel. */
.world { transform: none; scroll-margin-top: 105px; }
.world-stat b { display: block; }
.object-tag { position: absolute; z-index: 3; padding: 3px 7px; font: 700 .75rem/1.4 var(--mono); letter-spacing: .08em; border: 1px solid #cecbb1; color: #f6dfb1; background: #253333e8; transform: translate(-50%,-100%); pointer-events: none; }
.object-tag--klod { color: #dbefb1; border-color: #9fb989; transform: translate(calc(-50% + 24px), -100%); }
.world[data-scene="reveal"] .object-tag, .world[data-scene="reveal"] .room-label { visibility: hidden; }
.blackout__status { font: var(--text-small)/1.5 var(--mono); color: #b5d691; letter-spacing: .09em; margin: 0 0 16px; opacity: 0; }
.blackout[data-reveal="3"] .blackout__status { opacity: 1; }
.blackout__backup { text-decoration: none; }
.blackout__links { display: flex; justify-content: center; gap: 4px 16px; flex-wrap: wrap; }
.object-tag { display: none; }
.room-ready .object-tag { display: block; }
.room-ready .object-tag[hidden] { display: none; }
.object-tag--provider { color: #ffd5b1; border-color: #c79c79; }
.world[data-scene="backup"] .fallback-path { opacity: 1; }
.world[data-scene="backup"] .signal-path { opacity: .15; animation: none; }
.world[data-scene="backup"] .ai-tower { opacity: .3; }
@media (max-width: 760px) {
  .object-tag { font-size: .75rem; padding: 2px 5px; }
  .blackout__status { margin-bottom: 9px; font-size: var(--text-small); }
}
.world-view { width: 100%; min-width: 0; min-height: 27rem; aspect-ratio: 640 / 462; }
.world-view > .world-art { object-fit: contain; }
.room-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; image-rendering: pixelated; opacity: 0; transition: opacity 350ms; }
.room-ready .room-canvas { opacity: 1; }
.room-ready .world-art { visibility: hidden; }
.room-label { position: absolute; z-index: 2; bottom: 20px; left: 20px; font: .75rem/1.5 var(--mono); letter-spacing: .04em; max-width: calc(100% - 40px); color: #e0d3b6; background: #192723b8; padding: 7px 9px; border: 1px solid #859b6b50; border-radius: 2px; }
/* A reserved caption strip keeps messages readable without covering the room. */
.story-dialogue { display: grid; align-items: center; min-height: 124px; padding: 17px 20px; border-bottom: 1px solid #43504d; background: #1e2b2e; }
.story-dialogue > .world-note, .story-dialogue > .provider-notice, .story-dialogue > .room-alert { grid-area: 1 / 1; position: static; inset: auto; width: auto; max-width: none; margin: 0; padding: 0; transform: none; border: 0; border-radius: 0; background: none; box-shadow: none; opacity: 1; visibility: visible; transition: opacity 300ms ease, visibility 300ms; }
.story-dialogue > [hidden] { display: block; opacity: 0; visibility: hidden; pointer-events: none; }
.story-dialogue .world-note { color: #bdcbbb; font: 600 var(--text-small)/1.5 var(--mono); letter-spacing: .055em; }
.story-dialogue .world-note strong { display: block; margin-top: 7px; color: #efdab5; font: 650 1rem/1.5 var(--sans); letter-spacing: 0; }
.story-dialogue .provider-notice p { margin: 0 0 5px; font: 600 var(--text-small)/1.5 var(--mono); color: #edbb88; letter-spacing: .05em; }
.story-dialogue .provider-notice strong { display: block; font: 700 1rem/1.4 var(--sans); color: #ffe1ba; }
.story-dialogue .provider-notice span { display: block; margin-top: 4px; font: 1rem/1.6 var(--sans); color: #d9c6ae; }
.story-dialogue .room-alert { color: #ffd3b1; font: 600 var(--text-small)/1.6 var(--mono); }
.story-dialogue .room-alert small { display: block; margin-top: 5px; color: #dcb799; font: 1rem/1.6 var(--sans); }
@media (max-width: 760px) {
  .story-dialogue { min-height: 128px; padding: 15px; }
  .story-dialogue .world-note strong, .story-dialogue .provider-notice strong { font-size: 1rem; }
}
@media (prefers-reduced-motion: reduce) { .story-dialogue > * { transition: none !important; } }
.blackout { position: absolute; inset: 0; z-index: 5; background: #111a1b; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 20px; overflow-y: auto; opacity: 0; visibility: hidden; text-align: center; transition: opacity 450ms; }
.blackout.is-dark { opacity: 1; visibility: visible; }
.blackout > * { flex-shrink: 0; }
.blackout__code { font: 800 clamp(2rem, 4vw, 3.5rem)/1 var(--mono); letter-spacing: -.09em; color: #f0c587; margin: 0 0 19px; opacity: 0; transform: translateY(5px); transition: opacity 400ms, transform 400ms; }
.terminal-cursor { animation: terminal-blink 1.1s steps(1,end) infinite; }
@keyframes terminal-blink { 50% { opacity: 0; } }
.blackout__title { font: 650 clamp(var(--text-small), 1.3vw, 1.12rem)/1.65 var(--mono); letter-spacing: .13em; margin: 0 0 17px; color: #f0ead6; opacity: 0; transition: opacity 400ms; }
.blackout__question { font: 1rem/1.65 var(--sans); max-width: 290px; color: #bac6b4; opacity: 0; margin: 0 0 20px; transition: opacity 400ms; }
.blackout__backup { min-height: 43px; padding: 11px 15px; background: #d8e4b0; color: #26382a; border: none; border-bottom: 3px solid #8ba577; border-radius: 3px; font: 650 var(--text-small) var(--mono); cursor: pointer; }
.blackout__actions { display: flex; align-items: center; flex-direction: column; gap: 14px; opacity: 0; transition: opacity 400ms; }
.blackout__replay { border: 0; padding: 8px 5px; min-height: 44px; background: transparent; font: var(--text-small) var(--mono); color: #c4c5ad; text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.blackout[data-reveal="1"] .blackout__code, .blackout[data-reveal="2"] .blackout__code, .blackout[data-reveal="3"] .blackout__code { opacity: 1; transform: none; }
.blackout[data-reveal="2"] .blackout__title, .blackout[data-reveal="3"] .blackout__title { opacity: 1; }
.blackout[data-reveal="3"] .blackout__question, .blackout[data-reveal="3"] .blackout__actions { opacity: 1; }
.blackout:not([data-reveal="3"]) .blackout__actions { visibility: hidden; }
.world[data-scene="backup"] .room-label { color: #dfedb4; border-color: #a6c187; }
.unplug:disabled { opacity: .65; cursor: wait; transform: none; }
.scene-caption { font-size: var(--text-small); }
.scene-caption p { max-width: 430px; }
.scene-story { margin-top: 9px; color: var(--ink-faint); font: var(--text-small)/1.7 var(--mono); }
.scene-story a { color: var(--accent); }
@media (max-width: 760px) {
  .world-view { aspect-ratio: 1.23; }
  .world-top__right { font-size: var(--text-small); letter-spacing: .04em; }
  .room-label { left: 13px; bottom: 13px; max-width: calc(100% - 26px); padding: 6px; }
  .blackout { padding: 15px; }
  .blackout__code { font-size: 2.2rem; margin-bottom: 13px; }
  .blackout__title { font-size: var(--text-small); margin-bottom: 12px; }
  .blackout__question { max-width: 290px; margin-bottom: 13px; }
  .blackout__actions { gap: 7px; }
  .blackout__backup { font-size: var(--text-small); min-height: 42px; }
  .blackout__replay { font-size: var(--text-small); }
  .scene-caption { font-size: var(--text-small); }
}
@media (prefers-reduced-motion: reduce) {
  .terminal-cursor { animation: none; }
  .blackout, .blackout > * { transition: none; }
}
@media print { .world-column { display: none; } }

.world[data-scene="blackout"] .room-label { visibility: hidden; }
@media (max-width: 480px) {
  .world-stats { grid-template-columns: minmax(0,1fr); gap: 8px; }
  .world-stat { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
  .blackout__title { letter-spacing: .06em; }
}
@media (max-width: 360px) { .world-view { min-height: 29rem; } }
