/* ============ TROPHIC — intro: modelul 3D + foc + flood portocaliu ============ */

html,body{height:100%}
body.intro-page{
  overflow:hidden;cursor:crosshair;
  background:radial-gradient(ellipse 80% 60% at 50% 45%,#0d0d10,var(--bg) 70%);
}

/* grid subtil + vignetă pe fundal */
body.intro-page::before{
  content:"";position:fixed;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(255,106,0,.04) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,106,0,.04) 1px,transparent 1px);
  background-size:64px 64px;
}
body.intro-page::after{
  content:"";position:fixed;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 90% 80% at 50% 50%,transparent 55%,rgba(0,0,0,.75));
}

/* scena Three.js */
#scene3d{position:fixed;inset:0;z-index:5;transition:filter .65s ease}
#scene3d canvas{display:block}

/* impact: fundalul cu pistolul se blurează, UI-ul se estompează */
body.impact #scene3d{filter:blur(16px) brightness(.55)}
body.impact .intro-motto,
body.impact .hint,
body.impact .enter-link,
body.impact .credit,
body.impact .intro-brand{opacity:0;transition:opacity .4s ease}

/* logoul ștanțat: tipografie IDENTICĂ cu .intro-brand / .auth-brand,
   așezat pe poziția finală și scalat mare din JS (FLIP) */
#brandStamp{
  position:fixed;z-index:220;pointer-events:none;opacity:0;
  font-family:var(--disp);font-weight:800;font-size:20px;letter-spacing:.08em;
  color:var(--text);transform-origin:top left;will-change:transform,opacity;
}
#brandStamp b{color:var(--orange)}
#brandStamp[hidden]{display:none}
#brandStamp.in{
  opacity:1;
  transition:transform .3s cubic-bezier(.2,.9,.3,1.15),opacity .22s ease;
  text-shadow:0 0 80px rgba(255,106,0,.45);
}
#brandStamp.dock{transition:transform .8s cubic-bezier(.65,0,.22,1);text-shadow:none}

/* branding */
.intro-brand{
  position:fixed;top:32px;left:40px;z-index:10;
  font-family:var(--disp);font-weight:800;font-size:20px;letter-spacing:.08em;
}
.intro-brand b{color:var(--orange)}
.intro-motto{
  position:fixed;top:64px;left:40px;z-index:10;
  font-family:var(--mono);font-size:10px;letter-spacing:.45em;
  text-transform:uppercase;color:var(--muted);
}

/* indicație */
.hint{
  position:fixed;bottom:70px;left:50%;transform:translateX(-50%);
  z-index:10;text-align:center;
  font-family:var(--mono);font-size:12px;letter-spacing:.5em;
  text-transform:uppercase;color:var(--muted);
  animation:hintPulse 2.2s ease-in-out infinite;pointer-events:none;
}
.hint b{color:var(--orange);font-weight:600}
@keyframes hintPulse{0%,100%{opacity:.45}50%{opacity:1}}

.enter-link{
  position:fixed;bottom:28px;left:50%;transform:translateX(-50%);
  z-index:10;font-family:var(--mono);font-size:10px;letter-spacing:.3em;
  text-transform:uppercase;color:var(--muted);border-bottom:1px solid transparent;
  transition:.2s;
}
.enter-link:hover{color:var(--orange);border-color:var(--orange)}

/* creditul modelului (obligatoriu — licență CC-BY) */
.credit{
  position:fixed;bottom:14px;right:16px;z-index:10;
  font-family:var(--mono);font-size:9px;letter-spacing:.08em;color:#55535a;
}
.credit a{color:#7a7780;transition:.2s}
.credit a:hover{color:var(--orange)}

/* flash scurt la foc */
#shotFlash{
  position:fixed;inset:0;z-index:180;pointer-events:none;opacity:0;
  background:radial-gradient(circle at 50% 48%,rgba(255,255,255,.9) 0%,rgba(255,138,42,.5) 22%,transparent 55%);
  transition:opacity .12s ease;
}
#shotFlash.on{opacity:1;transition:none}

/* inundația portocalie de ieșire — val care crește din centru și acoperă tot */
#flood{
  position:fixed;inset:0;z-index:200;pointer-events:none;
  background:radial-gradient(circle at 50% 48%,var(--orange-hot) 0%,var(--orange) 45%);
  clip-path:circle(0% at 50% 48%);
  transition:clip-path 1.05s cubic-bezier(.7,0,.15,1);
  will-change:clip-path;
}
#flood.on{clip-path:circle(142% at 50% 48%)}

/* fallback: modelul lipsește */
#modelMissing{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;pointer-events:none}
#modelMissing[hidden]{display:none}
.mm-box{
  background:var(--surface);border:1px solid var(--line);padding:28px 34px;
  text-align:center;font-family:var(--mono);font-size:12px;line-height:2;color:var(--muted);
  clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);
}
.mm-box b{display:block;color:var(--orange);letter-spacing:.2em;text-transform:uppercase;margin-bottom:6px}
.mm-box code{color:var(--text)}
.mm-box span{display:block;font-size:10px;margin-top:8px;opacity:.7}

@media (max-width:700px){
  .intro-brand{left:24px}
  .intro-motto{left:24px}
  .credit{right:12px;bottom:44px;max-width:70vw;text-align:right}
}

@media (prefers-reduced-motion: reduce){
  body.intro-page{cursor:auto}
  .hint{animation:none}
}
