* { box-sizing:border-box; } :root { --teal:#0f766e; --highlight:#a8e1d9; --line:#e0e8e6; --quiet:#7d8b88; } body { margin:0; background:#fff; color:#222c2a; font:15px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; } main { width:min(1320px,calc(100% - 64px)); margin:24px auto; } header { color:var(--teal); font-size:18px; font-weight:650; } h1 { max-width:980px; margin:16px 0 12px; font-size:clamp(23px,3vw,28px); font-weight:550; letter-spacing:-.6px; line-height:1.3; } h2 { margin:0; font-size:17px; font-weight:650; } button,a { -webkit-tap-highlight-color:transparent; } button { font:inherit; cursor:pointer; border:0; border-radius:8px; background:#222c2a; color:#fff; padding:10px 18px; white-space:nowrap; } button:hover { background:var(--teal); } button:disabled { cursor:default; opacity:.45; } button>span { margin-left:10px; font-size:11px; } .controls { display:flex; align-items:center; gap:14px; } #speed { font:inherit; font-size:13px; color:#667570; border:0; background:transparent; padding:8px 2px; cursor:pointer; } #clear { background:none; color:#667570; padding:8px 0; font-size:13px; } :focus-visible { outline:2px solid var(--teal); outline-offset:4px; } .standalone-guide { color:#667570; font-size:13px; margin-bottom:28px; } .relay-bar { display:flex; align-items:center; gap:24px; padding-bottom:16px; border-bottom:1px solid var(--line); } .topology { display:flex; flex:1; min-width:0; gap:25px; margin:0; padding:0; list-style:none; } .topology li { position:relative; display:flex; align-items:center; gap:8px; flex:1; min-width:0; font-size:12px; } .topology strong { display:grid; place-items:center; flex-shrink:0; width:23px; height:23px; background:#f1f5f4; border-radius:50%; color:#5f706a; font-size:11px; } .topology span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .topology li:not(:last-child)::after { content:"→"; position:absolute; right:-19px; color:#8c9b97; font-size:16px; } .topology li.reached strong { background:#d5eeea; color:var(--teal); } .method { margin-top:22px; } .method-heading { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:12px; } .method-name,.run-status { display:flex; align-items:center; gap:12px; } .channel-label { font-size:12px; color:#6b7974; } #rclc-title { color:var(--teal); } .activity { display:flex; align-items:center; gap:6px; font-size:11px; color:#7d8b88; } .activity::before { content:""; width:5px; height:5px; border-radius:50%; background:currentColor; } .activity.running::before { animation:pulse 1.2s ease-in-out infinite; } .activity.complete { color:var(--teal); } .time { min-width:78px; text-align:right; font-size:19px; line-height:1; letter-spacing:-.4px; font-variant-numeric:tabular-nums; } #rclc-time { color:var(--teal); } .row { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; } .chunk { position:relative; height:320px; min-width:0; border-top:1px solid var(--line); padding-top:12px; display:flex; flex-direction:column; } .source-title { display:flex; justify-content:space-between; gap:8px; margin:0 0 12px; color:#53665f; font-size:11px; font-weight:600; } .source-title>span { color:#90a09a; font-weight:400; white-space:nowrap; } .document-body,.message-body { flex:1; min-height:0; overflow:auto; scrollbar-width:thin; scrollbar-color:#c9d4d0 transparent; padding-right:10px; white-space:pre-wrap; overflow-wrap:anywhere; } .document-body { font:11.5px/1.85 Georgia,"Times New Roman",serif; color:#68776f; } mark { color:#104f47; background:var(--highlight); box-decoration-break:clone; -webkit-box-decoration-break:clone; } .source.is-selecting mark { animation:highlight var(--selection-duration,.3s) ease-out both; } .source.is-selecting .document-body { background:linear-gradient(180deg,transparent,#eef9f6 50%,transparent) 0 -300px/100% 150px no-repeat; animation:scan var(--selection-duration,.3s) linear both; } .position-map { width:100%; height:13px; display:block; margin:12px 0 0; border-radius:2px; } .position-map rect { fill:#e7edeb; } .position-map rect.selected { fill:var(--teal); } .source.is-selecting .position-map { animation:pulse .65s ease-in-out infinite; } .source>.position-map { margin:0; flex-shrink:0; } .source>.handoff { margin-bottom:12px; } .handoff { display:flex; align-items:center; gap:8px; position:relative; height:29px; flex-shrink:0; color:#95a49e; font-size:10px; } .handoff>span { position:relative; z-index:1; background:white; padding-right:8px; } .handoff::after { content:"→"; position:absolute; right:-18px; color:#b3c2bc; font-size:16px; } .handoff-track { position:absolute; left:0; right:-13px; bottom:5px; height:1px; background:#e7eeeb; } .packet { position:absolute; left:0; top:-4px; display:flex; gap:2px; opacity:0; } .packet i { width:5px; height:9px; border-radius:1px; background:var(--teal); } .source.has-passed .handoff { color:var(--teal); } .source.has-passed .handoff::after { color:var(--teal); } .source.has-passed .packet { animation:pass-state 1.1s cubic-bezier(.2,.6,.3,1) both; } .message-body { font-size:12px; line-height:1.75; color:#56665f; } .message-title { color:#788980; } .message-card.is-writing .message-body::after { content:""; display:inline-block; height:1em; width:2px; background:#55665e; vertical-align:text-bottom; margin-left:3px; animation:cursor .8s steps(1) infinite; } .message-card .handoff::after { color:#9ca9a3; } .message-card.has-passed .handoff { color:#53665f; } .placeholder { color:#a4afa9; font-size:11px; line-height:1.65; white-space:normal; margin:0; } .waiting-state { display:flex; gap:5px; margin:24px 0 12px; } .waiting-state i { width:6px; height:6px; background:#e2e9e6; border-radius:50%; } .is-writing .waiting-state i { animation:pulse .9s ease-in-out infinite; } .answer { padding:12px 14px; border:1px solid var(--line); border-radius:8px; background:#f9fbfa; } .answer .source-title { margin-bottom:12px; } .answer-check { margin:0 0 12px; font-size:16px; font-weight:650; line-height:1.45; color:var(--teal); } .answer.complete { background:#f1f9f7; border-color:#c9e7df; } .answer.unresolved { background:#fcfaf6; border-color:#ece4d4; } .unresolved .answer-check { color:#956724; font-size:14px; } .answer.is-writing .source-title { color:var(--teal); } .answer .message-body { font-size:12px; } strong { font-weight:650; } footer { display:flex; justify-content:space-between; gap:20px; margin-top:24px; font-size:10px; color:#8a9992; } footer p { margin:0; } footer a { flex-shrink:0; } a { color:inherit; text-underline-offset:3px; } #error { color:#8e2b1d; } .sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; } .embedded header,.embedded #question,.embedded .standalone-guide { display:none; } .embedded main { margin:20px auto; } @keyframes highlight { from { background-color:transparent; color:#68776f; } to { background-color:var(--highlight); color:#104f47; } } @keyframes scan { to { background-position:0 400px; } } @keyframes pulse { 50% { opacity:.4; } } @keyframes cursor { 50% { opacity:0; } } @keyframes pass-state { 0% { left:0; opacity:0; } 15% { opacity:1; } 80% { opacity:1; } 100% { left:calc(100% - 24px); opacity:0; } } @media(max-width:900px) { main { width:calc(100% - 36px); } .relay-bar { gap:16px; } .topology { gap:16px; } .topology li { gap:5px; font-size:10px; } .topology li:not(:last-child)::after { right:-12px; font-size:13px; } .controls { gap:8px; } button { padding:9px 12px; } .row { gap:16px; } .handoff::after { right:-13px; } .handoff-track { right:-8px; } .source-title>span { display:none; } } @media(max-width:680px) { .relay-bar { flex-wrap:wrap; } .topology { flex-basis:100%; } .controls { margin-left:auto; } .method-heading { align-items:flex-start; } .method-name { align-items:flex-start; flex-direction:column; gap:2px; } .run-status { flex-direction:column-reverse; align-items:flex-end; gap:7px; } .time { font-size:18px; } .row { grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; } .chunk { height:280px; } .chunk:nth-child(2) .handoff::after { right:0; content:"↓"; } .chunk:nth-child(2) .handoff-track { right:5px; } footer { flex-direction:column; gap:8px; } } @media(max-width:420px) { main { width:calc(100% - 28px); } .row { gap:14px; } .document-body { font-size:10.5px; } .message-body { font-size:11px; } .channel-label { font-size:10px; } .source-title { font-size:10px; } .topology span { font-size:9px; } .topology strong { width:18px; height:18px; font-size:9px; } .answer { padding-inline:10px; } .answer-check { font-size:14px; } } @media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none !important; } }