:root{
  color-scheme:dark;
  --bg:#02050d;
  --panel:rgba(3,9,18,0.72);
  --panel-border:rgba(255,255,255,0.1);
  --text:#f5fbff;
  --muted:#adc2d5;
  --accent:#54e2ff;
  --accent-2:#ff4d7a;
  --shadow:0 24px 80px rgba(0,0,0,0.5);
}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden}
body{
  font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  background:
    radial-gradient(circle at top, rgba(84,226,255,0.12), transparent 32%),
    radial-gradient(circle at bottom, rgba(255,77,122,0.08), transparent 28%),
    var(--bg);
  color:var(--text);
}
.shell{
  width:100%;
  height:100%;
  min-height:100vh;
  min-height:100dvh;
  display:flex;
  align-items:center;
  justify-content:center;
}
.device-frame{
  position:relative;
  width:100%;
  height:100%;
  background:#000;
  overflow:hidden;
}
.stage{
  position:relative;
  width:100%;
  height:100%;
  min-height:100vh;
  min-height:100dvh;
  overflow:hidden;
  background:#000;
}
.scene-video,.fallback-poster{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  background:#000;
}
.fallback-poster{z-index:0}
.scene-video{z-index:1}
.fallback-poster.hidden,.hidden{display:none}
.vignette{
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg, rgba(2,4,10,0.26), rgba(1,3,8,0.78)),
    radial-gradient(circle at 20% 16%, rgba(84,226,255,0.18), transparent 24%),
    radial-gradient(circle at 82% 14%, rgba(255,77,122,0.14), transparent 22%);
  pointer-events:none;
}
.hud,
.caption-panel,
.choice-panel{
  position:relative;
  z-index:2;
}
.hud{
  position:absolute;
  left:max(14px, env(safe-area-inset-left));
  right:max(14px, env(safe-area-inset-right));
  top:max(14px, env(safe-area-inset-top));
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}
.hud-actions{
  display:flex;
  align-items:center;
  gap:8px;
}
.pill,
.pill-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:0 14px;
  border-radius:999px;
  border:1px solid var(--panel-border);
  background:rgba(4,10,20,0.55);
  backdrop-filter:blur(14px);
  color:var(--text);
  font:inherit;
}
.pill{font-size:12px;color:var(--accent)}
.pill-button{cursor:pointer}
.caption-panel{
  position:absolute;
  left:max(12px, env(safe-area-inset-left));
  right:max(12px, env(safe-area-inset-right));
  bottom:max(150px, calc(env(safe-area-inset-bottom) + 128px));
  padding:12px 14px;
  border-radius:24px;
  border:1px solid var(--panel-border);
  background:rgba(3,9,18,0.52);
  backdrop-filter:blur(18px);
  box-shadow:var(--shadow);
}
.speaker{
  margin:0;
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:0.16em;
  color:var(--accent);
}
.dialogue-text{
  margin:8px 0 0;
  font-size:clamp(14px, 3.9vw, 17px);
  line-height:1.48;
  color:var(--text);
}
.choice-panel{
  position:absolute;
  left:max(12px, env(safe-area-inset-left));
  right:max(12px, env(safe-area-inset-right));
  bottom:max(12px, env(safe-area-inset-bottom));
  padding:16px;
  border-radius:28px;
  border:1px solid var(--panel-border);
  background:var(--panel);
  backdrop-filter:blur(18px);
  box-shadow:var(--shadow);
}
.flow-overlay{
  position:absolute;
  inset:0;
  z-index:4;
  padding:max(16px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
  background:rgba(1,4,10,0.74);
  backdrop-filter:blur(18px);
}
.flow-sheet{
  width:100%;
  height:100%;
  border-radius:30px;
  border:1px solid var(--panel-border);
  background:rgba(4,10,20,0.84);
  box-shadow:var(--shadow);
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.flow-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:18px 18px 12px;
  border-bottom:1px solid rgba(255,255,255,0.08);
}
.flow-kicker{
  margin:0;
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:0.16em;
  color:var(--accent);
}
.flow-title{
  margin:6px 0 0;
  font-size:18px;
  line-height:1.2;
}
.flow-map{
  position:relative;
  flex:1;
  overflow:auto;
  padding:14px 18px 28px 52px;
  display:grid;
  gap:12px;
  align-content:start;
}
.flow-map::before{
  content:"";
  position:absolute;
  top:20px;
  bottom:28px;
  left:30px;
  width:2px;
  background:linear-gradient(180deg, rgba(84,226,255,0.38), rgba(84,226,255,0.08));
}
.flow-node{
  position:relative;
  display:grid;
  gap:10px;
  width:100%;
  max-width:320px;
  padding:14px;
  border-radius:22px;
  border:1px solid rgba(255,255,255,0.08);
  background:rgba(255,255,255,0.04);
}
.flow-node::before{
  content:"";
  position:absolute;
  left:-31px;
  top:24px;
  width:12px;
  height:12px;
  border-radius:999px;
  background:var(--accent);
  box-shadow:0 0 0 4px rgba(84,226,255,0.16);
}
.flow-node.current{
  border-color:color-mix(in srgb, var(--accent) 54%, rgba(255,255,255,0.08));
  box-shadow:0 0 0 1px rgba(84,226,255,0.18) inset;
}
.flow-node.start{
  background:linear-gradient(180deg, rgba(84,226,255,0.12), rgba(255,255,255,0.04));
}
.flow-node.ending{
  background:linear-gradient(180deg, rgba(255,77,122,0.12), rgba(255,255,255,0.04));
}
.flow-node.ending::before{
  background:var(--accent-2);
  box-shadow:0 0 0 4px rgba(255,77,122,0.14);
}
.flow-node::after{
  content:"";
  position:absolute;
  left:-25px;
  bottom:-12px;
  width:2px;
  height:12px;
  background:linear-gradient(180deg, rgba(84,226,255,0.4), transparent);
}
.flow-node:last-child::after{display:none}
.flow-node-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.flow-node-eyebrow{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.flow-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:24px;
  padding:0 10px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.08);
  background:rgba(255,255,255,0.06);
  font-size:11px;
  color:var(--muted);
}
.flow-chip.current{
  color:var(--text);
  border-color:rgba(84,226,255,0.35);
}
.flow-node-text{
  margin:0;
  font-size:14px;
  line-height:1.45;
}
.flow-branches{
  display:grid;
  gap:8px;
  padding-left:14px;
  border-left:2px solid rgba(84,226,255,0.12);
}
.flow-branch{
  display:grid;
  gap:4px;
  padding:10px 12px;
  border-radius:16px;
  background:rgba(255,255,255,0.04);
  border:1px solid rgba(255,255,255,0.06);
}
.flow-branch-label{
  font-size:13px;
  color:var(--text);
}
.flow-branch-target{
  font-size:12px;
  color:var(--muted);
}
.choices{
  display:grid;
  gap:10px;
}
.choice,
.continue{
  width:100%;
  appearance:none;
  border:0;
  border-radius:18px;
  padding:14px 16px;
  font:inherit;
  cursor:pointer;
}
.choice{
  text-align:left;
  border:1px solid rgba(255,255,255,0.08);
  background:rgba(255,255,255,0.06);
  color:var(--text);
}
.continue{
  margin-top:12px;
  background:linear-gradient(135deg, var(--accent), var(--accent-2));
  color:#04111b;
  font-weight:800;
}
@media (min-width: 540px){
  .device-frame{
    width:min(430px, calc(100vw - 40px));
    height:min(932px, calc(100dvh - 40px));
    border-radius:34px;
    border:1px solid rgba(255,255,255,0.08);
    box-shadow:0 34px 110px rgba(0,0,0,0.5);
  }
  .stage{
    min-height:0;
    height:100%;
  }
}
@media (max-width: 760px){
  .caption-panel{bottom:max(168px, calc(env(safe-area-inset-bottom) + 144px))}
}
