:root{--bg:#0c0e14;--surface:#161924;--surface-hover:#1d2130;--border:#2a2e3d;--text:#e9eaf2;--text-dim:#8d92a8;--accent:#e8e6df;--accent-soft:#e8e6df1f;--good:#5c9c7c;--good-soft:#5c9c7c29;--bad:#b5555f;--bad-soft:#b5555f29;--mono:ui-monospace, "SF Mono", Consolas, monospace;--sans:-apple-system, "Segoe UI", Roboto, sans-serif;font:16px/1.55 var(--sans);color:var(--text);background:var(--bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0}#root{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:650}p{margin:0}button{font-family:inherit}code{font-family:var(--mono);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:1px 6px;font-size:.9em}.navbar{border-bottom:1px solid var(--border);background:var(--surface)}.navbar-inner{justify-content:space-between;align-items:center;gap:16px;max-width:1080px;margin:0 auto;padding:14px 24px;display:flex}.brand{color:var(--text);align-items:center;gap:8px;font-size:14px;font-weight:700;text-decoration:none;display:flex}.brand-mark{border:1px solid var(--text);width:16px;height:16px;font-family:var(--mono);color:var(--text);border-radius:3px;flex:none;justify-content:center;align-items:center;font-size:9px;font-weight:700;display:flex}.navbar-links{align-items:center;gap:20px;font-size:14px;display:flex}.navbar-links a{color:var(--text-dim);border-bottom:2px solid #0000;padding:4px 2px;text-decoration:none;transition:color .15s,border-color .15s}.navbar-links a:hover{color:var(--text)}.navbar-links a.active{color:var(--text);border-bottom-color:var(--accent)}@media (width<=560px){.brand-text{display:none}}.site-footer{border-top:1px solid var(--border);margin-top:auto}.site-footer-inner{max-width:1080px;color:var(--text-dim);justify-content:space-between;align-items:center;gap:16px;margin:0 auto;padding:18px 24px;font-size:13px;display:flex}.site-footer-inner a{color:var(--text-dim);text-decoration:none;transition:color .15s}.site-footer-inner a:hover{color:var(--text)}.actor-diagram{width:100%;max-width:680px;height:auto;overflow:visible}.link{stroke:var(--border);stroke-width:1.5px}.flow-arrow{stroke:var(--accent);stroke-width:3px;fill:none;stroke-linecap:round;stroke-dasharray:6 5;animation:1.2s linear infinite dash}.flow-arrow-bad{stroke:var(--bad)}@keyframes dash{to{stroke-dashoffset:-22px}}.actor-node circle{fill:var(--surface);stroke:var(--border);stroke-width:2px;transition:fill .25s,stroke .25s}.actor-relayer circle{stroke-dasharray:4 3}.actor-ring-inner{fill:none;stroke:var(--border);stroke-width:1px}.actor-node.active circle{stroke-width:3px}.actor-node.active .actor-ring-inner{stroke-width:1px}.actor-node.active circle:not(.actor-ring-inner){fill:var(--surface-hover);stroke:var(--accent)}.actor-node.active .actor-ring-inner{stroke:var(--accent)}.actor-node.failed circle:not(.actor-ring-inner){fill:var(--bad-soft)!important;stroke:var(--bad)!important}.actor-node.failed .actor-ring-inner{stroke:var(--bad)!important}.actor-label-wrap{text-align:center;width:100%;height:100%;font-family:var(--sans);flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:2px;line-height:1.18;display:flex;overflow:hidden}.actor-label{color:var(--text);font-size:12.5px;font-weight:700}.actor-sub{color:var(--text-dim);font-size:9.5px}.stepper{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.stepper-item button{text-align:left;cursor:pointer;width:100%;color:var(--text-dim);background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:13px;transition:background .15s;display:flex}.stepper-item button:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.stepper-item button:disabled{cursor:not-allowed;opacity:.4}.dot{background:var(--surface);border:1.5px solid var(--border);height:22px;color:var(--text-dim);border-radius:50%;flex:0 0 22px;justify-content:center;align-items:center;font-size:11px;font-weight:700;transition:background .15s,border-color .15s,color .15s;display:flex}.stepper-item.current button{color:var(--text);background:var(--accent-soft)}.stepper-item.current .dot{border-color:var(--accent);color:var(--accent)}.stepper-item.done .dot{background:var(--good);border-color:var(--good);color:#fff}.stepper-item.failed .dot{background:var(--bad);border-color:var(--bad);color:#fff}.stepper-item.failed button{color:var(--bad)}.stepper-item.skipped .dot{background:0 0}.app{flex-direction:column;gap:24px;max-width:1080px;margin:0 auto;padding:40px 24px 60px;display:flex}.app-header{text-align:center;flex-direction:column;gap:10px;max-width:760px;margin:0 auto;display:flex}.app-header h1{color:var(--text);border-bottom:2px solid var(--border);padding-bottom:14px;font-size:36px}.subtitle{color:var(--text-dim);font-size:16px}.scope-note{color:var(--text-dim);background:var(--surface);border:1px solid var(--border);text-align:left;border-radius:8px;max-width:760px;margin:0 auto;padding:10px 14px;font-size:13px}.protocol-tabs{flex-wrap:wrap;gap:10px;display:flex}.protocol-tab{text-align:left;background:var(--surface);border:1px solid var(--border);cursor:pointer;color:inherit;border-radius:12px;flex-direction:column;flex:240px;gap:4px;padding:13px 17px;transition:border-color .15s,background .15s,transform .15s;display:flex}.protocol-tab:hover{border-color:var(--accent);transform:translateY(-1px)}.protocol-tab.active{border-color:var(--accent);background:var(--accent-soft);border-width:2px;padding:12px 16px}.protocol-tab-name{color:var(--text);font-size:14px;font-weight:700}.protocol-tab.active .protocol-tab-name{color:var(--accent)}.protocol-tab-tagline{color:var(--text-dim);font-size:12px;line-height:1.45}.tamper-bar{background:var(--surface);border:1px solid var(--border);border-radius:10px;justify-content:center;align-items:center;gap:12px;padding:10px 16px;display:flex}.tamper-toggle{cursor:pointer;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.tamper-toggle input{width:16px;height:16px;accent-color:var(--bad)}.tamper-hint{color:var(--bad);font-size:13px}.layout{grid-template-columns:220px 1fr;align-items:start;gap:28px;display:grid}.sidebar{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;position:sticky;top:24px}.content{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:20px;padding:24px;display:flex}.step-panel{text-align:left;flex-direction:column;gap:12px;display:flex}.step-panel h2{font-size:20px}.step-panel-failed h2{color:var(--bad)}.explanation{color:var(--text);font-size:15px;line-height:1.6}.check-row{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;font-size:13px;display:flex}.check-label{color:var(--text-dim);font-weight:600}.check-result{border-radius:999px;margin-left:auto;padding:2px 8px;font-size:12px;font-weight:700}.check-result.fail{background:var(--bad-soft);color:var(--bad)}.check-result.pass{background:var(--good-soft);color:var(--good)}.tamper-reason{background:var(--bad-soft);border:1px solid var(--bad);color:var(--text);border-radius:8px;padding:12px 14px;font-size:14px;line-height:1.5}.detail-disclosure{color:var(--text-dim);font-size:13px}.detail-disclosure summary{cursor:pointer;color:var(--accent);font-weight:600}.detail-disclosure p{margin-top:8px;line-height:1.6}.nav-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding-top:16px;display:flex}.nav-row button{background:var(--accent-soft);color:var(--accent);cursor:pointer;border:1px solid #0000;border-radius:8px;padding:8px 16px;font-size:14px;font-weight:600;transition:background .15s,transform .15s}.nav-row button:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 28%, transparent);transform:translateY(-1px)}.nav-row button:disabled{opacity:.4;cursor:not-allowed}.step-count{color:var(--text-dim);font-size:13px}.app-footer{text-align:center;color:var(--text-dim);font-size:13px}.app-footer a{color:var(--accent)}@media (width<=720px){.layout{grid-template-columns:1fr}.sidebar{position:static}.tamper-bar{flex-direction:column;gap:6px}}.blog-page{flex-direction:column;gap:28px;max-width:760px;margin:0 auto;padding:40px 24px 60px;display:flex}.blog-header h1{border-bottom:2px solid var(--border);margin-bottom:10px;padding-bottom:12px;font-size:32px}.blog-header p{color:var(--text-dim);line-height:1.6}.blog-header a{color:var(--accent)}.post-list{flex-direction:column;gap:14px;margin:0;padding:0;list-style:none;display:flex}.post-card{border:1px solid var(--border);background:var(--surface);border-radius:12px;transition:border-color .15s,transform .15s}.post-card:hover{border-color:var(--accent);transform:translateY(-1px)}.post-card-link{color:inherit;padding:20px 22px;text-decoration:none;display:block}.post-card h2{color:var(--text);margin:6px 0 8px;font-size:19px}.post-card p{color:var(--text-dim);font-size:14px;line-height:1.55}.post-card-meta{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:10px;font-size:12px;display:flex}.post-card-author:before{content:"·";margin-right:10px}.post-card-tags{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.tag{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:3px 9px;font-size:11px;font-weight:600}.back-link{color:var(--accent);font-size:13px;text-decoration:none}.blog-post-header{border-bottom:1px solid var(--border);flex-direction:column;gap:10px;padding-bottom:20px;display:flex}.blog-post-header h1{font-size:28px}.post-body{color:var(--text);font-size:16px;line-height:1.75}.post-body h2{margin:28px 0 12px;font-size:21px}.post-body p{margin:0 0 14px}.post-body ul,.post-body ol{color:var(--text);margin:0 0 14px;padding-left:22px}.post-body li{margin-bottom:6px}.post-body code{font-size:.85em}.post-body pre{background:var(--bg);border:1px solid var(--border);border-radius:8px;margin:0 0 16px;padding:14px 16px;overflow-x:auto}.post-body pre code{background:0 0;border:none;padding:0}.post-body a{color:var(--accent)}
