/* The Night Road — world styles. Loaded only by night.html.
   Everything is CSS transforms and SVG: no engine, no canvas, cheap on old phones. */

.nr-stage{position:relative;height:min(72vh,520px);border-radius:16px;overflow:hidden;
  border:1px solid rgba(201,162,39,.3);user-select:none;touch-action:none;
  background:linear-gradient(#0B0D24 0%,#101336 55%,#161A40 78%,#0C0E28 100%)}

/* stars */
.nr-stars{position:absolute;inset:0;background-repeat:repeat;opacity:.8;
  background-image:radial-gradient(1px 1px at 20px 30px,#E6E4F0 50%,transparent 50%),
    radial-gradient(1px 1px at 130px 80px,#BFBCD4 50%,transparent 50%),
    radial-gradient(1.5px 1.5px at 240px 40px,#F5D77A 50%,transparent 50%),
    radial-gradient(1px 1px at 320px 120px,#E6E4F0 50%,transparent 50%);
  background-size:380px 200px}
.nr-moon{position:absolute;right:9%;top:9%;width:44px;height:44px;border-radius:50%;
  box-shadow:inset -12px 4px 0 0 #E8E2D0;opacity:.85}

/* the three walking bands — background-position driven by JS */
.nr-band{position:absolute;left:0;right:0;background-repeat:repeat-x;will-change:background-position}
.nr-far{bottom:96px;height:150px;opacity:.85;background-size:900px 150px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='150' viewBox='0 0 900 150'%3E%3Cpath d='M0 150V96C60 70 140 58 210 74c60 14 90 30 160 22 90-10 120-52 210-44 80 7 110 40 180 44 60 3 100-14 140-22v50z' fill='%23131736'/%3E%3C/svg%3E")}
.nr-mid{bottom:78px;height:190px;background-size:1100px 190px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1100' height='190' viewBox='0 0 1100 190'%3E%3Cg fill='%230D1029'%3E%3Cpath d='M0 190v-60c40-8 70-26 100-26s70 22 110 26 90-30 130-30 80 26 120 30v60z'/%3E%3Cpath d='M600 190v-72h14v-16h10l4-26 8-18 8 18 4 26h10v16h14v72z'/%3E%3Cpath d='M636 60l8-22 8 22z'/%3E%3Ccircle cx='644' cy='34' r='3'/%3E%3Cpath d='M840 190v-42c-18-2-30-12-34-28 14 6 22 6 34 4-2-14 4-28 18-36 12 8 20 22 18 36 12 2 22 2 34-4-4 16-16 26-34 28v42z'/%3E%3C/g%3E%3C/svg%3E")}
.nr-near{bottom:0;height:96px;background-size:700px 96px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='700' height='96' viewBox='0 0 700 96'%3E%3Cpath d='M0 96V38c50-6 90-14 150-10s110 16 180 14 130-16 200-12 120 10 170 8v58z' fill='%23080A1E'/%3E%3Cg fill='%23060816'%3E%3Cellipse cx='120' cy='88' rx='60' ry='7'/%3E%3Cellipse cx='420' cy='90' rx='80' ry='8'/%3E%3C/g%3E%3C/svg%3E")}

/* fireflies */
.nr-fly{position:absolute;width:3px;height:3px;border-radius:50%;background:#F5D77A;
  filter:blur(.5px);animation:nr-fly 8s ease-in-out infinite}
@keyframes nr-fly{0%,100%{transform:translate(0,0);opacity:.2}
  30%{transform:translate(26px,-18px);opacity:1}60%{transform:translate(-12px,-30px);opacity:.5}}

/* darkness + the diya's light: radius follows prana via --lightr */
.nr-dark{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle var(--lightr,210px) at 40% 62%,
    transparent 0%,rgba(4,5,14,.25) 55%,rgba(4,5,14,.88) 100%)}
.nr-glow{position:absolute;left:40%;top:62%;width:min(64%,520px);aspect-ratio:1;height:auto;margin:0;
  transform:translate(-50%,-50%) scale(var(--glows,1));
  background:radial-gradient(circle,rgba(232,130,12,.22) 0%,rgba(201,162,39,.10) 40%,transparent 70%);
  animation:nr-breathe 3.4s ease-in-out infinite;pointer-events:none}
@keyframes nr-breathe{0%,100%{opacity:.85}50%{opacity:1}}

/* Meera — sized to the stage, not the pixel. She stands about a third of the night tall. */
.nr-meera{position:absolute;left:38%;bottom:15%;height:32%;aspect-ratio:74/120;width:auto;
  margin:0;transform:translateX(-40%)}
.nr-meera svg{width:100%;height:100%}
.nr-meera.walking{animation:nr-bob 1.1s ease-in-out infinite}
@keyframes nr-bob{0%,100%{transform:translateX(-40%) translateY(0)}
  50%{transform:translateX(-40%) translateY(-1.2%)}}
.nr-flame{transform-origin:50% 100%;animation:nr-flick .9s ease-in-out infinite}
@keyframes nr-flick{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.3)}}

/* world objects, positioned by JS (left set inline), sized to the stage */
.nr-obj{position:absolute;bottom:15%;pointer-events:none;will-change:left}
.nr-obj.done{opacity:.25;filter:saturate(.3)}
.nr-obj svg{height:100%;width:auto;display:block}
.nr-o-rishi{height:24%} .nr-o-shrine{height:26%} .nr-o-stone{height:19%}
.nr-o-order{height:25%} .nr-o-twins{height:22%} .nr-o-gate{height:36%}
.nr-maya{width:auto;height:27%;aspect-ratio:2/3;border-radius:50%;filter:blur(3px);
  background:radial-gradient(ellipse 50% 60% at 50% 40%,rgba(169,173,224,.5),rgba(122,46,46,.22) 60%,transparent 75%);
  animation:nr-shim 3s ease-in-out infinite}
.nr-maya::after{content:"";position:absolute;left:34%;top:22%;width:7px;height:7px;border-radius:50%;
  background:#F5D77A;box-shadow:18px 4px 0 -1px #F5D77A;opacity:.8}
@keyframes nr-shim{0%,100%{opacity:.55;transform:skewX(-3deg)}50%{opacity:.95;transform:skewX(4deg) translateY(-8px)}}
.nr-obj svg{display:block}

/* HUD */
.nr-hud{position:absolute;left:14px;top:12px;right:14px;display:flex;align-items:center;gap:16px;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;z-index:5}
.nr-prana{display:flex;align-items:center;gap:8px;color:#F5D77A}
.nr-pranabar{width:110px;height:8px;border-radius:99px;border:1px solid rgba(201,162,39,.5);overflow:hidden}
.nr-pranabar i{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,#7A2E2E,#E8820C 55%,#F5D77A);transition:width .4s}
.nr-arrows{color:#BFBCD4;display:flex;gap:5px;align-items:center}
.nr-arrows svg{width:15px;height:15px}
.nr-progress{margin-left:auto;color:#8f8caa}

/* walk controls */
.nr-controls{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:space-between;
  padding:0 14px;z-index:5}
.nr-walkbtn{width:56px;height:56px;border-radius:50%;border:1px solid rgba(230,228,240,.25);
  background:rgba(10,12,32,.55);color:#E6E4F0;font-size:1.3rem;cursor:pointer;
  backdrop-filter:blur(3px);touch-action:none}
.nr-walkbtn:active{border-color:var(--lamp);color:#F5D77A}

/* encounter overlay */
.nr-enc{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:rgba(4,5,14,.55);z-index:10;padding:18px}
.nr-card{width:min(560px,94%);max-height:92%;overflow:auto;border-radius:16px;background:#12142C;
  border:1px solid rgba(201,162,39,.35);padding:22px 24px;box-shadow:0 24px 60px rgba(0,0,0,.5)}
.nr-card .who{font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:#A9ADE0;margin:0}
.nr-card .say{font-size:1.02rem;margin:10px 0 16px;line-height:1.6}
.nr-card .row{display:flex;gap:10px;flex-wrap:wrap}
.nr-btn{padding:11px 16px;border-radius:10px;border:1px solid rgba(230,228,240,.2);
  background:#191C38;color:#E6E4F0;font-family:var(--pop);font-weight:700;font-size:.85rem;cursor:pointer}
.nr-btn:hover{border-color:var(--lamp);box-shadow:0 0 14px rgba(201,162,39,.3)}
.nr-btn.gold{border-color:rgba(201,162,39,.5);color:#F5D77A}
.nr-btn[disabled]{opacity:.4;cursor:default;box-shadow:none}
.nr-cost{font-family:var(--mono);font-size:.58rem;color:#8f8caa;letter-spacing:.1em;margin:12px 0 0}
.nr-delta{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;margin:12px 0 0}
.nr-delta.up{color:var(--teal)} .nr-delta.down{color:#D98A86}
.nr-reveal{margin-top:14px;padding:14px 16px;border-radius:10px;background:rgba(42,45,92,.35);
  border-left:3px solid var(--lamp);font-size:.94rem}
.nr-reveal .qa-where{margin-top:8px}

/* the breath shrine ring */
.nr-ring{position:relative;width:150px;height:150px;margin:14px auto}
.nr-ring .c{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(46,125,122,.7);
  transform:scale(.62);transition:transform 3.8s ease-in-out}
.nr-ring .c2{position:absolute;inset:26px;border-radius:50%;transform:scale(.62);
  background:radial-gradient(circle,rgba(232,130,12,.4),rgba(201,162,39,.1) 70%);transition:transform 3.8s ease-in-out}
.nr-ring.in .c,.nr-ring.in .c2,.nr-ring.hold .c,.nr-ring.hold .c2{transform:scale(1)}
.nr-ring p{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:#9FD8D5;margin:0}

/* fail / complete overlays */
.nr-end{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;
  text-align:center;background:rgba(4,5,14,.92);animation:nr-fade 1.2s ease;padding:20px}
@keyframes nr-fade{from{opacity:0}to{opacity:1}}
.nr-end .inner{max-width:480px}
.nr-end h2{font-family:var(--pop);font-weight:800;font-size:1.5rem;margin:0 0 10px;
  background:linear-gradient(92deg,#F5D77A,#E8820C 60%,#F5D77A);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.nr-end p{color:#BFBCD4}
.nr-thatha{font-style:italic;color:#E6E4F0!important;font-size:1.05rem}

@media (prefers-reduced-motion:reduce){
  .nr-fly,.nr-maya,.nr-glow,.nr-flame{animation:none!important}
  .nr-meera.walking{animation:none}
}

/* ---------- phase 2: biomes ---------- */
.nr-mid{transition:opacity 1.6s ease}
.nr-midB{opacity:0}
.nr-tint{position:absolute;inset:0;pointer-events:none;transition:background 1.6s ease}
.nr-biomecap{position:absolute;left:0;right:0;top:16%;text-align:center;margin:0;
  font-family:var(--pop);font-weight:700;font-size:1.05rem;letter-spacing:.06em;
  color:rgba(245,215,122,.0);pointer-events:none}
.nr-biomecap.show{animation:nr-cap 3.4s ease forwards}
@keyframes nr-cap{0%{color:rgba(245,215,122,0)}18%{color:rgba(245,215,122,.9)}
  70%{color:rgba(245,215,122,.9)}100%{color:rgba(245,215,122,0)}}

/* ---------- phase 2: the swan ---------- */
.nr-swan{position:absolute;left:27%;bottom:44%;height:10%;aspect-ratio:60/40;width:auto;
  animation:nr-glide 3.2s ease-in-out infinite;filter:drop-shadow(0 3px 8px rgba(232,226,208,.25))}
@keyframes nr-glide{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.nr-swanline{font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;color:#E8E2D0;
  margin:12px 0 0;padding-left:12px;border-left:2px solid rgba(232,226,208,.5)}

/* ---------- phase 2: keys ---------- */
.nr-keys{display:flex;gap:7px;align-items:center}
.nr-keys i{width:11px;height:11px;border-radius:50%;border:1.5px solid;opacity:.45}
.nr-keys i[data-key="gold"]{color:#C9A227;border-color:#C9A227}
.nr-keys i[data-key="teal"]{color:#2E7D7A;border-color:#2E7D7A}
.nr-keys i[data-key="indigo"]{color:#A9ADE0;border-color:#A9ADE0}
.nr-keys i[data-key="maroon"]{color:#D98A86;border-color:#D98A86}
.nr-keys i.on{opacity:1;background:currentColor;box-shadow:0 0 8px currentColor}
.nr-key{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;margin:12px 0 0}
.nr-key-gold{color:#F5D77A} .nr-key-teal{color:#7FD1CD}
.nr-key-indigo{color:#A9ADE0} .nr-key-maroon{color:#D98A86}

/* ---------- phase 2: the honest stone ---------- */
.nr-stonetext{margin:12px 0 0;padding:14px 16px;border-radius:10px;background:rgba(122,46,46,.12);
  border-left:3px solid var(--maroon);max-height:240px;overflow:auto;font-size:.94rem}
.nr-stonesrc{font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;
  color:#D98A86;margin:0 0 8px}

/* ---------- phase 2: the gate of order ---------- */
.nr-orderrow{display:flex;align-items:center;gap:10px;padding:10px 12px;margin:8px 0 0;
  border-radius:10px;background:rgba(42,45,92,.3);border:1px solid rgba(230,228,240,.12);font-size:.9rem}
.nr-orderrow.right{border-color:var(--teal)}
.nr-orderrow.wrong{border-color:var(--maroon)}
.nr-orderrow .gnum{font-family:var(--mono);font-size:.66rem;color:#8f8caa}
.nr-orderrow .gmove{margin-left:auto;display:flex;gap:5px}
.nr-orderrow .gmove button{width:28px;height:28px;border-radius:6px;border:1px solid rgba(230,228,240,.2);
  background:none;color:#BFBCD4;cursor:pointer}
.nr-orderrow .gmove button:hover{border-color:var(--lamp);color:#F5D77A}

/* ---------- phase 2: the twin sprites ---------- */
.nr-twingrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0 0}
.nr-twincard{min-height:74px;border-radius:10px;border:1px solid rgba(230,228,240,.15);
  background:rgba(25,28,56,.9);color:#E6E4F0;font-size:.76rem;line-height:1.3;padding:8px;
  cursor:pointer;display:flex;align-items:center;justify-content:center;text-align:center}
.nr-twincard.down span{visibility:hidden}
.nr-twincard.down{background:linear-gradient(150deg,#2A2D5C,#1B1E3A)}
.nr-twincard.down::after{content:"ॐ";position:absolute;font-family:var(--display,serif);
  color:#F5D77A;font-size:1.1rem}
.nr-twincard{position:relative}
.nr-twincard.matched{border-color:var(--teal);box-shadow:0 0 0 1px var(--teal);cursor:default}

/* ---------- phase 2: the challenger ---------- */
.nr-replyfull{max-height:260px;overflow:auto}
.nr-card .duel-opt{margin-top:10px}
