.nf-wrap{background:radial-gradient(ellipse 60% 55% at 78% 40%, #9a9ab81a 0%, transparent 60%), radial-gradient(ellipse 50% 50% at 18% 78%, #6868a012 0%, transparent 55%), var(--canvas-soft);justify-content:center;align-items:center;min-height:100vh;padding:40px 24px;display:flex}.nf-inner{grid-template-columns:1fr 1fr;align-items:center;gap:56px;width:100%;max-width:1040px;display:grid}@media (max-width:880px){.nf-inner{grid-template-columns:1fr;gap:36px;max-width:560px}.nf-runner{order:-1}}.nf-eyebrow{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--error);align-items:center;gap:8px;margin-bottom:22px;font-size:11px;display:inline-flex}.nf-code{font-family:var(--font-display);letter-spacing:.04em;color:var(--ink);margin-bottom:10px;font-size:108px;font-weight:600;line-height:.86}.nf-wrap .nf-title{font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;color:var(--ink);margin:0 0 20px;padding-top:4px;font-size:38px;font-weight:600;line-height:1.12}.nf-lead{color:var(--body);max-width:440px;margin:0 0 28px;font-size:14px;line-height:1.7}.nf-path{font-family:var(--font-mono);color:var(--link-deep);background:#9a9ab81f;border:1px solid #9a9ab83d;border-radius:2px;padding:1px 6px;font-size:12.5px}.nf-actions{flex-wrap:wrap;gap:10px;display:flex}.nf-btn{font-family:var(--font-sans);cursor:pointer;transition:background var(--dur-fast) var(--ease-std), border-color var(--dur-fast) var(--ease-std);border-radius:2px;align-items:center;gap:7px;padding:10px 16px;font-size:13.5px;font-weight:500;display:inline-flex}.nf-btn-primary{background:var(--link-deep);color:#fff;border:1px solid var(--link-deep)}.nf-btn-primary:hover{background:var(--link);border-color:var(--link)}.dark .nf-btn-primary{background:var(--link);color:#070709;border-color:var(--link)}.dark .nf-btn-primary:hover{background:var(--link-deep);border-color:var(--link-deep);color:#fff}.nf-btn-ghost{background:var(--canvas);color:var(--ink);border:1px solid var(--hairline)}.nf-btn-ghost:hover{background:var(--canvas-soft-2);border-color:var(--hairline-strong)}.nf-runner{background:var(--canvas);border:1px solid var(--hairline);box-shadow:var(--elev-4);border-radius:4px;overflow:hidden}.nf-runner-bar{background:var(--canvas-soft);border-bottom:1px solid var(--hairline);align-items:center;gap:7px;padding:10px 13px;display:flex}.nf-tl{border-radius:9999px;flex-shrink:0;width:10px;height:10px}.nf-tl.r{background:#e05252}.nf-tl.y{background:#e8921a}.nf-tl.g{background:#4caf80}.nf-runner-file{font-family:var(--font-mono);color:var(--mute);flex:1;margin-left:6px;font-size:11.5px}.nf-runner-status{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid;border-radius:2px;padding:2px 7px;font-size:9.5px}.nf-runner-status.run{color:var(--warning);background:#e8921a1a;border-color:#e8921a66}.nf-runner-status.fail{color:var(--error);background:#e052521a;border-color:#e0525266}.nf-runner-body{padding:16px 16px 18px}.nf-suite{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mute);margin-bottom:12px;font-size:10px}.nf-test{font-family:var(--font-mono);color:var(--body);opacity:1;align-items:center;gap:11px;padding:7px 0;font-size:12.5px;display:flex}.nf-test.anim{animation:nfFadeUp .36s var(--ease-enter) both}.nf-test.fail{color:var(--ink)}.nf-mark{border-radius:2px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.nf-mark.ok{color:#4caf80;background:#4caf8024}.nf-mark.x{color:#e05252;background:#e0525229}.nf-mark.idle{color:var(--mute);background:0 0}.nf-test-name{flex:1}.nf-test-ms{color:var(--mute);font-size:11px}.nf-spin{border:1.5px solid var(--hairline-strong);border-top-color:var(--link);border-radius:9999px;width:11px;height:11px;animation:.7s linear infinite nfSpin}.nf-assert{font-family:var(--font-mono);opacity:0;max-height:0;transition:max-height .38s var(--ease-enter), opacity .38s var(--ease-enter), margin-top .38s;background:#e052520d;border:1px solid #e052524d;border-radius:3px;margin-top:14px;font-size:11.5px;overflow:hidden}.nf-assert.in{opacity:1;max-height:200px}.nf-assert-head{color:var(--error);border-bottom:1px solid #e0525233;padding:9px 12px}.nf-assert-line{color:var(--body);gap:10px;padding:7px 12px;display:flex}.nf-assert-line span{width:52px;color:var(--mute);flex-shrink:0}.nf-assert-line.exp{color:#4caf80}.nf-assert-line.rec{color:var(--error)}.nf-assert-foot{color:var(--mute);letter-spacing:.04em;border-top:1px solid #e0525233;padding:8px 12px;font-size:10.5px}@keyframes nfFadeUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes nfSpin{to{transform:rotate(360deg)}}.nf-mark.err{color:var(--warning);background:#e8921a29}.nf-runner-status.err{color:var(--warning);background:#e8921a1a;border-color:#e8921a66}.nf-runner-status.denied{color:var(--error);background:#e052521a;border-color:#e0525266}.nf-dot{border-radius:9999px;flex-shrink:0;width:7px;height:7px}.nf-wrap.amber .nf-eyebrow{color:var(--warning)}.nf-wrap.amber .nf-dot{background:var(--warning);box-shadow:0 0 8px #e8921a99}.nf-trace{font-family:var(--font-mono);opacity:0;max-height:0;transition:max-height .38s var(--ease-enter), opacity .38s var(--ease-enter), margin-top .38s;background:#e8921a0d;border:1px solid #e8921a4d;border-radius:3px;margin-top:14px;font-size:11.5px;overflow:hidden}.nf-trace.in{opacity:1;max-height:240px}.nf-trace-head{color:var(--warning);border-bottom:1px solid #e8921a33;padding:9px 12px}.nf-trace-body{color:var(--body);white-space:pre;padding:9px 12px;line-height:1.9;overflow-x:auto}.nf-trace-body .ex{color:var(--error)}.nf-trace-body .at{color:var(--mute)}.nf-trace-foot{color:var(--mute);letter-spacing:.04em;border-top:1px solid #e8921a33;padding:8px 12px;font-size:10.5px}.nf-lock{vertical-align:middle;width:30px;height:30px;color:var(--error);background:#e052521f;border:1px solid #e0525247;border-radius:3px;justify-content:center;align-items:center;margin-right:12px;display:inline-flex;transform:translateY(-2px)}@media (prefers-reduced-motion:reduce){.nf-test,.nf-spin{animation:none}.nf-assert,.nf-trace{transition:none}}
