:root{
  --amber:#d4a15f; --paper:#e8dcc7; --red:#a34035; --green:#6d7a70;
}
*{box-sizing:border-box} html,body,#app{margin:0;width:100%;height:100%;overflow:hidden;background:#050606;color:var(--paper);font-family:Georgia,'Times New Roman',serif}
#webgl{position:fixed;inset:0;width:100%;height:100%;display:block;background:transparent;z-index:1;transition:opacity .35s}
#grain{position:fixed;z-index:2;inset:0;pointer-events:none;opacity:.16;mix-blend-mode:screen;background-image:radial-gradient(circle at 20% 30%,rgba(255,255,255,.25) 0 1px,transparent 1px),radial-gradient(circle at 70% 80%,rgba(255,255,255,.18) 0 1px,transparent 1px);background-size:4px 4px,7px 7px;animation:grain .32s steps(2) infinite}
@keyframes grain{to{transform:translate(2px,-2px)}}
#vignette{position:fixed;z-index:3;inset:0;pointer-events:none;background:radial-gradient(circle at center,transparent 35%,rgba(0,0,0,.35) 62%,rgba(0,0,0,.86) 100%)}
.panel{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 35%,rgba(50,55,50,.38),rgba(0,0,0,.96) 74%);z-index:20;padding:24px}.panel.active{display:flex}.start-card{max-width:760px;padding:42px;border:1px solid rgba(232,220,199,.18);background:rgba(9,10,10,.78);box-shadow:0 30px 90px rgba(0,0,0,.72);backdrop-filter:blur(8px)}
h1{font-size:clamp(42px,8vw,88px);line-height:.92;margin:.1em 0 .12em;font-weight:400;letter-spacing:-.04em}.eyebrow{font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--amber);margin:0 0 12px}.date{font-size:21px;color:#c9b996;margin:0 0 22px}.description{font-size:18px;line-height:1.58;color:#d9cfbc}.micro{font-size:13px;color:#9d9587;margin-top:20px}button{font:700 13px/1.1 system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;border:1px solid rgba(232,220,199,.32);background:rgba(212,161,95,.16);color:#f2e6d1;padding:14px 20px;cursor:pointer}button:hover{background:rgba(212,161,95,.32)}
#hud{position:fixed;left:24px;top:22px;z-index:8;text-shadow:0 2px 10px #000;opacity:0;transition:opacity .6s}#hud.visible{opacity:1}#chapter{font:700 12px/1 system-ui,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--amber);margin-bottom:8px}#instruction{font-size:16px;color:#d9cfbc;max-width:440px}
#thoughtBox{position:fixed;left:50%;bottom:42px;transform:translateX(-50%);max-width:min(820px,86vw);padding:18px 24px;background:rgba(0,0,0,.56);border-left:3px solid rgba(212,161,95,.8);font-size:clamp(21px,3.1vw,36px);line-height:1.22;text-align:center;z-index:10;opacity:0;transition:opacity .5s,transform .5s;text-shadow:0 2px 18px #000}#thoughtBox.show{opacity:1;transform:translateX(-50%) translateY(-10px)}
#memoryCard{position:fixed;right:24px;bottom:24px;width:min(360px,36vw);min-height:120px;background:rgba(8,8,8,.7);border:1px solid rgba(232,220,199,.14);padding:14px;z-index:9;opacity:0;transform:translateY(12px);transition:.4s}#memoryCard.show{opacity:1;transform:translateY(0)}#memoryCard img{width:100%;max-height:220px;object-fit:cover;display:block;filter:sepia(.24) contrast(1.05)}#memoryCard h3{margin:10px 0 4px;font-size:19px;font-weight:400;color:#f2dfc0}#memoryCard p{margin:0;font-size:14px;line-height:1.42;color:#cfc3ae}
.media-video{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;z-index:6;opacity:0;transition:opacity .7s;filter:contrast(1.04) saturate(.78) brightness(.76)}.media-video.show{opacity:1}
#controls{position:fixed;right:18px;top:18px;z-index:30;display:flex;gap:8px}#controls button{padding:10px 12px;background:rgba(0,0,0,.35);font-size:11px;color:#d7cab5}
.end-card p{font-size:20px;line-height:1.5}.quote{color:var(--amber);font-style:italic}
#fallbackScene{position:fixed;inset:0;background-size:cover;background-position:center;display:block;transform:scale(1.03);transition:background-image .5s, filter .5s;filter:contrast(1.02) saturate(.8) brightness(.72);z-index:0}
body.no-webgl #fallbackScene{display:block} body.no-webgl #webgl, body.image-fallback #webgl{display:none}.hotspotDom{position:fixed;width:34px;height:34px;border-radius:50%;border:2px solid rgba(255,255,255,.5);background:rgba(212,161,95,.65);box-shadow:0 0 28px rgba(212,161,95,.8);z-index:7;cursor:pointer;animation:pulseHotspot 1.8s ease-in-out infinite}.hotspotDom::after{content:"";position:absolute;inset:-10px;border:1px solid rgba(255,255,255,.25);border-radius:50%}@keyframes pulseHotspot{50%{transform:scale(1.18);opacity:.7}}
#hotspotLayer{position:fixed;inset:0;z-index:9;pointer-events:none}.hotspotDom{pointer-events:auto;position:fixed;width:36px;height:36px;border-radius:50%;border:0;background:transparent;z-index:12;cursor:pointer;overflow:visible}.hotspotDom span{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,244,221,.82);background:rgba(212,161,95,.55);box-shadow:0 0 34px rgba(212,161,95,.95), inset 0 0 18px rgba(255,255,255,.28);animation:pulseHotspot 1.65s ease-in-out infinite}.hotspotDom em{position:absolute;left:50%;top:42px;transform:translateX(-50%);white-space:nowrap;font:700 11px/1.1 system-ui,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:#f5e7cf;background:rgba(0,0,0,.72);border:1px solid rgba(232,220,199,.18);padding:7px 9px;border-radius:999px;text-shadow:0 1px 8px #000}.hotspotDom.visited span{background:rgba(109,122,112,.72);box-shadow:0 0 22px rgba(109,122,112,.9)}#continueBtn{display:none;background:rgba(212,161,95,.26)!important;border-color:rgba(232,220,199,.42)!important}#continueBtn.visible{display:inline-block}
/* Interaction repair: keep story controls above the panorama/video layers. */
#hotspotLayer{z-index:45;pointer-events:none;}
.hotspotDom{z-index:46;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
.hotspotDom span,.hotspotDom em{pointer-events:none;}
#objectTray{position:fixed;right:18px;top:94px;bottom:auto;z-index:55;display:none;width:230px;max-height:calc(100vh - 150px);overflow:auto;padding:14px;background:rgba(5,5,5,.72);border:1px solid rgba(232,220,199,.16);backdrop-filter:blur(8px);box-shadow:0 18px 55px rgba(0,0,0,.55)}
#objectTray.visible{display:block}.tray-title{font:800 11px/1 system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--amber);margin:0 0 10px}#objectButtons{display:flex;gap:8px;flex-direction:column}#objectButtons button{width:100%;text-align:left;padding:11px 12px;font-size:11px;background:rgba(0,0,0,.42);border-color:rgba(232,220,199,.24);color:#f2e6d1}#objectButtons button:hover,#objectButtons button:focus{background:rgba(212,161,95,.32);outline:1px solid rgba(212,161,95,.65)}
#thoughtBox{z-index:50;pointer-events:none}#memoryCard{z-index:54;pointer-events:none}.media-video{pointer-events:none}#controls{z-index:60}.panel{z-index:80}

/* Keeps the Explore controls out of the story text and fixes portrait crop for Tonya/Malik memory. */
#memoryCard.tonya-memory img{object-fit:contain;object-position:center top;background:rgba(0,0,0,.35);max-height:260px;}
@media(min-width:701px){#thoughtBox{max-width:calc(100vw - 330px);left:24px;transform:none;text-align:left;}#thoughtBox.show{transform:translateY(-10px)}}

/* 360° sphere viewing: visitors can drag/touch the room to look around. */
body{cursor:grab;}
body.dragging{cursor:grabbing;}
#webgl{touch-action:none;}
.panel, #controls, #objectTray, .hotspotDom, button{cursor:auto;}


/* =========================================================
   MOBILE-OPTIMIZED JAIL EXPERIENCE
   Single source of truth for phone and small-tablet layouts.
   ========================================================= */
@media (max-width: 760px) {
  html, body, #app {
    width: 100%;
    height: 100%;
    height: 100dvh;
    overflow: hidden;
  }

  /* Opening screen: completely isolated from the scene beneath it. */
  body.jail-prestart #startScreen {
    display: flex !important;
    position: fixed !important;
    inset: 0 !important;
    z-index: 1000 !important;
    padding: max(16px, env(safe-area-inset-top)) 16px
             max(16px, env(safe-area-inset-bottom)) !important;
    background: #050606 !important;
  }

  body.jail-prestart #startScreen .start-card {
    width: 100% !important;
    max-width: 560px !important;
    max-height: 100% !important;
    overflow-y: auto !important;
    padding: 24px 20px !important;
    border-radius: 18px !important;
    background: #0b0b0a !important;
    border: 1px solid rgba(232,220,199,.2) !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
  }

  body.jail-prestart #startScreen h1 {
    font-size: clamp(42px, 13vw, 62px) !important;
    line-height: .94 !important;
    margin: 8px 0 12px !important;
  }

  body.jail-prestart #startScreen .date {
    font-size: 16px !important;
    margin-bottom: 16px !important;
  }

  body.jail-prestart #startScreen .description {
    font-size: 15px !important;
    line-height: 1.46 !important;
  }

  body.jail-prestart #startBtn {
    width: 100% !important;
    min-height: 50px !important;
    margin-top: 8px !important;
    border-radius: 12px !important;
  }

  body.jail-prestart #controls,
  body.jail-prestart #hud,
  body.jail-prestart #hotspotLayer,
  body.jail-prestart #objectTray,
  body.jail-prestart #thoughtBox,
  body.jail-prestart #memoryCard,
  body.jail-prestart #cedarJourneyMenuToggle,
  body.jail-prestart #cedarJourneyBackdrop,
  body.jail-prestart #cedarJourneyNav,
  body.jail-prestart #fallbackScene,
  body.jail-prestart #webgl,
  body.jail-prestart #sceneVideo,
  body.jail-prestart #grain,
  body.jail-prestart #vignette {
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }

  /* Story card: compact and anchored at the top. */
  #hud {
    position: fixed !important;
    top: max(12px, env(safe-area-inset-top)) !important;
    left: 12px !important;
    right: 64px !important;
    width: auto !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 10px 12px !important;
    border-radius: 13px !important;
    background: rgba(5,5,5,.78) !important;
    border: 1px solid rgba(212,161,95,.34) !important;
    box-shadow: 0 10px 28px rgba(0,0,0,.42) !important;
    backdrop-filter: blur(8px) !important;
    z-index: 40 !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }

  #hud.visible {
    opacity: 1 !important;
  }

  #chapter {
    margin: 0 0 5px !important;
    font-size: 10px !important;
    line-height: 1.1 !important;
    letter-spacing: .16em !important;
  }

  #instruction {
    max-width: none !important;
    margin: 0 !important;
    font-size: 13px !important;
    line-height: 1.3 !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 3 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
  }

  /* Mobile uses visual hotspots only. Explore tray and hotspot labels are removed. */
  #objectTray,
  #objectTray.visible {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }

  .hotspotDom {
    width: 46px !important;
    height: 46px !important;
    z-index: 24 !important;
    pointer-events: auto !important;
    touch-action: manipulation !important;
  }

  .hotspotDom em {
    display: none !important;
  }

  .hotspotDom span {
    inset: 4px !important;
    background: rgba(212,161,95,.24) !important;
  }

  /* Bottom control dock. */
  #controls {
    position: fixed !important;
    left: 12px !important;
    right: 12px !important;
    bottom: max(12px, env(safe-area-inset-bottom)) !important;
    top: auto !important;
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 6px !important;
    padding: 7px !important;
    border-radius: 15px !important;
    background: rgba(5,5,5,.82) !important;
    border: 1px solid rgba(212,161,95,.34) !important;
    box-shadow: 0 12px 34px rgba(0,0,0,.52) !important;
    backdrop-filter: blur(10px) !important;
    z-index: 52 !important;
  }

  #controls button {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 44px !important;
    padding: 7px 5px !important;
    border-radius: 10px !important;
    font-size: 9px !important;
    line-height: 1.15 !important;
    letter-spacing: .06em !important;
    white-space: normal !important;
    touch-action: manipulation !important;
  }

  #continueBtn.visible {
    display: block !important;
  }

  /* Journey menu button is top-right, away from scene controls. */
  #cedarJourneyMenuToggle {
    position: fixed !important;
    top: max(12px, env(safe-area-inset-top)) !important;
    right: 12px !important;
    bottom: auto !important;
    min-width: 44px !important;
    width: 44px !important;
    height: 44px !important;
    padding: 0 !important;
    border-radius: 50% !important;
    font-size: 0 !important;
    z-index: 2147483647 !important;
  }

  #cedarJourneyMenuToggle::before {
    content: "☰" !important;
    font-size: 19px !important;
  }

  /* Transient messages stay above the bottom dock. */
  #thoughtBox {
    left: 12px !important;
    right: 12px !important;
    bottom: 82px !important;
    width: auto !important;
    max-width: none !important;
    padding: 11px 13px !important;
    font-size: 16px !important;
    line-height: 1.25 !important;
    text-align: left !important;
    transform: none !important;
    border-radius: 10px !important;
  }

  #thoughtBox.show {
    transform: translateY(-6px) !important;
  }

  #memoryCard {
    left: 12px !important;
    right: 12px !important;
    bottom: 82px !important;
    width: auto !important;
    max-height: 44dvh !important;
    overflow-y: auto !important;
    padding: 12px !important;
    border-radius: 12px !important;
  }

  #memoryCard img {
    max-height: 170px !important;
  }

  body.jail-ended #controls,
  body.jail-ended #hud,
  body.jail-ended #hotspotLayer,
  body.jail-ended #objectTray,
  body.jail-ended #thoughtBox,
  body.jail-ended #memoryCard,
  body.jail-ended #cedarJourneyMenuToggle {
    display: none !important;
  }
}

@media (max-width: 390px) and (orientation: portrait) {
  #hud {
    right: 60px !important;
  }

  #instruction {
    font-size: 12px !important;
    -webkit-line-clamp: 2 !important;
  }

  #controls button {
    font-size: 8px !important;
  }
}

@media (max-width: 760px) and (orientation: landscape),
       (max-height: 520px) and (orientation: landscape) {
  #hud {
    top: 8px !important;
    left: 8px !important;
    right: auto !important;
    width: min(440px, 58vw) !important;
    padding: 8px 10px !important;
  }

  #instruction {
    font-size: 11px !important;
    -webkit-line-clamp: 2 !important;
  }

  #cedarJourneyMenuToggle {
    top: 8px !important;
    right: 8px !important;
  }

  #controls {
    left: auto !important;
    right: 8px !important;
    bottom: 8px !important;
    width: min(470px, 64vw) !important;
    grid-template-columns: repeat(4, minmax(0,1fr)) !important;
  }

  #controls button {
    min-height: 38px !important;
    font-size: 8px !important;
  }

  #thoughtBox,
  #memoryCard {
    left: 8px !important;
    right: auto !important;
    bottom: 8px !important;
    width: min(430px, 56vw) !important;
  }
}
