:root{--bg: #0d0f14;--panel: #13161e;--panel2: #191c26;--border: #252836;--border2: #2f334a;--green: #4ade80;--green-dim: rgba(74,222,128,.12);--purple: #a78bfa;--purple-dim: rgba(167,139,250,.12);--orange: #fb923c;--orange-dim: rgba(251,146,60,.12);--red: #f87171;--red-dim: rgba(248,113,113,.12);--yellow: #fbbf24;--yellow-dim: rgba(251,191,36,.1);--cyan: #22d3ee;--text: #c9d1e0;--muted: #5a6070;--muted2: #7a8090;--term-bg: #090b0f}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:JetBrains Mono,monospace;font-size:14px;height:100vh;display:flex;flex-direction:column}body:after{content:"";position:fixed;inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,0,0,.04) 3px,rgba(0,0,0,.04) 4px);pointer-events:none;z-index:9999}#root{display:flex;flex-direction:column;flex:1;height:100%}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@keyframes slideD{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes glow{0%,to{box-shadow:0 0 8px var(--green)}50%{box-shadow:0 0 26px var(--green)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.screen-intro{display:flex;flex:1;align-items:center;justify-content:center;gap:34px;text-align:center;padding:40px 20px;flex-direction:column}.intro-logo{font-family:"Press Start 2P",monospace;font-size:clamp(22px,4vw,44px);color:var(--green);line-height:1.5;letter-spacing:3px;text-shadow:0 0 30px rgba(74,222,128,.4),0 0 60px rgba(74,222,128,.15);animation:float 3s ease-in-out infinite}.intro-sub{font-family:"Press Start 2P",monospace;font-size:10px;color:var(--muted2);letter-spacing:4px;margin-top:10px}.intro-term{background:var(--term-bg);border:1px solid var(--border2);border-radius:8px;padding:18px 22px;max-width:520px;width:100%;text-align:left}.tb{display:flex;gap:6px;margin-bottom:14px}.td{width:12px;height:12px;border-radius:50%}.td:nth-child(1){background:#ff5f57}.td:nth-child(2){background:#febc2e}.td:nth-child(3){background:#28c840}.tl{font-size:12px;line-height:2}.tl .p{color:var(--green)}.tl .c{color:var(--text)}.tl .o{color:var(--cyan)}.tl .r{color:var(--red)}.caret{display:inline-block;width:8px;height:13px;background:var(--green);vertical-align:middle;animation:blink 1s step-end infinite}.intro-desc{max-width:460px;color:var(--muted2);line-height:1.9;font-size:13px}.intro-desc strong{color:var(--text)}.chapters-row{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;max-width:560px}.ch-pill{border:1px solid var(--border2);border-radius:4px;padding:5px 12px;font-size:11px;color:var(--muted);display:flex;align-items:center;gap:7px}.ch-pill .cn{font-family:"Press Start 2P",monospace;font-size:7px;color:var(--muted)}.start-btn{font-family:"Press Start 2P",monospace;font-size:11px;padding:16px 36px;background:transparent;border:2px solid var(--green);color:var(--green);border-radius:4px;cursor:pointer;letter-spacing:2px;transition:all .2s;animation:glow 2.5s ease-in-out infinite}.start-btn:hover{background:var(--green);color:var(--bg);box-shadow:0 0 40px #4ade8080}.screen-game{display:flex;flex-direction:column;height:100%;flex:1}.game-main{display:flex;flex-direction:row;flex:1;overflow:hidden;min-height:0}.nav-row{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:8px 20px;border-top:1px solid var(--border);background:var(--panel);flex-shrink:0}.nav-btn{font-family:"Press Start 2P",monospace;font-size:9px;padding:8px 18px;background:transparent;border:1px solid var(--border2);color:var(--muted);border-radius:4px;cursor:pointer;letter-spacing:1px;transition:all .2s}.nav-btn:disabled{opacity:.3;cursor:default}.nav-btn:not(:disabled):hover{border-color:var(--muted2);color:var(--text)}.nav-btn.nav-next.ready{border-color:var(--green);color:var(--green);animation:glow 2.5s ease-in-out infinite}.nav-btn.nav-next.ready:hover{background:var(--green);color:var(--bg)}.story-col{flex:1;display:flex;flex-direction:column;min-width:0}.terminal-col{width:400px;min-width:330px;display:flex;flex-direction:column;border-left:1px solid var(--border);background:var(--term-bg);overflow:hidden}.ch-header{background:var(--panel);border-bottom:1px solid var(--border);padding:11px 20px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;gap:12px}.ch-label{font-family:"Press Start 2P",monospace;font-size:7px;color:var(--yellow);letter-spacing:2px;flex:1;min-width:0}.br-badge{display:flex;align-items:center;gap:7px;background:var(--purple-dim);border:1px solid var(--purple);border-radius:100px;padding:3px 12px;font-size:12px;color:var(--purple);flex-shrink:0}.br-badge-dot{width:7px;height:7px;border-radius:50%;background:var(--purple);animation:pulse 2s ease-in-out infinite}.prog-strip{height:3px;background:var(--border);flex-shrink:0}.prog-fill{height:100%;background:linear-gradient(90deg,var(--green),var(--cyan));transition:width .6s cubic-bezier(.4,0,.2,1)}.story-scroll{flex:1;overflow-y:scroll;padding:24px 28px;display:flex;flex-direction:column;gap:16px}.scene-img{width:calc(100% + 36px);margin:-15px -18px 14px;border-radius:4px 4px 0 0;display:block;object-fit:cover}.narrative{background:var(--panel);border:1px solid var(--border2);border-left:3px solid var(--green);border-radius:0 6px 6px 0;padding:15px 18px;line-height:1.9;font-size:13px;animation:fadeUp .4s ease}.concept-card{border:1px solid;border-radius:6px;animation:fadeUp .4s ease .1s both}.concept-card.init{border-color:var(--cyan)}.concept-card.status{border-color:var(--yellow)}.concept-card.add{border-color:var(--orange)}.concept-card.commit{border-color:var(--green)}.concept-card.branch{border-color:var(--purple)}.concept-card.merge{border-color:var(--orange)}.concept-card.revert{border-color:var(--red)}.concept-hd{display:flex;align-items:center;gap:10px;padding:9px 15px;font-family:"Press Start 2P",monospace;font-size:7px;letter-spacing:1px}.concept-card.init .concept-hd{background:#22d3ee1a;color:var(--cyan)}.concept-card.status .concept-hd{background:var(--yellow-dim);color:var(--yellow)}.concept-card.add .concept-hd{background:var(--orange-dim);color:var(--orange)}.concept-card.commit .concept-hd{background:var(--green-dim);color:var(--green)}.concept-card.branch .concept-hd{background:var(--purple-dim);color:var(--purple)}.concept-card.merge .concept-hd{background:var(--orange-dim);color:var(--orange)}.concept-card.revert .concept-hd{background:var(--red-dim);color:var(--red)}.concept-bd{padding:12px 15px;font-size:12px;line-height:1.85;color:var(--muted2);background:var(--panel2)}.concept-bd strong{color:var(--text)}.concept-bd code{color:var(--yellow)}.concept-hint{margin-top:9px;padding:7px 11px;background:#0000004d;border-radius:4px;font-size:11.5px;color:var(--muted2)}.concept-hint .hl{color:var(--yellow)}.term-hdr{background:var(--panel);border-bottom:1px solid var(--border);padding:9px 15px;display:flex;align-items:center;gap:8px;flex-shrink:0}.term-hdr-dots{display:flex;gap:5px}.term-title{font-family:"Press Start 2P",monospace;font-size:7px;color:var(--muted);letter-spacing:1px;margin-left:4px}.staging-vis{border-bottom:1px solid var(--border);padding:10px 15px;flex-shrink:0;min-height:15%;display:flex;flex-direction:column}.sv-title{font-family:"Press Start 2P",monospace;font-size:7px;color:var(--muted);letter-spacing:2px;margin-bottom:8px}.sv-row{display:flex;align-items:stretch;gap:4px;font-size:11px;flex:1}.sv-zone{flex:1;border:1px solid var(--border2);border-radius:4px;padding:5px 7px;min-height:38px}.sv-zone-label{font-size:9px;color:var(--muted);margin-bottom:3px;letter-spacing:.5px}.sv-arrow{display:flex;align-items:center;color:var(--muted);font-size:14px;padding:0 1px}.sv-file{font-size:10px;padding:1px 5px;border-radius:3px;margin-top:2px;display:inline-block;animation:popIn .3s ease}.sv-file.modified{background:var(--yellow-dim);color:var(--yellow);border:1px solid rgba(251,191,36,.3)}.sv-file.staged{background:var(--green-dim);color:var(--green);border:1px solid rgba(74,222,128,.3)}.sv-file.committed{background:var(--purple-dim);color:var(--purple);border:1px solid rgba(167,139,250,.3)}.sv-file.untracked{background:var(--red-dim);color:var(--red);border:1px solid rgba(248,113,113,.3)}.log-section{border-bottom:1px solid var(--border);padding:10px 15px;flex-shrink:0;max-height:160px;overflow-y:auto}.sec-title{font-family:"Press Start 2P",monospace;font-size:7px;color:var(--muted);letter-spacing:2px;margin-bottom:8px}.log-empty{font-size:11px;color:var(--muted);font-style:italic}.log-entry{display:flex;gap:9px;align-items:flex-start;animation:slideD .3s ease}.log-line{display:flex;flex-direction:column;align-items:center;flex-shrink:0}.log-dot{width:9px;height:9px;border-radius:50%;border:2px solid var(--green);background:var(--term-bg);flex-shrink:0;margin-top:3px}.log-dot.filled{background:var(--green)}.log-dot.d-init{border-color:var(--cyan);background:var(--cyan)}.log-dot.d-purple{border-color:var(--purple);background:var(--purple)}.log-dot.d-orange{border-color:var(--orange);background:var(--orange)}.log-dot.d-red{border-color:var(--red);background:var(--red)}.log-vert{width:2px;flex:1;min-height:10px;background:var(--border2);margin:2px 0}.log-info{flex:1;padding-bottom:7px}.log-hash{font-size:10px;color:var(--yellow)}.log-msg{font-size:11px;color:var(--muted2);margin-top:1px}.log-br-tag{display:inline-block;font-size:9px;background:var(--purple-dim);color:var(--purple);border-radius:3px;padding:1px 5px;margin-top:2px}.br-section{border-bottom:1px solid var(--border);padding:8px 15px;flex-shrink:0}.br-list{display:flex;flex-direction:column;gap:3px;margin-top:7px}.br-row{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);padding:3px 7px;border-radius:3px;border:1px solid transparent;transition:all .2s}.br-row.current{border-color:var(--purple);color:var(--purple);background:var(--purple-dim)}.br-row .bri{font-size:10px}.term-io{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}.term-out{flex:1;overflow-y:auto;padding:10px 15px;display:flex;flex-direction:column;gap:2px;font-size:12px}.tol{line-height:1.7;animation:slideD .2s ease;white-space:pre}.tol.prompt{color:var(--green)}.tol.error{color:var(--red)}.tol.warn{color:var(--yellow)}.tol.ok{color:var(--green)}.tol.info{color:var(--cyan)}.tol.muted{color:var(--muted2)}.tol.status-m{color:var(--red)}.tol.status-s{color:var(--green)}.term-in-row{display:flex;align-items:center;gap:8px;padding:10px 15px;border-top:1px solid var(--border);background:var(--panel);flex-shrink:0}.term-ps{color:var(--green);font-size:12px;flex-shrink:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.term-in{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:JetBrains Mono,monospace;font-size:12px;caret-color:var(--green);min-width:0}.term-in::placeholder{color:var(--muted)}.term-enter{font-size:9px;color:var(--muted);flex-shrink:0}.badges-row{padding:8px 15px;border-top:1px solid var(--border);display:flex;gap:5px;flex-wrap:wrap;flex-shrink:0}.badge{font-size:10px;padding:2px 8px;border-radius:100px;border:1px solid var(--border2);color:var(--muted);transition:all .35s}.badge.unlocked.init{border-color:var(--cyan);color:var(--cyan);background:#22d3ee1a}.badge.unlocked.status{border-color:var(--yellow);color:var(--yellow);background:var(--yellow-dim)}.badge.unlocked.add{border-color:var(--orange);color:var(--orange);background:var(--orange-dim)}.badge.unlocked.commit{border-color:var(--green);color:var(--green);background:var(--green-dim)}.badge.unlocked.branch{border-color:var(--purple);color:var(--purple);background:var(--purple-dim)}.badge.unlocked.merge{border-color:var(--orange);color:var(--orange);background:var(--orange-dim)}.badge.unlocked.revert{border-color:var(--red);color:var(--red);background:var(--red-dim)}.shake{animation:shake .4s ease}.screen-end{display:flex;flex:1;align-items:center;justify-content:center;gap:24px;text-align:center;padding:40px 20px;flex-direction:column}.end-icon{font-size:68px;animation:float 2.5s ease-in-out infinite}.end-title{font-family:"Press Start 2P",monospace;font-size:clamp(13px,2.5vw,22px);color:var(--yellow);line-height:1.7}.cheatsheet{background:var(--panel);border:1px solid var(--border2);border-radius:8px;padding:18px 24px;text-align:left;max-width:580px;width:100%}.cs-title{font-family:"Press Start 2P",monospace;font-size:7px;color:var(--yellow);letter-spacing:2px;margin-bottom:12px}.cs-row{display:flex;gap:14px;padding:6px 0;border-bottom:1px solid var(--border);font-size:11.5px;align-items:baseline}.cs-row:last-child{border-bottom:none}.cs-cmd{color:var(--yellow);min-width:230px}.cs-desc{color:var(--muted2)}.cs-note{font-size:10px;color:var(--muted);margin-top:2px}.end-btn{font-family:"Press Start 2P",monospace;font-size:10px;padding:13px 26px;border:2px solid var(--green);color:var(--green);border-radius:4px;cursor:pointer;background:transparent;letter-spacing:1px;transition:all .2s}.end-btn:hover{background:var(--green);color:var(--bg)}@media(max-width:700px){#root{height:auto}body{height:auto;font-size:13px}.game-main{flex-direction:column;overflow:visible}.terminal-col{width:100%;min-width:0;border-left:none;border-top:1px solid var(--border);height:50vh;flex-shrink:0}.story-col{flex:auto}.screen-game{height:auto}.story-scroll{padding:16px 14px}.scene-img{width:calc(100% + 28px);margin:-15px -14px 14px}.ch-header{padding:9px 14px;gap:8px}.br-badge{padding:3px 8px;font-size:11px}.ch-label{line-height:12px}.nav-row{padding:8px 14px;gap:7px}.nav-btn{padding:7px 12px;font-size:8px}.staging-vis,.log-section{padding:8px 12px}.br-section{padding:6px 12px}.term-out,.term-in-row{padding:8px 12px}.badges-row{padding:6px 12px}.screen-intro{gap:22px;padding:28px 16px}.intro-term{padding:14px 16px}.intro-desc{font-size:12px}.start-btn{padding:14px 24px;font-size:10px}.screen-end{gap:18px;padding:28px 16px}.cheatsheet{padding:14px 16px}.cs-row{flex-direction:column;gap:3px}.cs-cmd{min-width:0}}
