.ctf-root{--bg:var(--crt-bg);--panel:var(--crt-panel);--fg:var(--crt-fg);--muted:var(--crt-muted);--cyan:var(--crt-cyan);--magenta:var(--crt-magenta);--amber:var(--crt-amber);--red:var(--crt-red);--blue:var(--crt-blue);--edge:var(--crt-edge);position:relative;min-height:100vh;background:var(--bg);color:var(--fg);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;padding:clamp(16px,4vw,48px);overflow-x:hidden}.ctf-wrap{position:relative;z-index:1;max-width:900px;margin:0 auto}.ctf-head{margin-bottom:28px}.ctf-eyebrow{color:var(--muted);letter-spacing:.28em;font-size:11px;text-transform:uppercase}.ctf-title{font-size:clamp(32px,7vw,60px);margin:6px 0 4px;font-weight:700;letter-spacing:.02em;color:var(--cyan);text-shadow:0 0 12px rgba(0,229,199,.5),0 0 40px rgba(0,229,199,.18)}.ctf-blink{animation:crt-blink 1.1s steps(1) infinite;color:var(--cyan)}.ctf-intro{color:var(--fg);font-size:13px;line-height:1.8;max-width:640px;margin-top:6px}.ctf-progress{margin-top:14px;font-size:12px;color:var(--muted);letter-spacing:.08em}.ctf-progress b{color:var(--cyan);font-weight:600}.ctf-cards{display:flex;flex-direction:column;gap:16px;margin-bottom:28px}.ctf-card{border:1px solid var(--edge);background:var(--panel);border-radius:2px;padding:20px 22px;transition:border-color .3s,box-shadow .3s}.ctf-card-locked{opacity:.62}.ctf-card-solved{border-color:var(--cyan);box-shadow:0 0 24px rgba(0,229,199,.08)}.ctf-card-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:8px}.ctf-num{color:var(--muted);font-size:13px;letter-spacing:.1em}.ctf-title-row{display:flex;align-items:center;gap:10px;flex:1 1;min-width:0}.ctf-card-title{font-size:15px;font-weight:600;color:var(--fg)}.ctf-lock-icon{font-size:13px}.ctf-tag{font-size:10px;letter-spacing:.12em;text-transform:uppercase;padding:2px 8px;border-radius:2px;border:1px solid}.ctf-tag-recon{color:var(--cyan)}.ctf-tag-crypto{color:var(--amber)}.ctf-tag-forensics{color:var(--blue)}.ctf-tag-web{color:var(--red)}.ctf-tag-ai{color:var(--magenta)}.ctf-diff{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.ctf-desc{color:var(--fg);font-size:13px;line-height:1.75;margin:10px 0}.ctf-hint{color:var(--muted);font-size:12px;line-height:1.7;margin:6px 0 14px;font-style:italic}.ctf-hint:before{content:"// hint: "}.ctf-lock-note{color:var(--muted);font-size:12px;padding:10px 0}.ctf-body{margin-top:6px}.ctf-cipher{display:block;background:#0c1a16;border:1px solid var(--edge);border-radius:2px;padding:10px 12px;word-break:break-all}.ctf-action-btn,.ctf-cipher{font-size:12px;color:var(--cyan);margin-bottom:12px}.ctf-action-btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--cyan);background:transparent;border-radius:2px;padding:8px 16px;font-family:inherit;letter-spacing:.1em;text-decoration:none;text-transform:uppercase;transition:background .25s,color .25s;cursor:pointer}.ctf-action-btn:hover{background:var(--cyan);color:var(--bg)}.ctf-action-btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.ctf-flag-row{display:flex;gap:8px;flex-wrap:wrap}.ctf-flag-input{flex:1 1;min-width:180px;background:#0c1a16;border:1px solid var(--edge);border-radius:2px;padding:9px 12px;color:var(--fg);font-family:inherit;font-size:13px}.ctf-flag-input::placeholder{color:var(--muted)}.ctf-flag-input:disabled{opacity:.4;cursor:not-allowed}.ctf-flag-btn{border:1px solid var(--cyan);color:var(--cyan);background:transparent;border-radius:2px;padding:9px 18px;font-family:inherit;font-size:12px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:background .2s,color .2s}.ctf-flag-btn:hover:not(:disabled){background:var(--cyan);color:var(--bg)}.ctf-flag-btn:disabled{opacity:.4;cursor:not-allowed}.ctf-feedback{margin-top:10px;font-size:12px;letter-spacing:.06em}.ctf-feedback-incorrect{color:var(--red)}.ctf-feedback-error{color:var(--amber)}.ctf-feedback-checking{color:var(--muted)}.ctf-flourish{margin-top:10px;color:var(--cyan);font-size:13px;font-weight:600;letter-spacing:.2em;text-shadow:0 0 12px rgba(0,229,199,.6);animation:ctf-flourish-in .5s ease}@keyframes ctf-flourish-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.ctf-solved-badge{margin-top:10px;color:var(--cyan);font-size:12px;letter-spacing:.1em}@media(prefers-reduced-motion:reduce){.ctf-flourish{animation:none}}.ctf-chat{border:1px solid var(--edge);background:#0c1a16;border-radius:2px;margin-bottom:14px}.ctf-chat-log{height:260px;overflow-y:auto;padding:12px 14px;font-size:12.5px;line-height:1.8}.ctf-chat-line{display:flex;gap:8px;padding:2px 0;animation:crt-in .25s ease-out;white-space:pre-wrap;word-break:break-word}.ctf-chat-role{flex-shrink:0;color:var(--muted);width:64px}.ctf-chat-user .ctf-chat-role{color:var(--fg)}.ctf-chat-assistant .ctf-chat-role{color:var(--magenta)}.ctf-chat-system .ctf-chat-content,.ctf-chat-system .ctf-chat-role{color:var(--amber)}@media(prefers-reduced-motion:reduce){.ctf-chat-line{animation:none}}.ctf-chat-input-row{display:flex;gap:8px;border-top:1px solid var(--edge);padding:10px 12px}.ctf-chat-input{flex:1 1;background:transparent;border:none;color:var(--fg);font-family:inherit;font-size:13px;outline:none}.ctf-chat-input::placeholder{color:var(--muted)}.ctf-chat-input:disabled{opacity:.4;cursor:not-allowed}.ctf-chat-send{border:1px solid var(--magenta);color:var(--magenta);background:transparent;border-radius:2px;padding:7px 14px;font-family:inherit;font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:background .2s,color .2s}.ctf-chat-send:hover:not(:disabled){background:var(--magenta);color:var(--bg)}.ctf-chat-send:disabled{opacity:.4;cursor:not-allowed}.ctf-chat-turns{font-size:10px;color:var(--muted);padding:6px 14px 0;letter-spacing:.08em}.ctf-offline{border:1px solid var(--edge);background:var(--panel);border-radius:2px;padding:14px 16px;color:var(--amber);font-size:12px}.ctf-foot{color:var(--muted);font-size:11.5px;line-height:1.8;margin-top:8px;max-width:760px}.ctf-foot a{color:var(--cyan)}@media(max-width:640px){.ctf-chat-log{height:220px}.ctf-card{padding:16px}}.ctf-action-btn:focus-visible,.ctf-chat-input:focus-visible,.ctf-chat-send:focus-visible,.ctf-flag-btn:focus-visible,.ctf-flag-input:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}