:root{
  --bg:#03130f;
  --bg2:#061b15;
  --panel:#071813;
  --panel2:#081f19;
  --ink:#f4f7f5;
  --muted:#879993;
  --line:#123d31;
  --green:#19d9a0;
  --green2:#0bbf8b;
  --cyan:#21e0c0;
  --red:#ff557f;
  --yellow:#d8ff58;
  --shadow:rgba(0,0,0,.35);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  min-height:100vh;
  color:var(--ink);
  background:
    radial-gradient(circle at 75% 22%,rgba(25,217,160,.09),transparent 27%),
    radial-gradient(circle at 15% 75%,rgba(33,224,192,.055),transparent 24%),
    var(--bg);
  font-family:"DM Sans",sans-serif;
  overflow-x:hidden;
}
button,input{font:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
.scanlines,.noise,.grid{position:fixed;inset:0;pointer-events:none;z-index:0}
.scanlines{opacity:.11;background:repeating-linear-gradient(to bottom,transparent 0,transparent 3px,rgba(255,255,255,.035) 4px)}
.noise{opacity:.04;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E")}
.grid{
  opacity:.2;
  background-image:linear-gradient(rgba(25,217,160,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(25,217,160,.07) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:linear-gradient(to bottom,black,transparent 88%);
}
.orb{position:fixed;border-radius:50%;filter:blur(70px);opacity:.14;pointer-events:none;z-index:0}
.orb-a{width:300px;height:300px;background:var(--green);right:-100px;top:10%;animation:float 8s ease-in-out infinite}
.orb-b{width:220px;height:220px;background:#00a878;left:-100px;bottom:8%;animation:float 11s ease-in-out infinite reverse}
@keyframes float{50%{transform:translate(30px,-20px) scale(1.1)}}

.topbar{
  position:relative;z-index:5;
  width:min(1320px,calc(100% - 48px));margin:18px auto 0;
  min-height:76px;padding:12px 18px 12px 20px;
  display:flex;align-items:center;gap:20px;
  border:1px solid rgba(25,217,160,.22);
  border-radius:28px;
  background:rgba(3,19,15,.78);
  backdrop-filter:blur(18px);
  box-shadow:0 18px 50px var(--shadow);
}
.brand{display:flex;align-items:center;gap:13px;font-weight:800;letter-spacing:.3px}
.brand span:last-child span{color:var(--green)}
.hs{
  width:46px;height:46px;border:1px solid var(--green);border-radius:14px;
  display:grid;place-items:center;color:var(--green);font-family:"JetBrains Mono";font-size:13px;
  box-shadow:inset 0 0 18px rgba(25,217,160,.08);
}
.header-status{margin-left:auto;color:#789088;font:11px "JetBrains Mono";letter-spacing:1.5px;display:flex;align-items:center;gap:8px}
.pulse,.dot{width:8px;height:8px;background:var(--green);border-radius:50%;display:inline-block;box-shadow:0 0 14px var(--green);animation:pulse 1.6s infinite}
@keyframes pulse{50%{opacity:.45;transform:scale(.75)}}
.back{border:1px solid var(--line);padding:13px 16px;border-radius:13px;font:11px "JetBrains Mono";letter-spacing:1px;transition:.2s}
.back:hover{border-color:var(--green);color:var(--green);transform:translateY(-2px)}

main{position:relative;z-index:1;width:min(1320px,calc(100% - 48px));margin:auto;padding:90px 0 80px}
.intro{max-width:850px;margin-bottom:44px}
.eyebrow,.mini-label,.section-label,.card-no{
  font:600 11px "JetBrains Mono";letter-spacing:2.5px;color:#91a39e;
}
.eyebrow{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.intro h1{
  margin:0;
  font-size:clamp(58px,8vw,116px);
  line-height:.87;
  letter-spacing:-5px;
  font-weight:700;
}
.intro h1 em{font-style:normal;color:transparent;-webkit-text-stroke:1.5px var(--green)}
.intro p{max-width:690px;color:#9baca7;font-size:18px;line-height:1.65;margin:28px 0 0}

.game-shell{
  border:1px solid rgba(25,217,160,.22);border-radius:28px;
  background:linear-gradient(135deg,rgba(7,24,19,.94),rgba(5,18,14,.86));
  box-shadow:0 30px 100px rgba(0,0,0,.32),inset 0 1px rgba(255,255,255,.025);
  overflow:hidden;
}
.game-head{display:flex;justify-content:space-between;align-items:center;padding:25px 28px;border-bottom:1px solid var(--line)}
.mini-label{color:var(--green)}
.mini-label span{color:#62736f}
.mission{font:600 16px "JetBrains Mono";margin-top:9px}
.difficulty{display:flex;gap:8px}
.mode,.secondary,.primary{
  border-radius:11px;padding:11px 14px;border:1px solid var(--line);
  background:transparent;color:#8ea19b;font:600 10px "JetBrains Mono";letter-spacing:1px;transition:.2s
}
.mode:hover,.mode.active{border-color:var(--green);color:var(--green);background:rgba(25,217,160,.06)}
.stats{display:grid;grid-template-columns:repeat(4,110px) 1fr;gap:12px;padding:20px 28px;border-bottom:1px solid var(--line)}
.stat{padding-right:14px;border-right:1px solid var(--line)}
.stat small,.progress-wrap small,.record-row small{display:block;color:#687b75;font:10px "JetBrains Mono";letter-spacing:1.3px}
.stat strong{display:block;font:700 28px "JetBrains Mono";margin-top:5px}
.progress-wrap{display:flex;align-items:center;gap:16px;padding-left:10px}
.progress-wrap small{white-space:nowrap}
.progress{height:7px;background:#09271f;border:1px solid #123f32;border-radius:99px;overflow:hidden;flex:1}
.progress span{display:block;width:0;height:100%;background:var(--green);box-shadow:0 0 16px var(--green);transition:.2s}

.terminal{margin:28px;border:1px solid #164d3c;border-radius:19px;overflow:hidden;background:#020b08;box-shadow:inset 0 0 50px rgba(25,217,160,.025)}
.terminal-bar{height:46px;display:flex;align-items:center;gap:14px;padding:0 16px;border-bottom:1px solid #12362c;color:#71837e;font:10px "JetBrains Mono";letter-spacing:1px}
.lights{display:flex;gap:6px}.lights i{width:9px;height:9px;border-radius:50%;background:#173a30}.lights i:first-child{background:#285548}
.terminal-bar span:last-child{margin-left:auto;color:var(--green)}
.terminal-body{min-height:250px;padding:22px;position:relative}
.log{font:11px "JetBrains Mono";line-height:1.9;color:#6c817a}
.log b{color:var(--green)}.log .green{color:var(--green)}.log .muted{color:#4c615b}
.target{margin-top:18px;font:600 clamp(17px,2vw,23px)/1.8 "JetBrains Mono";letter-spacing:.1px;min-height:90px;word-break:break-word}
.target span.done{color:var(--green)}
.target span.current{color:var(--ink);background:rgba(25,217,160,.2);border-bottom:2px solid var(--green)}
.target span.pending{color:#566963}
.target span.error{color:var(--red);background:rgba(255,85,127,.13);text-decoration:underline}
.input-wrap{
  margin:0 28px 28px;display:flex;align-items:center;gap:12px;
  border:1px solid #19523f;border-radius:15px;background:#03110c;padding:15px 17px;
  box-shadow:inset 0 0 25px rgba(25,217,160,.025);
}
.prompt{color:var(--green);font:600 12px "JetBrains Mono";white-space:nowrap}
.input-wrap input{min-width:0;flex:1;background:transparent;border:0;outline:0;color:var(--ink);font:600 15px "JetBrains Mono"}
.input-wrap input::selection{background:var(--green);color:var(--bg)}
.cursor{width:8px;height:19px;background:var(--green);animation:blink .9s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.controls{display:flex;align-items:center;gap:10px;padding:0 28px 28px}
.primary{background:var(--green);color:#02120d;border-color:var(--green);font-family:"DM Sans";font-size:13px;letter-spacing:0;font-weight:800;padding:14px 19px}
.primary:hover{transform:translateY(-2px);box-shadow:0 10px 25px rgba(25,217,160,.18)}
.secondary:hover{border-color:#55756b;color:var(--ink)}
.tip{margin-left:auto;color:#62756f;font:10px "JetBrains Mono"}
.tip span{color:var(--yellow);margin-right:8px}

.mission-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}
.mission-card{padding:26px;border:1px solid var(--line);border-radius:22px;background:rgba(6,24,18,.55);transition:.25s}
.mission-card:hover{transform:translateY(-5px);border-color:#23634e;background:rgba(8,29,22,.8)}
.mission-card h2{font-size:22px;margin:14px 0 8px}
.mission-card p{color:#7f928c;line-height:1.6;margin:0;font-size:14px}

.records{margin-top:60px;border-top:1px solid var(--line);padding-top:25px}
.record-row{display:flex;align-items:center;gap:50px;margin-top:20px}
.record-row strong{font:700 25px "JetBrains Mono";display:block;margin-top:7px}
#clearRecord{margin-left:auto;background:transparent;border:0;color:#60736d;font:10px "JetBrains Mono";letter-spacing:1px}
#clearRecord:hover{color:var(--red)}

.modal{position:fixed;inset:0;z-index:20;background:rgba(1,9,7,.72);backdrop-filter:blur(12px);display:grid;place-items:center;padding:20px}
.modal.hidden{display:none}
.modal-card{width:min(520px,100%);padding:38px;border:1px solid #1d624c;border-radius:25px;background:#061712;box-shadow:0 30px 100px rgba(0,0,0,.5);text-align:center}
.modal-card h2{font-size:42px;letter-spacing:-2px;margin:18px 0}
.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:24px 0}
.result-stats div{border:1px solid var(--line);border-radius:13px;padding:15px}
.result-stats small{display:block;color:#667b74;font:9px "JetBrains Mono"}
.result-stats strong{font:700 25px "JetBrains Mono";color:var(--green);display:block;margin-top:5px}
.modal-card p{color:#8ea19b;margin-bottom:25px}

.toast{position:fixed;right:22px;bottom:22px;z-index:30;background:#071b15;border:1px solid #1d604c;color:var(--green);padding:13px 16px;border-radius:12px;font:10px "JetBrains Mono";transform:translateY(30px);opacity:0;transition:.25s}
.toast.show{transform:translateY(0);opacity:1}

body.hit{animation:hit .18s}
body.fail{animation:fail .2s}
@keyframes hit{50%{filter:brightness(1.25)}}
@keyframes fail{25%{transform:translateX(-4px)}50%{transform:translateX(4px)}75%{transform:translateX(-2px)}}

@media(max-width:850px){
  .topbar{width:calc(100% - 24px);margin-top:12px;border-radius:20px}
  .header-status{display:none}.back{margin-left:auto}
  main{width:calc(100% - 24px);padding-top:55px}
  .intro h1{letter-spacing:-3px}
  .stats{grid-template-columns:repeat(2,1fr)}
  .progress-wrap{grid-column:1/-1;padding:10px 0 0}
  .game-head{align-items:flex-start;gap:20px;flex-direction:column}
  .mission-grid{grid-template-columns:1fr}
  .record-row{gap:18px;flex-wrap:wrap}
  .tip{display:none}
}
@media(max-width:520px){
  .brand>span:last-child{font-size:14px}
  .back{display:none}
  .intro h1{font-size:54px}
  .terminal,.input-wrap{margin-left:14px;margin-right:14px}
  .game-head,.stats,.controls{padding-left:14px;padding-right:14px}
  .difficulty{flex-wrap:wrap}
  .record-row{display:grid;grid-template-columns:1fr 1fr}
  #clearRecord{margin:0}
}


/* Portfolio iframe mode: show the game, hide standalone-site chrome. */
.embed-mode{overflow:hidden;min-height:100%;background:#03130f}
.embed-mode .topbar,.embed-mode .intro,.embed-mode .mission-grid,.embed-mode .records{display:none}
.embed-mode main{width:100%;max-width:none;margin:0;padding:0}
.embed-mode .game-shell{border:0;border-radius:0;box-shadow:none;min-height:774px}
.embed-mode .game-head{padding:22px 28px}
.embed-mode .terminal{min-height:390px}
.embed-mode .controls{padding-bottom:24px}
@media(max-width:720px){.embed-mode .game-shell{min-height:880px}.embed-mode .terminal{min-height:450px}.embed-mode .game-head{padding:18px}.embed-mode .difficulty{flex-wrap:wrap;justify-content:flex-end}.embed-mode .mission{font-size:12px}.embed-mode .stats{grid-template-columns:repeat(2,1fr)}}


/* BREACH//TYPE mobile pass */
@media (max-width: 760px) {
  .topbar {
    width: calc(100% - 20px);
    margin: 10px auto 0;
    min-height: 62px;
    padding: 8px 10px;
    border-radius: 20px;
    gap: 8px;
  }
  .brand { gap: 8px; font-size: 11px; }
  .hs { width: 38px; height: 38px; border-radius: 11px; font-size: 11px; }
  .header-status { display: none; }
  .back { margin-left: auto; padding: 9px 10px; font-size: 8px; }

  main { width: calc(100% - 20px) !important; }
  .intro { padding: 55px 4px 28px !important; }
  .intro h1 { font-size: clamp(42px, 13vw, 64px) !important; line-height: .92; }
  .intro p { font-size: 14px !important; line-height: 1.65 !important; }

  .game-shell { border-radius: 20px; }
  .game-head {
    padding: 17px 14px;
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }
  .mission { font-size: 11px; }
  .difficulty { width: 100%; }
  .mode { flex: 1; padding: 10px 6px; font-size: 8px; }

  .stats {
    grid-template-columns: repeat(2, 1fr) !important;
    padding: 14px;
    gap: 10px;
  }
  .stat {
    padding: 10px 8px;
    border: 1px solid var(--line);
    border-radius: 10px;
  }
  .stat strong { font-size: 22px; }
  .progress-wrap {
    grid-column: 1 / -1;
    padding: 7px 0 0;
  }

  .terminal { margin: 14px; border-radius: 15px; }
  .terminal-bar {
    height: 40px;
    padding: 0 10px;
    font-size: 8px;
  }
  .terminal-bar span:nth-child(2) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .terminal-body { min-height: 240px; padding: 15px; }
  .log { font-size: 9px; }
  .target {
    margin-top: 14px;
    min-height: 100px;
    font-size: clamp(16px, 4.5vw, 21px);
    line-height: 1.75;
  }

  .input-wrap {
    margin: 0 14px 14px;
    padding: 13px;
    gap: 8px;
  }
  .prompt { font-size: 9px; }
  .input-wrap input {
    font-size: 16px !important;
    min-width: 0;
  }
  .cursor { display: none; }

  .controls {
    padding: 0 14px 16px;
    flex-wrap: wrap;
  }
  .controls .primary,
  .controls .secondary {
    flex: 1 1 100%;
  }
  .tip {
    margin: 5px 0 0;
    width: 100%;
    line-height: 1.5;
  }

  .mission-grid { grid-template-columns: 1fr !important; gap: 10px; }
  .mission-card { padding: 19px; }
  .records { margin-top: 35px; }
  .record-row {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
  }
  #clearRecord { grid-column: 1 / -1; margin: 5px 0 0; }
  .modal { padding: 12px; }
  .modal-card { padding: 25px 16px; border-radius: 20px; }
  .modal-card h2 { font-size: clamp(30px, 9vw, 42px); }
  .result-stats { gap: 6px; }
  .result-stats div { padding: 11px 6px; }
}
