:root{
  --bg-void:#0A0E1A;
  --bg-panel:#0F1526;
  --bg-panel-light:#141C33;
  --border-dim:#1E2A47;
  --cyan:#00F0FF;
  --cyan-dim:#0A8A94;
  --magenta:#FF2E9A;
  --green:#39FF88;
  --amber:#FFB13D;
  --text:#C9D4EE;
  --text-dim:#5E6C90;
  --font-display:'Orbitron',sans-serif;
  --font-mono:'JetBrains Mono',monospace;
}

*{box-sizing:border-box;}

/* O atributo HTML "hidden" precisa ganhar de qualquer display:flex/block
   definido em classes (ex: .app, .victory-screen, .boot-screen) — sem isso,
   o navegador ignora o hidden e a tela "escondida" continua aparecendo. */
[hidden]{
  display:none !important;
}

html,body{
  margin:0;
  height:100%;
  background:var(--bg-void);
  color:var(--text);
  font-family:var(--font-mono);
  overflow:hidden;
  -webkit-tap-highlight-color:transparent;
}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
}

/* ---------- CRT / scanline signature ---------- */
.scanline-overlay{
  position:fixed;inset:0;pointer-events:none;z-index:50;
  background:repeating-linear-gradient(
    to bottom,
    rgba(0,240,255,0.035) 0px,
    rgba(0,240,255,0.035) 1px,
    transparent 2px,
    transparent 3px
  );
  mix-blend-mode:screen;
}
.crt-vignette{
  position:fixed;inset:0;pointer-events:none;z-index:51;
  box-shadow:inset 0 0 160px rgba(0,0,0,0.75);
}

/* ---------- Boot screen ---------- */
.boot-screen{
  position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  background:var(--bg-void);z-index:10;padding:24px;
}
.boot-box{
  width:min(560px,100%);
  border:1px solid var(--cyan-dim);
  background:var(--bg-panel);
  border-radius:6px;
  padding:20px;
  box-shadow:0 0 24px rgba(0,240,255,0.15), inset 0 0 30px rgba(0,240,255,0.03);
}
.boot-log{
  font-size:14px;line-height:1.7;color:var(--green);
  min-height:180px;white-space:pre-wrap;
}
.boot-log .dim{color:var(--text-dim);}
.boot-log .warn{color:var(--amber);}
.codename-form{
  margin-top:18px;display:flex;flex-direction:column;gap:10px;
  animation:fadeIn .5s ease both;
}
.codename-form label{
  font-family:var(--font-display);font-size:12px;letter-spacing:1.5px;color:var(--cyan);
}
.codename-form input{
  background:var(--bg-void);border:1px solid var(--cyan-dim);color:var(--cyan);
  font-family:var(--font-mono);font-size:18px;padding:10px 12px;border-radius:4px;
  text-transform:uppercase;letter-spacing:2px;
}
.codename-form input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 10px rgba(0,240,255,0.4);}
.codename-form button{
  background:var(--cyan);color:#00121A;border:none;border-radius:4px;
  font-family:var(--font-display);font-weight:700;letter-spacing:1px;
  padding:12px;font-size:14px;cursor:pointer;
}
.codename-form button:active{transform:scale(0.98);}

/* Botão "Jogar Novamente" exibido dentro do boot log */
.restart-boot-btn{
  margin-top:18px;
  background:var(--green);color:#00210F;border:none;border-radius:4px;
  font-family:var(--font-display);font-weight:700;letter-spacing:1px;
  padding:12px 22px;font-size:14px;cursor:pointer;
  animation:fadeIn .5s ease both;
}
.restart-boot-btn:active{transform:scale(0.98);}

@keyframes fadeIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}

/* ---------- App shell ---------- */
.app{
  height:100%;display:flex;flex-direction:column;
}
.hud-bar{
  flex:0 0 auto;
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 14px;
  background:linear-gradient(to bottom, var(--bg-panel-light), var(--bg-panel));
  border-bottom:1px solid var(--border-dim);
  gap:10px;
}
.hud-left,.hud-right{display:flex;align-items:center;gap:12px;}
.icon-btn{
  background:transparent;border:1px solid var(--border-dim);color:var(--cyan);
  width:34px;height:34px;border-radius:4px;font-size:16px;cursor:pointer;
  display:none;
}
.radar{
  width:26px;height:26px;border-radius:50%;
  border:2px solid var(--cyan);position:relative;
  box-shadow:0 0 10px rgba(0,240,255,0.6);
  animation:radarPulse 2.2s ease-in-out infinite;
}
.radar.working{border-color:var(--magenta);box-shadow:0 0 12px rgba(255,46,154,0.8);animation:radarPulse 0.5s ease-in-out infinite;}
.radar.success{border-color:var(--green);box-shadow:0 0 14px rgba(57,255,136,0.9);animation:none;}
.radar-core{
  position:absolute;inset:6px;border-radius:50%;background:var(--cyan);
}
.radar.working .radar-core{background:var(--magenta);}
.radar.success .radar-core{background:var(--green);}
@keyframes radarPulse{
  0%,100%{opacity:1;transform:scale(1);}
  50%{opacity:0.55;transform:scale(0.85);}
}
.agent-tag{display:flex;flex-direction:column;line-height:1.1;}
.agent-label{font-family:var(--font-display);font-size:9px;letter-spacing:1.5px;color:var(--text-dim);}
.agent-name{font-family:var(--font-display);font-size:14px;color:var(--cyan);letter-spacing:1px;}

.level-block{display:flex;flex-direction:column;align-items:flex-end;gap:4px;}
.level-label{font-family:var(--font-display);font-size:11px;color:var(--text-dim);letter-spacing:1px;}
.level-label b{color:var(--amber);}
.xp-bar{width:120px;height:6px;background:var(--bg-void);border:1px solid var(--border-dim);border-radius:3px;overflow:hidden;}
.xp-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--cyan),var(--green));transition:width .5s ease;}
.clock{font-family:var(--font-display);font-size:13px;color:var(--text-dim);letter-spacing:1px;}

.layout{
  flex:1 1 auto;display:flex;overflow:hidden;min-height:0;
}

/* ---------- Mission log ---------- */
.mission-log{
  width:230px;flex:0 0 auto;
  background:var(--bg-panel);
  border-right:1px solid var(--border-dim);
  padding:14px 10px;overflow-y:auto;
}
.mission-log h2{
  font-family:var(--font-display);font-size:11px;color:var(--text-dim);
  letter-spacing:2px;margin:0 0 10px 4px;
}
.mission-log ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;}
.mission-log li{
  display:flex;align-items:center;gap:8px;
  padding:8px 8px;border-radius:4px;font-size:12px;
  border:1px solid transparent;color:var(--text-dim);
}
.mission-log li .status-dot{width:8px;height:8px;border-radius:50%;background:var(--border-dim);flex:0 0 auto;}
.mission-log li.done{color:var(--green);}
.mission-log li.done .status-dot{background:var(--green);box-shadow:0 0 6px var(--green);}
.mission-log li.active{color:var(--cyan);border-color:var(--cyan-dim);background:rgba(0,240,255,0.05);}
.mission-log li.active .status-dot{background:var(--cyan);box-shadow:0 0 6px var(--cyan);animation:radarPulse 1.4s infinite;}
.mission-log li.locked{color:var(--text-dim);opacity:.5;}

/* ---------- Terminal ---------- */
.terminal-wrap{
  flex:1 1 auto;display:flex;flex-direction:column;min-width:0;
}
.terminal{
  flex:1 1 auto;overflow-y:auto;padding:16px 18px;font-size:14px;line-height:1.65;
}
.terminal .line{margin-bottom:4px;white-space:pre-wrap;word-break:break-word;}
.terminal .line.story{color:var(--text);}
.terminal .line.sys{color:var(--cyan-dim);}
.terminal .line.ok{color:var(--green);}
.terminal .line.err{color:var(--magenta);}
.terminal .line.warn{color:var(--amber);}
.terminal .line.title{color:var(--cyan);font-family:var(--font-display);font-size:13px;letter-spacing:1px;margin-top:14px;}

.briefing-panel{
  flex:0 0 auto;margin:0 14px 10px 14px;padding:10px 12px;
  background:var(--bg-panel);border:1px solid var(--border-dim);border-radius:6px;
}
.briefing-title{font-family:var(--font-display);font-size:12px;color:var(--cyan);margin-bottom:8px;letter-spacing:.5px;}
.command-readout{display:flex;flex-direction:column;gap:4px;}
.command-readout-label{font-size:10px;color:var(--text-dim);letter-spacing:1px;}
.command-readout code{
  font-family:var(--font-mono);font-size:16px;color:var(--amber);
  background:var(--bg-void);border:1px dashed var(--amber);border-radius:4px;
  padding:8px 10px;display:inline-block;
}

.cmd-line{
  flex:0 0 auto;display:flex;align-items:center;gap:8px;
  padding:12px 16px;background:var(--bg-panel);border-top:1px solid var(--border-dim);
}
.cmd-line.shake{animation:shake .35s ease;}
@keyframes shake{
  0%,100%{transform:translateX(0);}
  20%{transform:translateX(-6px);}
  40%{transform:translateX(6px);}
  60%{transform:translateX(-4px);}
  80%{transform:translateX(4px);}
}
.prompt{color:var(--green);font-size:14px;white-space:nowrap;}
#cmd-input{
  flex:1 1 auto;background:transparent;border:none;color:var(--cyan);
  font-family:var(--font-mono);font-size:15px;outline:none;caret-color:var(--cyan);
}
#cmd-input:disabled{opacity:.4;}

/* ---------- Victory ---------- */
.victory-screen{
  position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at center, #0d1f16, var(--bg-void) 70%);
  z-index:20;padding:24px;
}
.victory-box{text-align:center;max-width:480px;}
.victory-box h1{
  font-family:var(--font-display);color:var(--green);font-size:clamp(28px,6vw,44px);
  letter-spacing:2px;text-shadow:0 0 20px rgba(57,255,136,0.6);margin-bottom:14px;
}
.victory-box p{color:var(--text);font-size:15px;line-height:1.6;margin-bottom:22px;}
.victory-box button{
  background:var(--green);color:#00210F;border:none;border-radius:4px;
  font-family:var(--font-display);font-weight:700;padding:14px 22px;font-size:14px;
  letter-spacing:1px;cursor:pointer;
}

/* ---------- Scrollbars ---------- */
.terminal::-webkit-scrollbar, .mission-log::-webkit-scrollbar{width:6px;}
.terminal::-webkit-scrollbar-thumb, .mission-log::-webkit-scrollbar-thumb{background:var(--border-dim);border-radius:3px;}

/* ---------- Responsive (cyberdeck screens are often small) ---------- */
@media (max-width:760px){
  .icon-btn{display:inline-block;}
  .mission-log{
    position:fixed;top:56px;left:0;bottom:0;z-index:15;
    transform:translateX(-100%);transition:transform .25s ease;
    box-shadow:6px 0 20px rgba(0,0,0,0.5);
  }
  .mission-log.open{transform:translateX(0);}
  .hud-right .clock{display:none;}
  .xp-bar{width:80px;}
}

:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;}
