:root{color-scheme:dark;--bg:#111512;--surface:#1b201c;--ink:#f4f7ed;--muted:#a3afa4;--line:#364037;--green:#c8fa71;--dark:#11190b;--orange:#ffb482;font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}button,input,textarea{font:inherit}button,a,input,textarea{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.42}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--orange);outline-offset:5px}button{color:inherit}button,a{touch-action:manipulation}[hidden]{display:none!important}.wrap{width:min(1320px,calc(100% - 80px));margin:auto}.header{display:flex;justify-content:space-between;align-items:center;min-height:112px;border-bottom:1px solid var(--line);gap:20px}.brand{display:flex;align-items:center;gap:14px;text-decoration:none}.brand strong{font-size:18px;font-weight:650;display:block;letter-spacing:.06em}.brand small{display:block;font-size:12px;letter-spacing:.11em;color:var(--muted);margin-top:7px}.logo{display:grid;place-items:center;background:var(--green);color:var(--dark);font:700 28px Consolas,monospace;width:48px;height:48px;border-radius:12px}.button{border:1px solid var(--line);border-radius:9px;padding:13px 20px;background:transparent;font-weight:600;font-size:15px;display:inline-flex;align-items:center;justify-content:center;gap:18px;text-decoration:none;line-height:1.4}.button:hover{background:#2d352c}.button.primary{background:var(--green);border-color:var(--green);color:var(--dark)}.button.primary:hover{background:#defdac}.button.subtle{background:var(--surface)}.button span{font-size:20px}.intro{display:flex;align-items:end;justify-content:space-between;gap:24px;padding:42px 0 34px}.eyebrow{font:12px/1.5 Consolas,"Courier New",monospace;letter-spacing:.12em;color:var(--muted);margin:0 0 14px}h1{font-size:clamp(30px,3.5vw,49px);line-height:1.28;letter-spacing:-.04em;margin:0;font-weight:600}h1 span{color:var(--green)}.intro-note{font-size:15px;line-height:1.9;color:var(--muted);margin:0}.mobile-only{display:none}.modebar{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.mode{display:flex;align-items:center;gap:18px;text-align:left;border:1px solid var(--line);border-radius:12px;background:transparent;padding:18px 24px;font-size:19px;font-weight:600}.mode:hover{background:#242d24}.mode.active{background:var(--green);color:var(--dark);border-color:var(--green)}.mode-no{font:19px Consolas,monospace;opacity:.6}.mode small{display:block;margin-top:6px;font-size:14px;font-weight:400;opacity:.7}.mode-symbol{margin-left:auto;font-size:32px;font-weight:400}.experience{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:20px}.surface{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}.challenge-main{padding:28px 34px;min-height:500px}.panel-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:30px}.mono{font:12px/1.5 Consolas,monospace;letter-spacing:.13em;color:var(--muted)}.tag{font-size:12px;border:1px solid #58674c;padding:5px 9px;border-radius:5px;color:var(--green)}h2{font-size:28px;font-weight:550;line-height:1.5;letter-spacing:-.025em;margin:0 0 10px}h3{font-size:22px;line-height:1.5;margin:0 0 10px}.muted,.mission-desc{color:var(--muted);line-height:1.8;font-size:16px;margin:0 0 24px}.side{position:relative;padding:32px;background:#20271f}.side h2{font-size:30px}.steps{padding:0;margin:28px 0 0;list-style:none}.steps li{display:flex;align-items:center;gap:14px;padding:17px 0;border-top:1px solid var(--line)}.steps li>span{display:grid;place-items:center;height:34px;width:34px;border-radius:50%;border:1px solid #52604f;font:14px Consolas,monospace;color:var(--muted);flex:none}.steps li.current>span,.steps li.done>span{background:var(--green);color:var(--dark);border-color:var(--green)}.steps li div{font-size:16px}.steps small{display:block;font-size:13px;margin-top:6px;color:var(--muted)}.steps b{font-weight:400;font-size:12px;margin-left:auto;color:var(--muted);flex:none}.steps li.current b,.steps li.done b{color:var(--green)}.side-note{display:flex;gap:12px;align-items:center;color:var(--muted);border-top:1px solid var(--line);margin-top:2px}.side-note>span{font-size:28px;color:var(--green)}.side-note p{font-size:14px;line-height:1.8}.access-stamp{display:flex;align-items:center;justify-content:space-between;border-top:1px dashed #52604f;padding-top:22px;margin-top:6px}.access-stamp span{font:12px/1.5 Consolas,monospace;letter-spacing:.16em;color:var(--muted)}.access-stamp strong{font-size:19px;line-height:1.3;color:var(--green);transform:rotate(-8deg);font-weight:500}.binary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:26px 0}.bit{border:1px solid #485443;border-radius:12px;background:#121711;padding:19px 8px;transition:background .15s}.bit .digit{display:block;font:48px/1.2 Consolas,monospace}.bit .weight{display:block;font-size:13px;color:var(--muted);margin-top:12px}.bit[aria-pressed=true]{background:var(--green);color:var(--dark);border-color:var(--green)}.bit[aria-pressed=true] .weight{color:#3d5629}.sumline{display:flex;justify-content:space-between;align-items:center;padding:16px 0 24px;border-bottom:1px solid var(--line);margin-bottom:20px;color:var(--muted)}.sumline strong{font:28px Consolas,monospace;color:var(--ink)}.target{color:var(--green)!important}.actions{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.text-button{border:0;border-bottom:1px solid #6b7863;background:none;color:var(--muted);padding:6px 0;font-size:14px}.feedback{font-size:15px;line-height:1.8;color:var(--orange);margin:14px 0 0}.feedback.success{color:var(--green)}.feedback:empty{display:none}.hint{padding:12px 16px;border-left:2px solid var(--green);font-size:14px;line-height:1.8;background:#141a13;color:#c7d4c1;margin:16px 0}.next-strip{display:flex;align-items:center;gap:26px;margin:26px 0 36px;padding:26px 0;border-block:1px solid var(--line)}.next-number{font:12px/1.5 Consolas,monospace;letter-spacing:.15em;color:var(--green)}.next-strip h2{font-size:19px;margin:0 0 6px}.next-strip p{font-size:14px;color:var(--muted);margin:0;line-height:1.8}.next-strip .button{margin-left:auto;flex:none}.footer{display:flex;justify-content:space-between;gap:20px;padding-bottom:30px;font-size:12px;color:var(--muted)}.footer>span:first-child{font-family:Consolas,monospace;letter-spacing:.14em}dialog{background:var(--surface);border:1px solid #53604b;border-radius:20px;color:var(--ink);width:min(520px,calc(100% - 32px));padding:36px;max-height:calc(100dvh - 40px)}dialog::backdrop{background:#050a07cc;backdrop-filter:blur(8px)}dialog h2{font-size:25px}dialog .close{position:absolute;top:12px;right:16px;background:none;border:none;font-size:28px;color:var(--muted)}.privacy{font-size:13px;line-height:1.8;color:var(--muted);margin:24px 0 0}.join-empty{border:1px dashed #617052;border-radius:12px;padding:22px;margin:24px 0;line-height:1.9;color:#c5d1be}.qr{display:block;width:min(230px,100%);height:auto;margin:24px auto;background:white;padding:10px;border-radius:10px}.join-number{text-align:center;overflow-wrap:anywhere}.skip-link{position:absolute;left:16px;top:-100px;z-index:50;background:var(--green);color:var(--dark);padding:12px}.skip-link:focus{top:16px}.lab-layout{grid-template-columns:minmax(300px,.95fr) minmax(0,1.65fr)}.lab-controls{padding:26px}.lab-controls h2{font-size:28px}.visualizer{position:relative;background:#090e0b;min-height:565px;display:flex;flex-direction:column}.visualizer-header{display:flex;align-items:center;justify-content:space-between;padding:17px 22px;z-index:1}.icon-button{border:1px solid var(--line);background:#161e16;border-radius:6px;min-width:38px;min-height:38px;font-size:23px}.visualizer canvas{width:100%;height:440px;flex:1;min-height:300px;display:block;touch-action:pan-y}.canvas-caption{display:flex;justify-content:space-between;gap:16px;padding:18px 22px;color:var(--muted);font-size:12px}.canvas-caption>span:first-child{font-family:Consolas,monospace;letter-spacing:.08em}.visualizer:fullscreen{border:0;border-radius:0;width:100vw;height:100dvh}.visualizer:fullscreen canvas{height:calc(100dvh - 130px)}.preset-row{display:flex;gap:8px;margin:20px 0 18px}.preset{flex:1;min-height:38px;background:transparent;border:1px solid #4d5d44;border-radius:6px;font-size:14px}.preset[aria-pressed=true]{color:var(--green);border-color:var(--green);background:#2c3824}.code-label{display:flex;justify-content:space-between;font-size:12px;font-family:Consolas,monospace;color:var(--muted);margin-bottom:8px}.code-input{background:#111811;color:#d3f5a8;resize:vertical;width:100%;min-height:142px;padding:14px;font:15px/1.9 Consolas,monospace;border:1px solid var(--line);border-radius:8px;tab-size:2}.syntax-note{font-size:13px;color:var(--muted);line-height:1.7;margin:10px 0 18px}.lab-task{border-top:1px solid var(--line);margin-top:22px;padding-top:18px;font-size:14px;line-height:1.8}.lab-task strong{color:var(--green);font-weight:500}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;width:220px;flex:none}.cell{aspect-ratio:1;display:grid;place-items:center;border:1px solid #374b36;border-radius:7px;font:20px Consolas,monospace;background:#141b14}.cell.wall{background:repeating-linear-gradient(45deg,#283426,#283426 5px,#20291e 5px,#20291e 10px);color:#6e7e61}.cell.goal{color:var(--green);border-color:var(--green)}.cell.bot{background:var(--green);color:var(--dark);font-size:26px}.robot-area{display:flex;align-items:start;gap:24px;margin:24px 0}.robot-instructions{flex:1;min-width:0}.queue{min-height:55px;background:#111811;border:1px dashed #566747;border-radius:8px;padding:12px;color:var(--green);font:21px/1.6 Consolas,monospace;overflow-wrap:anywhere;letter-spacing:.12em}.queue:empty::after{content:'等待指令…';font:14px sans-serif;color:var(--muted);letter-spacing:0}.directions{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:12px 0}.directions button{background:#303d2a;border:1px solid #52654a;border-radius:7px;font-size:24px;min-height:44px}.queue-info{font-size:12px;color:var(--muted);line-height:1.8}.security-options{display:grid;gap:10px;margin:24px 0}.security-choice{padding:14px 16px;text-align:left;background:#121912;border:1px solid #43513c;border-radius:9px;display:flex;gap:12px;align-items:start;font-size:15px;line-height:1.7}.security-choice span:first-child{font-family:Consolas,monospace;color:var(--muted)}.security-choice.selected{border-color:var(--green);background:#2e3d24}.security-choice.selected span:first-child{color:var(--green)}.terminal-message{border-left:2px solid var(--orange);background:#151c14;padding:14px 18px;font-size:14px;line-height:1.9;color:#dbe3d3}.terminal-message b{color:var(--orange);font-weight:500}.finish-header{display:flex;align-items:center;gap:14px;margin-bottom:18px}.finish-header>span{display:grid;place-items:center;background:var(--green);color:var(--dark);border-radius:50%;width:50px;height:50px;font-size:27px;flex:none}.finish-header h2{font-size:26px;margin:0}.ticket{padding:24px;border-radius:13px;border:1px solid #778766;background:linear-gradient(115deg,#364729,#1d281c);margin-bottom:20px;position:relative}.ticket-top{display:flex;justify-content:space-between;font:12px Consolas,monospace;color:#b7c5a8;gap:16px}.ticket h3{font-size:28px;margin:24px 0 8px;color:var(--green)}.ticket p{font-size:14px;color:#b9c9ab;line-height:1.8;margin:0}.ticket-bottom{display:flex;justify-content:space-between;align-items:end;margin-top:20px;border-top:1px dashed #5a6c4b;padding-top:16px}.ticket-bottom strong{font:30px Consolas,monospace;color:var(--green)}.nickname-label{font-size:14px;color:var(--muted);display:block;margin-bottom:10px}.nickname{min-width:0;width:100%;border:1px solid var(--line);border-radius:7px;background:#111811;padding:11px 13px;color:var(--ink);margin-bottom:18px}.finished-actions{display:flex;gap:10px;flex-wrap:wrap}
@media(min-width:1550px){.intro{padding-block:50px 40px}.challenge-main{min-height:535px}.binary{margin-top:38px}}
@media(max-width:1000px){.wrap{width:calc(100% - 40px)}.intro-note{display:none}.challenge-main{padding:24px}.side{padding:25px}.experience{grid-template-columns:minmax(0,1.35fr) minmax(270px,1fr)}.side h2{font-size:25px}.robot-area{flex-direction:column}.robot-instructions{width:100%}.grid{width:min(100%,260px);margin:auto}.next-strip .button{font-size:14px;padding:12px}.lab-layout{grid-template-columns:1fr 1.2fr}}
@media(max-width:700px){.wrap{width:calc(100% - 32px)}.header{min-height:88px;gap:10px}.logo{width:40px;height:40px;font-size:24px}.brand{gap:9px}.brand strong{font-size:16px}.brand small{font-size:10px;letter-spacing:0;margin-top:5px}.header .button{font-size:13px;padding:9px 10px;gap:8px}.intro{padding:30px 0 24px}.eyebrow{font-size:10px}.mobile-only{display:block}h1{font-size:35px;line-height:1.38}.modebar{gap:8px;margin-bottom:14px}.mode{padding:14px 12px;font-size:15px;gap:9px;align-items:start}.mode-no{font-size:13px;padding-top:3px}.mode small{font-size:12px;line-height:1.6;margin-top:5px}.mode-symbol{display:none}.experience{grid-template-columns:1fr;gap:14px}.challenge-main{padding:22px 20px;min-height:0}.panel-top{margin-bottom:24px}h2{font-size:25px}.mission-desc{font-size:15px}.binary{gap:8px}.bit{padding:18px 4px}.bit .digit{font-size:39px}.side{padding:22px}.side h2{font-size:22px}.side h2 br{display:none}.side .eyebrow{margin-bottom:8px}.steps{margin:16px 0 0}.steps li{padding:12px 0}.access-stamp{display:none}.side-note p{margin-bottom:0}.next-strip{flex-wrap:wrap;gap:14px;margin-bottom:24px}.next-number{display:none}.next-strip h2{font-size:17px}.next-strip .button{margin-left:0;width:100%;margin-top:4px}.next-strip p{font-size:13px}.footer{flex-direction:column;gap:12px;font-size:11px}.lab-layout{display:flex;flex-direction:column}.lab-controls{padding:22px}.visualizer{min-height:380px}.visualizer canvas{height:330px}.canvas-caption{flex-direction:column;gap:8px}.robot-area{flex-direction:row;gap:15px}.grid{width:47%;margin:0}.robot-instructions{width:auto}.directions{grid-template-columns:repeat(2,1fr)}.directions button{min-height:39px}.queue{font-size:18px;padding:7px}.queue-info{font-size:11px}.ticket{padding:20px}.ticket h3{font-size:25px}.ticket-top{font-size:10px}.ticket p{font-size:13px}dialog{padding:30px 24px}.actions .button{padding:12px 16px}.lab-controls h2 br{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
.header-label{letter-spacing:.1em}@media(max-width:700px){.header-label{font-size:10px;max-width:92px;text-align:right;line-height:1.8}.modebar{scroll-margin-top:12px}}
.card-preview{display:block;width:100%;height:auto;border-radius:9px;margin-top:18px;border:1px solid var(--line)}
@media(max-width:700px){.lab-layout .visualizer{order:-1;position:sticky;top:8px;z-index:2;min-height:240px;height:260px;flex:none;box-shadow:0 8px 28px #0008}.lab-layout .visualizer canvas{height:155px;min-height:130px;flex:1}.lab-layout .visualizer-header{padding:10px 16px}.lab-layout .canvas-caption{padding:10px 16px}.lab-layout .canvas-caption>span+span{display:none}.lab-layout .visualizer:fullscreen{height:100dvh;top:0}.lab-layout .visualizer:fullscreen canvas{height:calc(100dvh - 115px)}}
