:root{--bg:#0b0e15;--bg-2:#11151f;--panel:#161b28;--panel-2:#1c2233;--panel-3:#232b3f;--line:#2a3347;--line-soft:#212838;--text:#e6ebf5;--text-2:#a3aec4;--text-3:#6f7b93;--good:#5fd39a;--good-dim:#1e5a45;--warn:#e8b64c;--warn-dim:#6b4f1a;--bad:#e8685d;--bad-dim:#6b2620;--net:#6fb4e8;--net-dim:#23475f;--sky-1:#241d33;--sky-2:#45304a;--sky-3:#7c4a44;--ground:#2b2436;--ground-2:#3d3348;--radius:10px;--radius-sm:6px;--font-ui:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-pixel:"Press Start 2P", "Courier New", monospace;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Consolas, monospace;--shadow:0 10px 30px #00000073;--step:.22s;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:radial-gradient(1200px 600px at 50% -10%, #1a2133 0%, transparent 60%), var(--bg);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5;overflow-x:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}:focus-visible{outline:3px solid var(--net);outline-offset:2px;border-radius:3px}.pixel{font-family:var(--font-pixel);letter-spacing:.02em;line-height:1.6}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app{flex-direction:column;gap:10px;max-width:1500px;height:100dvh;margin:0 auto;padding:12px 16px 14px;display:flex;overflow:hidden}.stage{flex:auto;grid-template-columns:200px minmax(0,1fr);align-items:stretch;gap:10px;min-height:0;display:grid}.stage>*{min-height:0;max-height:100%}.panel{background:linear-gradient(180deg, var(--panel-2), var(--panel));border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.panel-head{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.panel-title{font-family:var(--font-pixel);color:var(--text-3);letter-spacing:.08em;font-size:9px}.topbar{background:linear-gradient(180deg, var(--panel-2), var(--panel));border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;flex:none;align-items:center;gap:18px;padding:10px 14px;display:flex}.logo{flex:none;align-items:center;gap:9px;display:flex}.logo-mark{image-rendering:pixelated;display:block}.rules-toggle{align-items:center;gap:6px;display:inline-flex}.rules-backdrop{z-index:40;background:#04060a9e;animation:.18s ease-out both fade-in;display:none;position:fixed;inset:0}.rules-close{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-2);color:var(--text-2);padding:5px 9px;font-size:11px;display:inline-flex}.logo-text{font-family:var(--font-pixel);letter-spacing:.04em;background:linear-gradient(180deg, #fff 30%, var(--warn) 100%);color:#0000;text-shadow:0 2px #00000059;-webkit-background-clip:text;background-clip:text;font-size:17px}.stat-row{flex-wrap:wrap;flex:1;justify-content:flex-end;gap:8px;display:flex}.stat{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:var(--radius-sm);text-align:left;min-width:76px;padding:5px 10px}.stat-label{letter-spacing:.12em;color:var(--text-3);text-transform:uppercase;font-size:9px;display:block}.stat-value{font-family:var(--font-pixel);color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap;margin-top:4px;font-size:13px;display:block}.stat-value.is-good{color:var(--good)}.stat-value.is-warn{color:var(--warn)}.stat-value.is-bad{color:var(--bad)}.stat-value.is-net{color:var(--net)}.stat.is-pulse .stat-value{animation:.32s ease-out pop}.session-dot{background:var(--good);vertical-align:1px;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block;box-shadow:0 0 8px}.session-dot.is-warn{background:var(--warn)}.session-dot.is-bad{background:var(--bad)}.link-btn{letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 10px;font-size:11px}.link-btn:hover{color:var(--text);border-color:var(--net-dim)}.world{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg, var(--sky-1) 0%, var(--sky-2) 46%, var(--sky-3) 78%, #93564a 100%);height:186px;box-shadow:var(--shadow);flex:none;position:relative;overflow:hidden}.world:before{content:"";pointer-events:none;background:linear-gradient(#0000,#ffbe8c24);height:60px;position:absolute;inset:auto 0 42%}.world-stars{pointer-events:none;opacity:.5;position:absolute;inset:0 0 50%}.world-ground{background:linear-gradient(180deg, var(--ground), var(--ground-2));border-top:2px solid #56405c;height:34%;position:absolute;inset:auto 0 0}.world-ground:after{content:"";background:repeating-linear-gradient(90deg,#fff0dc1f 0 10px,#0000 10px 24px);height:2px;position:absolute;inset:8px 0 auto}.world-inner{margin-inline:auto;position:absolute;inset:0}.world-nodes{align-items:flex-end;padding-bottom:14px;display:flex;position:absolute;inset:0}.node{flex-direction:column;flex:1 1 0;align-items:center;gap:2px;min-width:0;display:flex;position:relative}.node-art{filter:drop-shadow(0 4px #00000047);justify-content:center;align-items:flex-end;display:flex;position:relative}.node-building{image-rendering:pixelated}.node-trade{image-rendering:pixelated;filter:drop-shadow(0 0 10px #6fb4e873);margin-bottom:18px;animation:1.2s steps(2,end) infinite packet-bob}.node-person{image-rendering:pixelated;animation:2.6s step-end infinite idle-bob;position:absolute;bottom:0;right:2px}.node-shadow{filter:blur(1px);background:#0c08128c;border-radius:50%;width:32px;height:5px;position:absolute;bottom:1px;right:2px}.node-riser{background:repeating-linear-gradient(180deg, var(--tint,var(--net)) 0 3px, transparent 3px 6px);opacity:.5;width:2px;height:18px;position:absolute;bottom:100%;left:50%;translate:-50%}.node.is-active .node-riser{opacity:1}.node.is-desk .node-person{animation:.9s step-end infinite idle-type;bottom:2px;right:auto}.node-label{font-family:var(--font-pixel);letter-spacing:.06em;white-space:nowrap;text-overflow:ellipsis;background:#090b11bd;border:1px solid #ffffff17;border-radius:3px;max-width:100%;padding:2px 6px;font-size:8px;overflow:hidden}.node.is-active .node-label{color:#0a0d14;background:var(--tint,var(--net));border-color:var(--tint,var(--net));font-weight:700}.node.is-active .node-art{filter:drop-shadow(0 0 10px #ffffff59)drop-shadow(0 4px #00000047)}.node.react-bad .node-person{animation:.42s steps(2,end) 2 recoil}.node.react-good .node-person{animation:.42s steps(2,end) 2 cheer}.cables{pointer-events:none;height:4px;position:absolute;top:38%;left:0;right:0}.cable{background:linear-gradient(90deg, var(--net-dim), #35526b, var(--net-dim));opacity:.8;border-radius:2px;height:3px;position:absolute;top:0}.cable:after{content:"";background:repeating-linear-gradient(90deg,#8fd0ff8c 0 6px,#0000 6px 16px);animation:.9s linear infinite crawl;position:absolute;inset:0}.cable.is-hot:after{animation-duration:.32s}.cable.is-bad{background:var(--bad-dim);animation:.26s step-end 4 cable-flash}.cable.is-bad:after{background:repeating-linear-gradient(90deg, var(--bad) 0 6px, transparent 6px 16px)}.cable.is-warn{background:var(--warn-dim);animation:.3s step-end 3 cable-flash}.cable.is-warn:after{background:repeating-linear-gradient(90deg, var(--warn) 0 6px, transparent 6px 16px)}.cable.is-good:after{background:repeating-linear-gradient(90deg, var(--good) 0 6px, transparent 6px 16px)}.cable.is-dead{opacity:.5;background:#33202a}.cable.is-dead:after{opacity:.2;animation:none}.packet{image-rendering:pixelated;filter:drop-shadow(0 0 6px #6fb4e88c);top:-9px;left:var(--from);animation:packet-travel var(--dur,.9s) steps(18) forwards, packet-bob 1.1s steps(2) var(--dur,.9s) infinite;position:absolute;translate:-50%}.packet.is-good{filter:drop-shadow(0 0 8px #5fd39ab3)}.packet.is-warn{filter:drop-shadow(0 0 8px #e8b64cb3)}.packet.is-bad{filter:drop-shadow(0 0 8px #e8685db3)}.packet.is-waiting{left:var(--to);animation:1.1s steps(2,end) infinite packet-hover}.packet-alert{font-family:var(--font-pixel);white-space:nowrap;border-radius:4px;padding:3px 7px;font-size:8px;animation:.42s ease-out both rise;position:absolute;top:-40px;translate:-50%}.packet-alert.is-bad{background:var(--bad);color:#2a0f0c}.packet-alert.is-warn{background:var(--warn);color:#2e2205}.packet-alert.is-good{background:var(--good);color:#05261a}.route-ribbon{font-family:var(--font-pixel);letter-spacing:.06em;background:#090b11b8;border:1px solid #ffffff14;border-radius:999px;align-items:center;gap:5px;max-width:calc(100% - 16px);padding:4px 8px;font-size:7px;display:flex;position:absolute;top:8px;left:8px;overflow:hidden}.route-ribbon .hop{color:var(--text-3);white-space:nowrap}.route-ribbon .hop.is-you{color:var(--good)}.route-ribbon .arrow{color:var(--line)}.world-banner{font-family:var(--font-pixel);letter-spacing:.06em;border:1px solid var(--net-dim);color:var(--net);z-index:3;background:#090b11e0;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:8px;animation:.42s ease-out both rise;display:flex;position:absolute;top:10px;left:50%;translate:-50%}.sender{grid-template-columns:38px minmax(0,1fr);align-self:start;align-items:start;gap:9px;padding:10px;display:grid;overflow:visible}.sender-art{background:var(--bg-2);border:1px solid var(--line-soft);border-radius:var(--radius-sm);justify-content:center;align-items:flex-end;padding:5px 2px;display:flex;position:relative}.sender-person{image-rendering:pixelated;animation:2.4s step-end infinite idle-bob}.sender-glow{background:radial-gradient(60% 100%,#0000008c,#0000 70%);height:6px;position:absolute;inset:auto 0 10px}.sender-body{padding:0}.sender-name{font-family:var(--font-pixel);margin:3px 0 4px;font-size:8px;line-height:1.7}.sender-role{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);margin-bottom:8px;font-size:11px}.sender-blurb{color:var(--text-2);margin:0;font-size:11.5px;line-height:1.4}.sender-meta{gap:4px;margin:8px 0 0;display:grid}.sender-meta>div{border-top:1px solid var(--line-soft);gap:1px;padding-top:4px;display:grid}.sender-meta dt{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-size:8px}.sender-meta dd{font-family:var(--font-mono);color:var(--net);overflow-wrap:anywhere;margin:0;font-size:10px;line-height:1.35}.sender-link{border-top:1px solid var(--line-soft);color:var(--text-3);justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding-top:10px;font-size:12px;display:flex}.sender-link b{color:var(--net);font-family:var(--font-mono);font-weight:500}.message{flex-direction:column;display:flex;position:relative;overflow:hidden}.message-head{border-bottom:1px solid var(--line-soft);background:linear-gradient(#6fb4e814,#0000);align-items:center;gap:10px;padding:12px 14px;display:flex}.msg-type{font-family:var(--font-pixel);letter-spacing:.03em;font-size:13px}.msg-tag{font-family:var(--font-mono);background:var(--net-dim);color:#cfe8fb;border-radius:4px;padding:2px 6px;font-size:11px}.msg-dup{font-family:var(--font-pixel);background:var(--warn-dim);color:var(--warn);border:1px solid var(--warn);border-radius:4px;padding:4px 7px;font-size:8px;animation:1.4s ease-in-out infinite pulse-soft}.msg-spacer{flex:1}.msg-clock{flex:none;width:44px;height:44px;position:relative}.msg-clock svg{display:block;transform:rotate(-90deg)}.msg-clock-text{font-family:var(--font-pixel);font-variant-numeric:tabular-nums;place-items:center;font-size:10px;display:grid;position:absolute;inset:0}.message-head{flex:none}.message-body{scrollbar-width:thin;scrollbar-color:var(--line) transparent;flex-direction:column;flex:auto;gap:10px;min-height:0;padding:14px;display:flex;overflow-y:auto}.message-foot{flex:none}.field-grid{gap:2px;display:grid}.field{border-radius:var(--radius-sm);background:#ffffff06;border:1px solid #0000;grid-template-columns:108px 1fr auto;align-items:center;gap:10px;padding:7px 10px;display:grid}.field:nth-child(odd){background:#ffffff0b}.field-label{letter-spacing:.12em;color:var(--text-3);font-size:11px}.field-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:16px;font-weight:500}.field-tag{font-family:var(--font-mono);color:var(--text-3);opacity:.75;font-size:10px}.field.is-missing{background:#e8685d1f;border-color:#e8685d73}.field.is-missing .field-value{color:var(--bad);letter-spacing:.1em;font-size:13px}.field.is-seq{background:#6fb4e81a;border-color:#6fb4e84d}.field.is-seq .field-value{color:var(--net);font-size:18px}.field.is-dup{background:#e8b64c1f;border-color:#e8b64c66}.field.is-dup .field-value{color:var(--warn)}.seq-hint{border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--line-soft);color:var(--text-2);align-items:center;gap:8px;padding:8px 10px;font-size:12px;display:flex}.seq-hint b{font-family:var(--font-mono);color:var(--text)}.seq-hint .chip{font-family:var(--font-pixel);background:var(--panel-3);color:var(--text-3);border-radius:3px;padding:3px 6px;font-size:8px}.message-foot{border-top:1px solid var(--line-soft);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;display:flex}.raw-fix{border-radius:var(--radius-sm);border:1px solid var(--line);font-family:var(--font-mono);white-space:nowrap;background:#080b11;padding:10px 12px;font-size:13px;line-height:1.9;overflow-x:auto}.raw-tag{color:var(--net)}.raw-eq{color:var(--text-3)}.raw-val{color:var(--text)}.raw-pipe{color:var(--line);padding:0 2px}.raw-legend{color:var(--text-3);grid-template-columns:repeat(auto-fill,minmax(164px,1fr));gap:3px 12px;margin-top:8px;font-size:10.5px;display:grid}.raw-legend>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.raw-legend b{font-family:var(--font-mono);color:var(--text-2);font-weight:500}.feedback{background:var(--panel);border-top:2px solid var(--line);z-index:2;padding:14px;animation:.26s ease-out both slide-up;position:absolute;inset:auto 0 0;box-shadow:0 -14px 24px #090b11b8}.feedback.is-good{border-top-color:var(--good)}.feedback.is-bad{border-top-color:var(--bad)}.feedback-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;display:flex}.feedback-verdict{font-family:var(--font-pixel);font-size:15px}.feedback.is-good .feedback-verdict{color:var(--good)}.feedback.is-bad .feedback-verdict{color:var(--bad)}.feedback-points{font-family:var(--font-pixel);color:var(--good);font-size:13px;animation:.36s ease-out pop}.feedback-mult{font-family:var(--font-pixel);background:var(--warn-dim);color:var(--warn);border-radius:3px;padding:3px 7px;font-size:9px}.feedback-answer{color:var(--text-3);font-size:12px}.feedback-answer b{color:var(--text)}.feedback-reason{color:var(--text-2);max-width:62ch;margin:0 0 10px;font-size:14px}.feedback-rule{color:var(--text-3);align-items:center;gap:6px;margin-bottom:10px;font-size:11px;display:inline-flex}.feedback-rule .chip{font-family:var(--font-pixel);background:var(--panel-3);color:var(--text-2);border-radius:3px;padding:3px 6px;font-size:7px}.rulebook{z-index:45;border-right:none;border-radius:0;flex-direction:column;width:min(360px,92vw);max-height:none;transition:transform .24s;display:flex;position:fixed;top:0;bottom:0;right:0;overflow:hidden;transform:translate(101%)}.rulebook.is-open{transform:translate(0)}.rules-backdrop.is-open{display:block}.rulebook .panel-head,.rulebook .rule-notes,.rulebook .session-box{flex:none}.rule-list{scrollbar-width:thin;scrollbar-color:var(--line) transparent;flex-direction:column;flex:auto;gap:1px;min-height:0;margin:0;padding:8px;list-style:none;display:flex;overflow-y:auto}.rule{border-radius:var(--radius-sm);color:var(--text-2);transition:background var(--step), color var(--step);border:1px solid #0000;grid-template-columns:16px 1fr;gap:8px;padding:7px 8px;font-size:13px;display:grid}.rule-mark{font-family:var(--font-pixel);font-size:9px;line-height:1.5}.rule.act-ACCEPT .rule-mark{color:var(--good)}.rule.act-REJECT .rule-mark{color:var(--bad)}.rule.act-RESEND .rule-mark{color:var(--warn)}.rule-tags{font-family:var(--font-mono);color:var(--text-3);margin-top:2px;font-size:10px;display:block}.rule.is-new{background:#5fd39a1a;border-color:#5fd39a59}.rule.is-hit{color:var(--text);background:#6fb4e824;border-color:#6fb4e873}.rule-new-badge{font-family:var(--font-pixel);background:var(--good);color:#05261a;vertical-align:1px;border-radius:3px;margin-left:6px;padding:2px 4px;font-size:7px}.rule-list:after{content:"";background:linear-gradient(180deg, transparent, var(--panel));pointer-events:none;flex:none;height:16px;margin:-16px -8px -8px;display:block;position:sticky;bottom:-8px}.rule-notes{border-top:1px solid var(--line-soft);flex-direction:column;gap:6px;padding:8px 12px 12px;display:flex}.rule-note{color:var(--text-3);padding-left:14px;font-size:12px;position:relative}.rule-note:before{content:"!";font-family:var(--font-pixel);color:var(--warn);font-size:8px;position:absolute;left:0}.session-box{border-top:1px solid var(--line-soft);gap:6px;padding:10px 12px;display:grid}.session-row{color:var(--text-3);justify-content:space-between;align-items:center;font-size:12px;display:flex}.session-row b{font-family:var(--font-mono);color:var(--net);font-size:14px}.actions{flex:none;grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.action{border-radius:var(--radius);border:2px solid var(--line);background:linear-gradient(180deg, var(--panel-2), var(--panel));transition:transform 90ms ease, box-shadow 90ms ease, border-color var(--step);flex-direction:column;align-items:center;gap:5px;padding:14px 12px 12px;display:flex;position:relative;box-shadow:0 4px #0006}.action:hover:not(:disabled){border-color:var(--accent,var(--net))}.action:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px #0006}.action:disabled{opacity:.4;cursor:not-allowed}.action-name{font-family:var(--font-pixel);color:var(--accent);font-size:13px}.action-hint{color:var(--text-3);text-align:center;font-size:12px;line-height:1.35}.action-key{font-family:var(--font-pixel);color:var(--text-3);border:1px solid var(--line);background:var(--bg-2);border-radius:3px;padding:2px 4px;font-size:8px;position:absolute;top:6px;left:8px}.action.is-hinted{border-color:var(--accent);animation:1.2s ease-in-out infinite hint-glow}.action.a-accept{--accent:var(--good)}.action.a-reject{--accent:var(--bad)}.action.a-resend{--accent:var(--warn)}.continue-bar{border-radius:var(--radius);border:2px solid var(--net-dim);background:linear-gradient(180deg, var(--panel-2), var(--panel));font-family:var(--font-pixel);color:var(--net);flex:none;justify-content:center;align-items:center;gap:12px;width:100%;padding:16px;font-size:12px;display:flex;box-shadow:0 4px #0006}.continue-bar:hover{border-color:var(--net)}.kbd{font-family:var(--font-mono);border:1px solid var(--line);background:var(--bg-2);color:var(--text-2);border-bottom-width:2px;border-radius:4px;padding:3px 7px;font-size:11px}.screen{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:18px;min-height:100vh;padding:28px 18px;display:flex}.screen-card{border:1px solid var(--line);background:linear-gradient(180deg, var(--panel-2), var(--panel));width:min(680px,100%);box-shadow:var(--shadow);border-radius:14px;padding:26px}.title-logo{font-family:var(--font-pixel);background:linear-gradient(180deg, #fff 26%, var(--warn) 92%);color:#0000;text-shadow:0 4px #0006;-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(30px,8vw,58px);line-height:1.2}.title-sub{font-family:var(--font-pixel);letter-spacing:.12em;color:var(--text-3);margin:10px 0 0;font-size:10px}.title-lede{color:var(--text-2);max-width:46ch;margin:0 auto;font-size:16px}.title-cast{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:6px;margin:4px 0 0;display:flex}.title-cast .cast-member{image-rendering:pixelated;animation:2.6s step-end infinite idle-bob}.brief-route{border:1px solid var(--line);background:linear-gradient(180deg, var(--sky-1) 0%, var(--sky-2) 52%, var(--sky-3) 100%);box-shadow:var(--shadow);border-radius:14px;flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:4px;max-width:min(680px,100%);padding:14px 12px 10px;display:flex;position:relative}.brief-route:after{content:"";background:linear-gradient(180deg, var(--ground), var(--ground-2));z-index:0;border-top:2px solid #56405c;border-radius:0 0 13px 13px;height:22px;position:absolute;inset:auto 1px 1px}.brief-hop{z-index:1;flex-direction:column;align-items:center;gap:3px;display:flex;position:relative}.brief-art{filter:drop-shadow(0 3px #0000004d);align-items:flex-end;display:flex;position:relative}.brief-person{image-rendering:pixelated;animation:2.6s step-end infinite idle-bob;position:absolute;bottom:0;right:-6px}.brief-trade{image-rendering:pixelated;filter:drop-shadow(0 0 7px #6fb4e88c);margin:0 10px 14px}.brief-name{font-family:var(--font-pixel);letter-spacing:.05em;color:currentColor;font-size:7px}.result-art{image-rendering:pixelated;filter:drop-shadow(0 6px #00000052);justify-content:center;align-items:flex-end;display:flex;position:relative}.result-person{image-rendering:pixelated;position:absolute;bottom:4px}.result-art.is-happy .result-person{animation:.62s steps(2,end) infinite cheer}.result-art.is-sad .result-person{animation:2.6s step-end infinite idle-bob}.result-art.is-sad{filter:grayscale(.45)drop-shadow(0 6px #00000052)}.btn{border-radius:var(--radius);border:2px solid var(--good);color:#eafff5;font-family:var(--font-pixel);background:linear-gradient(#1f6b4e,#17543d);justify-content:center;align-items:center;gap:10px;padding:14px 22px;font-size:13px;transition:transform 90ms,box-shadow 90ms;display:inline-flex;box-shadow:0 4px #00000073}.btn:active{transform:translateY(3px);box-shadow:0 1px #00000073}.btn.is-ghost{border-color:var(--line);background:var(--panel-2);color:var(--text-2);padding:11px 16px;font-size:11px}.btn.is-ghost:hover{border-color:var(--net-dim);color:var(--text)}.btn-row{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.level-grid{grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:8px;margin-top:6px;display:grid}.level-chip{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-2);text-align:left;gap:3px;width:100%;padding:10px;display:grid;position:relative}.level-chip:hover{border-color:var(--net)}.level-chip.is-locked{opacity:.48;border-style:dashed}.level-chip.is-locked:hover{opacity:.74;border-color:var(--warn)}.level-chip .n{font-family:var(--font-pixel);color:var(--text-3);font-size:8px}.level-chip .nm{color:var(--text);font-size:13px}.level-chip.is-current{border-color:var(--good);background:#5fd39a14}.level-chip.is-complete .n{color:var(--good)}.level-chip-wrap{position:relative}.level-best{font-family:var(--font-pixel);color:var(--warn);margin-top:2px;font-size:7px}.manual-unlock-remove{width:16px;height:16px;color:var(--text-3);background:0 0;border:0;padding:0;font-size:16px;line-height:1;position:absolute;top:4px;right:5px}.manual-unlock-remove:hover{color:var(--bad)}.restart-all{color:var(--text-3)!important}.reset-level{color:var(--text-3)}.pixel-modal-backdrop{z-index:100;background:#04060ac2;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.pixel-modal{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(180deg, var(--panel-2), var(--panel));width:min(360px,100%);box-shadow:var(--shadow);text-align:center;padding:18px}.pixel-modal p{color:var(--text-2);margin:12px 0 16px;font-size:13px}.access-code-input{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-2);width:100%;color:var(--text);font-family:var(--font-pixel);text-transform:uppercase;margin:14px 0 4px;padding:10px;font-size:12px}.access-error{font-family:var(--font-pixel);color:var(--bad)!important;margin:6px 0!important;font-size:9px!important}.btn.is-danger{border-color:var(--bad);background:linear-gradient(#7d3542,#5c2933)}.briefing-list{text-align:left;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:grid}.briefing-list li{border-radius:var(--radius-sm);background:var(--bg-2);border-left:3px solid var(--net);color:var(--text-2);padding:11px 13px;font-size:14px}.training-briefing{border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--line-soft);border-left:3px solid var(--net);max-width:58ch;color:var(--text-2);text-align:center;margin:16px auto 0;padding:14px 16px}.result-grid{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin:18px 0;display:grid}.result-stat{border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--line-soft);padding:12px}.result-stat .v{font-family:var(--font-pixel);margin-bottom:5px;font-size:18px;display:block}.result-stat .l{letter-spacing:.12em;color:var(--text-3);text-transform:uppercase;font-size:10px}.accuracy-bar{background:var(--bg-2);border:1px solid var(--line);border-radius:999px;height:12px;position:relative;overflow:hidden}.accuracy-fill{background:linear-gradient(90deg, var(--good-dim), var(--good));height:100%;transition:width .7s ease-out}.accuracy-mark{background:var(--warn);width:2px;position:absolute;top:-3px;bottom:-3px}.miss-list{text-align:left;gap:6px;max-height:190px;margin:14px 0 0;padding:0;list-style:none;display:grid;overflow-y:auto}.miss{border-radius:var(--radius-sm);color:var(--text-2);background:#e8685d14;border:1px solid #e8685d38;grid-template-columns:auto 1fr;gap:9px;padding:9px 11px;font-size:12.5px;display:grid}.miss .seq{font-family:var(--font-mono);color:var(--bad);font-size:12px}@keyframes idle-bob{0%,48%{transform:translateY(0)}50%,to{transform:translateY(-2px)}}@keyframes idle-type{0%,24%{transform:translateY(0)}25%,49%{transform:translateY(-1px)}50%,74%{transform:translateY(0)}75%,to{transform:translateY(-1px)translate(1px)}}@keyframes recoil{0%,to{transform:translate(0)}50%{transform:translate(-3px)translateY(-1px)}}@keyframes cheer{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crawl{to{background-position-x:16px}}@keyframes cable-flash{0%,to{opacity:.85}50%{opacity:.25}}@keyframes packet-travel{0%{left:var(--from)}to{left:var(--to)}}@keyframes packet-bob{0%,49%{transform:translateY(0)}50%,to{transform:translateY(-3px)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.12)}to{transform:scale(1)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.55}}@keyframes hint-glow{0%,to{box-shadow:0 4px #0006,0 0 #e8b64c73}50%{box-shadow:0 4px #0006,0 0 0 9px #e8b64c00}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.shake{animation:.32s ease-in-out shake}@media (width<=1180px){.stage{grid-template-columns:190px minmax(0,1fr)}.world{height:168px}.rules-toggle{align-items:center;gap:6px;display:inline-flex}.rulebook{z-index:45;border-right:none;border-radius:0;width:min(360px,90vw);max-height:none;transition:transform .24s;position:fixed;top:0;bottom:0;right:0;transform:translate(101%)}.rulebook.is-open{transform:translate(0)}.rulebook.is-open~.rules-backdrop,.rules-backdrop.is-open{display:block}.rules-close{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-2);color:var(--text-2);padding:5px 9px;font-size:11px;display:inline-flex}}@media (width<=820px){.stage{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.world{height:150px}.sender{grid-template-columns:38px minmax(0,1fr);align-self:start;display:grid}.sender-art{border:1px solid var(--line-soft);padding:5px 2px}.sender-body{padding:0}.sender-blurb{font-size:11.5px}}@media (width<=620px){.app{gap:8px;padding:8px 8px 10px}.world{height:124px}.topbar{flex-wrap:wrap;gap:6px 8px;padding:7px 8px}.logo-text{display:none}.logo{order:1}.rules-toggle{order:2;margin-left:auto}.link-btn:not(.rules-toggle){order:3}.stat-row{flex-wrap:nowrap;flex-basis:100%;order:4;justify-content:stretch;gap:5px}.stat{text-align:center;flex:1 1 0;min-width:0;padding:3px 7px}.stat-label{letter-spacing:.06em;font-size:8px}.stat-value{margin-top:2px;font-size:10px}.stat.is-secondary{display:none}.link-btn{padding:6px 8px;font-size:10px}.sender{grid-template-columns:34px 1fr}.sender-art{padding:4px 2px}.sender-name{font-size:9px}.sender-blurb{font-size:11px}.field{grid-template-columns:84px 1fr auto;gap:8px;padding:5px 8px}.field-value{font-size:14px}.field.is-seq .field-value{font-size:15px}.field-label{letter-spacing:.06em;font-size:10px}.message-body{gap:8px;padding:10px}.message-head{padding:9px 10px}.msg-type{font-size:11px}.message-foot{padding:8px 10px}.seq-hint{order:-1;padding:6px 8px;font-size:11px}.actions{grid-template-columns:1fr;gap:6px}.action{text-align:left;border-width:2px;flex-direction:row;justify-content:flex-start;align-items:center;gap:10px;padding:9px 12px 9px 42px}.action-name{font-size:11px}.action-hint{text-align:left;font-size:11px}.action-key{top:50%;left:10px;translate:0 -50%}.continue-bar{padding:12px;font-size:11px}.route-ribbon{gap:3px;padding:3px 6px;font-size:6px}.node-label{padding:2px 4px;font-size:6px}.screen-card{padding:16px}.brief-route{gap:2px;padding:10px 8px 8px}.brief-art{transform-origin:bottom;transform:scale(.78)}.result-art{transform:scale(.8)}.raw-fix{font-size:11px;line-height:1.7}.feedback{padding:11px}.feedback-verdict{font-size:12px}.feedback-reason{margin-bottom:8px;font-size:12.5px}.feedback-rule{display:none}}@media (height<=560px) and (width>=620px){.world{height:108px}.sender-art{padding:6px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.packet{left:var(--to)}.recovery-hop,.recovery-packet{animation-delay:0s!important}}.message-body{animation:.22s ease-out both message-in}@keyframes message-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.stage.is-training{grid-template-rows:minmax(0,1fr);grid-template-columns:320px minmax(0,1fr) 290px}.app.is-training .seq-hint{order:-1}.guide{border-color:#e8b64c6b;flex-direction:column;display:flex;overflow:hidden}.guide-head{border-bottom:1px solid var(--line-soft);background:linear-gradient(#e8b64c17,#0000);flex:none;align-items:center;gap:8px;padding:8px 10px 8px 12px;display:flex}.guide-step{font-family:var(--font-pixel);letter-spacing:.06em;color:var(--warn);white-space:nowrap;font-size:8px}.guide-pips{flex:1;gap:3px;min-width:0;display:flex}.guide-pip{background:var(--line);width:9px;height:4px}.guide-pip.is-done{background:var(--good)}.guide-pip.is-now{background:var(--warn)}.guide-skip{white-space:nowrap;padding:4px 8px;font-size:10px}.guide-body{scrollbar-width:thin;scrollbar-color:var(--line) transparent;flex-direction:column;flex:auto;gap:10px;min-height:0;padding:12px;animation:.22s ease-out both message-in;display:flex;overflow-y:auto}.guide-body:after{content:"";background:linear-gradient(180deg, transparent, var(--panel));pointer-events:none;flex:none;height:14px;margin:-14px -12px -12px;position:sticky;bottom:-12px}.guide-title{font-family:var(--font-pixel);justify-content:space-between;align-items:baseline;gap:8px;margin:0;font-size:11px;font-weight:400;line-height:1.6;display:flex}.guide-part{color:var(--text-3);white-space:nowrap;font-size:8px}.guide-copy{gap:8px;margin:0;display:grid}.guide-row dt{letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);margin-bottom:1px;font-size:9.5px}.guide-row dd{color:var(--text-2);margin:0;font-size:13px;line-height:1.45}.guide-row.is-why dt{color:var(--net)}.guide-row.is-do{border-radius:var(--radius-sm);background:#e8b64c1a;border:1px solid #e8b64c66;padding:8px 10px}.guide-row.is-do dt{color:var(--warn)}.guide-row.is-do dd{color:#f5e3bd;font-weight:600}.guide-row.is-note dd{color:var(--text-3);font-size:12px}.guide-check,.guide-retry,.guide-done p{margin:0;font-size:13px;line-height:1.45}.guide-check{color:var(--text-2)}.guide-retry{border-radius:var(--radius-sm);color:#f6c9c4;background:#e8685d1a;border:1px solid #e8685d66;padding:8px 10px}.guide-done{border-radius:var(--radius-sm);background:#5fd39a17;border:1px solid #5fd39a59;gap:4px;padding:9px 11px;display:grid}.guide-done-mark{font-family:var(--font-pixel);color:var(--good);font-size:8px}.guide-done p{color:var(--text)}.sysmap{border-radius:var(--radius-sm);border:1px solid var(--line-soft);background:linear-gradient(180deg, var(--sky-1), var(--sky-2));flex:none;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr) 20px minmax(0,1fr);align-items:start;padding:8px 6px 6px;display:grid}.sysmap-stop{border:1px solid #0000;border-radius:5px;flex-direction:column;align-items:center;gap:3px;min-width:0;padding:3px 2px;display:flex}.sysmap-art{display:flex;position:relative}.sysmap-art svg{image-rendering:pixelated}.sysmap-name{font-family:var(--font-pixel);letter-spacing:.04em;white-space:nowrap;font-size:7px}.sysmap-role{color:var(--text-3);white-space:nowrap;font-size:9.5px;line-height:1.2}.sysmap-stop.is-spot{border-color:var(--warn);background:#e8b64c1f;animation:1.6s ease-in-out infinite spot-pulse}.sysmap-stop.is-spot .sysmap-role{color:#f5e3bd}.sysmap-packet{filter:drop-shadow(0 0 4px #6fb4e8b3);animation:.3s ease-out both rise,1.1s steps(2,end) .3s infinite packet-bob;position:absolute;top:-5px;right:-13px}.sysmap-packet.is-good{filter:drop-shadow(0 0 5px #5fd39abf)}.sysmap-packet.is-warn{filter:drop-shadow(0 0 5px #e8b64cbf)}.sysmap-packet.is-bad{filter:drop-shadow(0 0 5px #e8685dbf)}.sysmap-link{height:2px;color:var(--net-dim);background:repeating-linear-gradient(90deg,currentColor 0 8px,#0000 8px 16px);margin-top:12px;position:relative}.sysmap-link:after{content:"";border-top:4px solid #0000;border-bottom:4px solid #0000;border-left:5px solid;position:absolute;top:-3px;right:-3px}.sysmap-link.is-back:after{border-left:none;border-right:5px solid;left:-3px;right:auto}.sysmap-link.is-lit{color:var(--net);animation:.7s linear infinite crawl}.sysmap-link.is-lit.is-back{animation-direction:reverse}.sysmap-link.is-lit.is-good{color:var(--good)}.sysmap-link.is-lit.is-warn{color:var(--warn)}.sysmap-link.is-lit.is-bad{color:var(--bad)}.recovery{gap:6px;margin:0;padding:0;list-style:none;display:grid}.recovery-hop{border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--line-soft);animation:.32s ease-out both rise;animation-delay:calc(var(--i) * .9s);gap:2px;padding:7px 9px;display:grid}.recovery-line{font-family:var(--font-pixel);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:6px;font-size:7px;display:grid}.recovery-line b{color:var(--text-2);font-weight:400}.recovery-wire{height:12px;position:relative}.recovery-wire:before{content:"";background:repeating-linear-gradient(90deg, var(--net-dim) 0 6px, transparent 6px 10px);height:2px;position:absolute;top:5px;left:0;right:4px}.recovery-wire:after{content:"";border-left:5px solid var(--net-dim);border-top:4px solid #0000;border-bottom:4px solid #0000;position:absolute;top:2px;right:0}.recovery-packet{image-rendering:pixelated;animation:.8s steps(12,end) both wire-run;animation-delay:calc(var(--i) * .9s + .2s);position:absolute;top:0;left:0}.recovery-label{font-family:var(--font-mono);color:var(--text);font-size:12px}.recovery-hop:first-child .recovery-label{color:var(--warn)}.recovery-detail{color:var(--text-3);font-size:11.5px;line-height:1.4}@keyframes wire-run{0%{left:0}to{left:calc(100% - 16px)}}.field.is-spot,.seq-hint.is-spot,.msg-tag.is-spot{outline:2px solid var(--warn);outline-offset:1px;animation:1.6s ease-in-out infinite spot-pulse}.field-grid.has-spot .field:not(.is-spot){opacity:.42}.message.is-spot{outline-offset:2px;outline:2px solid #e8b64cb3}.node.is-spot .node-label{outline:2px solid var(--warn);outline-offset:2px}.node.is-spot .node-art{filter:drop-shadow(0 0 8px #e8b64cb3)drop-shadow(0 4px #00000047)}.action.is-muted{opacity:.25;filter:grayscale(.7)}@keyframes spot-pulse{0%,to{box-shadow:0 0 #e8b64c73}50%{box-shadow:0 0 0 5px #e8b64c00}}.term{font:inherit;letter-spacing:inherit;color:inherit;text-align:inherit;text-underline-offset:3px;cursor:help;border-radius:2px;margin:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-decoration-thickness:1px;display:inline}.guide .term,.recovery .term{color:#cfe8fb}.term:hover,.term[aria-expanded=true]{color:var(--text);text-decoration-style:solid}.term-tip{z-index:60;border-radius:var(--radius-sm);border:1px solid var(--net-dim);box-shadow:var(--shadow);color:var(--text-2);text-align:left;pointer-events:none;background:#0d1119;padding:8px 10px;font-size:12px;line-height:1.45;animation:.12s ease-out both fade-in;display:block;position:fixed}.term-tip.is-above{translate:0 -100%}.term-tip b{font-family:var(--font-mono);color:var(--net);margin-bottom:2px;font-weight:500;display:block}.recap-list{text-align:left;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:grid}.recap-item{border-radius:var(--radius-sm);background:var(--bg-2);border-left:3px solid var(--accent);color:var(--text-2);grid-template-columns:150px 1fr;align-items:center;gap:12px;padding:11px 13px;font-size:14px;display:grid}.recap-item.a-accept{--accent:var(--good)}.recap-item.a-reject{--accent:var(--bad)}.recap-item.a-resend{--accent:var(--warn)}.recap-name{font-family:var(--font-pixel);color:var(--accent);font-size:10px}.recap-closing{color:var(--text);margin:16px 0 0;font-size:15px}.recap-score{color:var(--text-2);margin:10px 0 0;font-size:13px}@media (width<=1180px){.stage.is-training{grid-template-columns:300px minmax(0,1fr)}}@media (width<=820px){.stage.is-training{grid-template-rows:minmax(140px,1fr) minmax(0,auto);grid-template-columns:minmax(0,1fr)}}@media (width<=620px),(height<=820px){.app.is-training .world{display:none}}@media (width<=620px){.guide-head{gap:6px;padding:6px 8px}.guide-body{gap:8px;padding:9px 10px}.guide-title{font-size:10px}.guide-copy{gap:6px}.guide-row dd,.guide-check,.guide-retry,.guide-done p{font-size:12.5px}.guide-row.is-do{padding:6px 8px}.recap-item{grid-template-columns:1fr;gap:4px}.guide-row.is-do{order:-1}.app.is-training .stat-row{flex:auto;order:2;min-width:0}.app.is-training .rules-toggle{order:3;margin-left:0}.app.is-training .message-body{gap:6px;padding:8px}.app.is-training .field{padding:3px 8px}.app.is-training .field-value{font-size:13px}.app.is-training .field.is-seq .field-value{font-size:14px}.app.is-training .seq-hint{padding:4px 8px}.app.is-training .actions{grid-template-columns:repeat(3,minmax(0,1fr))}.app.is-training .action{text-align:center;flex-direction:column;justify-content:center;padding:9px 4px}.app.is-training .action-key,.app.is-training .action-hint{display:none}.app.is-training .action-name{font-size:10px;line-height:1.5}.sysmap{grid-template-columns:minmax(0,1fr) 12px minmax(0,1fr) 12px minmax(0,1fr);padding:4px}.sysmap-stop{grid-template-columns:auto minmax(0,1fr);place-items:center start;gap:1px 5px;padding:3px 4px;display:grid}.sysmap-art{grid-row:span 2}.sysmap-link{margin-top:13px}.sysmap-packet{top:-8px;left:-8px;right:auto}.guide.is-recovering .sysmap,.guide.is-recovering .guide-done-mark{display:none}.guide.is-recovering .guide-body{gap:6px}.guide.is-recovering .guide-done{padding:5px 7px}.guide.is-recovering .guide-done p{font-size:11.5px;line-height:1.3}.recovery{gap:4px}.recovery-hop{gap:0;padding:3px 6px}.recovery-detail{font-size:10px;line-height:1.25}}
