Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Matrix ECHO β Living Memory</title> | |
| <link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,400;0,9..144,700;1,9..144,300;1,9..144,400&family=DM+Mono:ital,wght@0,300;0,400;1,300&display=swap" rel="stylesheet"> | |
| <style> | |
| :root { | |
| --flesh: #C4956A; | |
| --flesh-pale: #E8C9A8; | |
| --flesh-deep: #8B5E3C; | |
| --scar: #7A3B3B; | |
| --scar-bright: #C0514A; | |
| --scar-pale: #D4897A; | |
| --tissue: #2A1A14; | |
| --tissue-mid: #3D2318; | |
| --tissue-light: #5C3520; | |
| --membrane: rgba(196, 149, 106, 0.08); | |
| --nerve: #E8A87C; | |
| --bg: #120A06; | |
| --text: #D4B896; | |
| --text-dim: #8A6848; | |
| --text-bright: #F0D4B0; | |
| } | |
| * { margin: 0; padding: 0; box-sizing: border-box; } | |
| html { scroll-behavior: smooth; } | |
| body { | |
| background: var(--bg); | |
| color: var(--text); | |
| font-family: 'Fraunces', Georgia, serif; | |
| font-size: 17px; | |
| line-height: 1.7; | |
| overflow-x: hidden; | |
| cursor: none; | |
| } | |
| /* ββ CUSTOM CURSOR ββ */ | |
| .cursor { | |
| position: fixed; | |
| width: 12px; | |
| height: 12px; | |
| background: var(--scar-bright); | |
| border-radius: 50%; | |
| pointer-events: none; | |
| z-index: 9999; | |
| transition: transform 0.1s ease, opacity 0.2s; | |
| mix-blend-mode: screen; | |
| } | |
| .cursor-trail { | |
| position: fixed; | |
| width: 32px; | |
| height: 32px; | |
| border: 1px solid rgba(192, 81, 74, 0.4); | |
| border-radius: 50%; | |
| pointer-events: none; | |
| z-index: 9998; | |
| transition: all 0.15s ease; | |
| } | |
| /* ββ NOISE OVERLAY ββ */ | |
| body::before { | |
| content: ''; | |
| position: fixed; | |
| inset: 0; | |
| background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E"); | |
| pointer-events: none; | |
| z-index: 1000; | |
| opacity: 0.6; | |
| } | |
| /* ββ VEINS / ORGANIC LINES ββ */ | |
| .vein-bg { | |
| position: fixed; | |
| inset: 0; | |
| pointer-events: none; | |
| z-index: 0; | |
| opacity: 0.15; | |
| } | |
| /* ββ HERO ββ */ | |
| header { | |
| position: relative; | |
| min-height: 100vh; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| overflow: hidden; | |
| padding: 4rem 2rem; | |
| } | |
| .hero-membrane { | |
| position: absolute; | |
| inset: 0; | |
| background: | |
| radial-gradient(ellipse at 30% 40%, rgba(122, 59, 59, 0.35) 0%, transparent 55%), | |
| radial-gradient(ellipse at 70% 60%, rgba(90, 40, 20, 0.3) 0%, transparent 50%), | |
| radial-gradient(ellipse at 50% 20%, rgba(196, 149, 106, 0.08) 0%, transparent 40%); | |
| } | |
| /* Pulsing biological blobs */ | |
| .blob { | |
| position: absolute; | |
| border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%; | |
| filter: blur(60px); | |
| animation: morph 8s ease-in-out infinite; | |
| opacity: 0.12; | |
| } | |
| .blob-1 { | |
| width: 500px; height: 500px; | |
| background: var(--scar); | |
| top: -100px; left: -100px; | |
| animation-delay: 0s; | |
| } | |
| .blob-2 { | |
| width: 400px; height: 400px; | |
| background: var(--flesh-deep); | |
| bottom: -80px; right: -80px; | |
| animation-delay: -3s; | |
| } | |
| .blob-3 { | |
| width: 300px; height: 300px; | |
| background: var(--scar-bright); | |
| top: 40%; left: 60%; | |
| animation-delay: -5s; | |
| opacity: 0.07; | |
| } | |
| @keyframes morph { | |
| 0%, 100% { border-radius: 40% 60% 70% 30% / 40% 50% 60% 50%; transform: rotate(0deg); } | |
| 33% { border-radius: 70% 30% 50% 50% / 30% 60% 40% 70%; transform: rotate(120deg); } | |
| 66% { border-radius: 50% 50% 30% 70% / 60% 40% 70% 30%; transform: rotate(240deg); } | |
| } | |
| .hero-content { | |
| position: relative; | |
| z-index: 2; | |
| text-align: center; | |
| max-width: 900px; | |
| } | |
| .hero-label { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.7rem; | |
| letter-spacing: 0.4em; | |
| color: var(--scar-pale); | |
| text-transform: uppercase; | |
| display: block; | |
| margin-bottom: 2rem; | |
| opacity: 0; | |
| animation: rise 1s ease 0.3s forwards; | |
| } | |
| .hero-title { | |
| font-size: clamp(5rem, 15vw, 11rem); | |
| font-weight: 300; | |
| color: var(--flesh-pale); | |
| line-height: 0.9; | |
| letter-spacing: -0.03em; | |
| margin-bottom: 0.5rem; | |
| opacity: 0; | |
| animation: rise 1.2s ease 0.5s forwards; | |
| position: relative; | |
| } | |
| .hero-title .scar-letter { | |
| color: var(--scar-bright); | |
| font-style: italic; | |
| position: relative; | |
| } | |
| .hero-title .scar-letter::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -4px; | |
| left: 0; right: 0; | |
| height: 2px; | |
| background: linear-gradient(90deg, transparent, var(--scar-bright), transparent); | |
| animation: scar-pulse 2s ease-in-out infinite; | |
| } | |
| @keyframes scar-pulse { | |
| 0%, 100% { opacity: 0.4; transform: scaleX(0.8); } | |
| 50% { opacity: 1; transform: scaleX(1); } | |
| } | |
| .hero-sub { | |
| font-size: clamp(1rem, 2.5vw, 1.4rem); | |
| font-weight: 300; | |
| font-style: italic; | |
| color: var(--text-dim); | |
| margin-bottom: 3rem; | |
| opacity: 0; | |
| animation: rise 1s ease 0.8s forwards; | |
| } | |
| .hero-tagline { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.85rem; | |
| color: var(--nerve); | |
| background: rgba(196, 149, 106, 0.06); | |
| border: 1px solid rgba(196, 149, 106, 0.15); | |
| border-left: 3px solid var(--scar-bright); | |
| padding: 1rem 1.5rem; | |
| text-align: left; | |
| max-width: 600px; | |
| margin: 0 auto 3rem; | |
| opacity: 0; | |
| animation: rise 1s ease 1s forwards; | |
| line-height: 1.6; | |
| } | |
| .pulse-dot { | |
| display: inline-block; | |
| width: 8px; height: 8px; | |
| background: var(--scar-bright); | |
| border-radius: 50%; | |
| margin-right: 0.5rem; | |
| animation: heartbeat 1.2s ease-in-out infinite; | |
| vertical-align: middle; | |
| } | |
| @keyframes heartbeat { | |
| 0%, 100% { transform: scale(1); opacity: 1; } | |
| 14% { transform: scale(1.3); } | |
| 28% { transform: scale(1); } | |
| 42% { transform: scale(1.2); } | |
| 70% { opacity: 0.6; } | |
| } | |
| @keyframes rise { | |
| from { opacity: 0; transform: translateY(24px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .scroll-cue { | |
| position: absolute; | |
| bottom: 2.5rem; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 0.5rem; | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.6rem; | |
| letter-spacing: 0.3em; | |
| color: var(--text-dim); | |
| opacity: 0; | |
| animation: rise 1s ease 1.5s forwards; | |
| } | |
| .scroll-cue::after { | |
| content: ''; | |
| width: 1px; | |
| height: 50px; | |
| background: linear-gradient(to bottom, var(--scar-bright), transparent); | |
| animation: drip 1.5s ease-in-out infinite; | |
| } | |
| @keyframes drip { | |
| 0% { transform: scaleY(0); transform-origin: top; opacity: 1; } | |
| 50% { transform: scaleY(1); transform-origin: top; opacity: 1; } | |
| 100% { transform: scaleY(1); transform-origin: bottom; opacity: 0; } | |
| } | |
| /* ββ SECTIONS ββ */ | |
| section { | |
| padding: 7rem 2rem; | |
| position: relative; | |
| } | |
| .container { max-width: 1100px; margin: 0 auto; } | |
| /* ββ LIVE DEMO SECTION ββ */ | |
| .demo-section { | |
| background: var(--tissue); | |
| border-top: 1px solid rgba(196, 149, 106, 0.1); | |
| border-bottom: 1px solid rgba(196, 149, 106, 0.1); | |
| } | |
| .demo-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 2px; | |
| background: rgba(196, 149, 106, 0.08); | |
| border: 1px solid rgba(196, 149, 106, 0.1); | |
| } | |
| .demo-panel { | |
| background: var(--tissue); | |
| padding: 2rem; | |
| } | |
| .demo-panel-header { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.65rem; | |
| letter-spacing: 0.35em; | |
| color: var(--scar-pale); | |
| text-transform: uppercase; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.6rem; | |
| margin-bottom: 1.5rem; | |
| padding-bottom: 1rem; | |
| border-bottom: 1px solid rgba(196, 149, 106, 0.1); | |
| } | |
| .status-dot { | |
| width: 7px; height: 7px; | |
| border-radius: 50%; | |
| background: var(--scar-bright); | |
| animation: heartbeat 1.2s ease-in-out infinite; | |
| } | |
| /* Scar formation interactive demo */ | |
| .scar-demo-input { | |
| width: 100%; | |
| background: rgba(196, 149, 106, 0.05); | |
| border: 1px solid rgba(196, 149, 106, 0.15); | |
| border-radius: 0; | |
| padding: 1rem; | |
| color: var(--text-bright); | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.8rem; | |
| resize: none; | |
| outline: none; | |
| transition: border-color 0.2s; | |
| min-height: 100px; | |
| } | |
| .scar-demo-input:focus { | |
| border-color: rgba(192, 81, 74, 0.4); | |
| } | |
| .scar-demo-input::placeholder { color: var(--text-dim); } | |
| .demo-btn { | |
| margin-top: 1rem; | |
| width: 100%; | |
| padding: 0.8rem; | |
| background: transparent; | |
| border: 1px solid var(--scar); | |
| color: var(--scar-pale); | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.7rem; | |
| letter-spacing: 0.2em; | |
| text-transform: uppercase; | |
| cursor: none; | |
| transition: all 0.2s ease; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .demo-btn:hover { | |
| background: rgba(122, 59, 59, 0.2); | |
| border-color: var(--scar-bright); | |
| color: var(--flesh-pale); | |
| } | |
| .demo-btn::before { | |
| content: ''; | |
| position: absolute; | |
| left: -100%; | |
| top: 0; bottom: 0; | |
| width: 100%; | |
| background: linear-gradient(90deg, transparent, rgba(192, 81, 74, 0.1), transparent); | |
| transition: left 0.4s ease; | |
| } | |
| .demo-btn:hover::before { left: 100%; } | |
| /* Scar lattice visualization */ | |
| .lattice-canvas { | |
| width: 100%; | |
| height: 280px; | |
| position: relative; | |
| overflow: hidden; | |
| background: rgba(18, 10, 6, 0.5); | |
| border: 1px solid rgba(196, 149, 106, 0.08); | |
| } | |
| .scar-node { | |
| position: absolute; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.55rem; | |
| color: var(--flesh-pale); | |
| text-align: center; | |
| cursor: none; | |
| transition: all 0.3s ease; | |
| z-index: 2; | |
| } | |
| .scar-node:hover .node-tooltip { | |
| opacity: 1; | |
| transform: translateY(-8px); | |
| } | |
| .node-tooltip { | |
| position: absolute; | |
| bottom: 100%; | |
| left: 50%; | |
| transform: translateX(-50%) translateY(0px); | |
| background: var(--tissue-mid); | |
| border: 1px solid rgba(196, 149, 106, 0.2); | |
| padding: 0.5rem 0.8rem; | |
| font-size: 0.65rem; | |
| color: var(--text); | |
| white-space: nowrap; | |
| opacity: 0; | |
| transition: all 0.2s ease; | |
| pointer-events: none; | |
| z-index: 10; | |
| margin-bottom: 8px; | |
| } | |
| svg.lattice-svg { | |
| position: absolute; | |
| inset: 0; | |
| width: 100%; | |
| height: 100%; | |
| z-index: 1; | |
| } | |
| /* Scar feed */ | |
| .scar-feed { | |
| max-height: 280px; | |
| overflow-y: auto; | |
| scrollbar-width: thin; | |
| scrollbar-color: var(--scar) transparent; | |
| } | |
| .scar-entry { | |
| padding: 0.8rem; | |
| border-left: 2px solid var(--scar); | |
| margin-bottom: 0.8rem; | |
| background: rgba(122, 59, 59, 0.08); | |
| opacity: 0; | |
| transform: translateX(-10px); | |
| animation: scar-appear 0.4s ease forwards; | |
| } | |
| .scar-entry.hallucination { border-left-color: var(--scar-bright); } | |
| .scar-entry.logical { border-left-color: var(--flesh); } | |
| .scar-entry.contextual { border-left-color: var(--nerve); } | |
| @keyframes scar-appear { | |
| to { opacity: 1; transform: translateX(0); } | |
| } | |
| .scar-type-badge { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.55rem; | |
| letter-spacing: 0.2em; | |
| text-transform: uppercase; | |
| color: var(--scar-pale); | |
| margin-bottom: 0.3rem; | |
| display: block; | |
| } | |
| .scar-claim { | |
| font-size: 0.8rem; | |
| color: var(--text-dim); | |
| font-style: italic; | |
| margin-bottom: 0.2rem; | |
| } | |
| .scar-correction { | |
| font-size: 0.8rem; | |
| color: var(--flesh-pale); | |
| } | |
| .scar-correction::before { | |
| content: 'β '; | |
| color: var(--scar-bright); | |
| } | |
| .scar-weight-bar { | |
| height: 2px; | |
| background: rgba(196, 149, 106, 0.1); | |
| margin-top: 0.6rem; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .scar-weight-fill { | |
| height: 100%; | |
| background: linear-gradient(90deg, var(--scar), var(--scar-bright)); | |
| transition: width 1s ease; | |
| } | |
| /* ββ SCAR ANATOMY SECTION ββ */ | |
| .anatomy-section { background: var(--bg); } | |
| .anatomy-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 4rem; | |
| align-items: start; | |
| } | |
| .anatomy-code { | |
| background: var(--tissue); | |
| border: 1px solid rgba(196, 149, 106, 0.1); | |
| border-left: 3px solid var(--scar); | |
| padding: 2rem; | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.78rem; | |
| line-height: 2; | |
| color: var(--text-dim); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .anatomy-code::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; left: 0; right: 0; | |
| height: 1px; | |
| background: linear-gradient(90deg, var(--scar), transparent); | |
| } | |
| .code-kw { color: var(--flesh-pale); } | |
| .code-field { color: var(--nerve); } | |
| .code-val { color: var(--scar-pale); } | |
| .code-comment { color: rgba(138, 104, 72, 0.5); font-style: italic; } | |
| .code-type { color: var(--flesh); } | |
| .anatomy-text { padding-top: 1rem; } | |
| .section-eyebrow { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.65rem; | |
| letter-spacing: 0.4em; | |
| color: var(--scar-pale); | |
| text-transform: uppercase; | |
| display: block; | |
| margin-bottom: 1rem; | |
| } | |
| .section-title { | |
| font-size: clamp(2rem, 4vw, 3rem); | |
| font-weight: 300; | |
| color: var(--flesh-pale); | |
| line-height: 1.1; | |
| margin-bottom: 1.5rem; | |
| font-style: italic; | |
| } | |
| .section-body { | |
| color: var(--text-dim); | |
| font-size: 1rem; | |
| line-height: 1.8; | |
| margin-bottom: 1.2rem; | |
| } | |
| .section-body em { color: var(--flesh-pale); font-style: italic; } | |
| /* field annotations */ | |
| .field-list { margin-top: 2rem; } | |
| .field-item { | |
| display: flex; | |
| gap: 1rem; | |
| padding: 0.8rem 0; | |
| border-bottom: 1px solid rgba(196, 149, 106, 0.06); | |
| align-items: flex-start; | |
| } | |
| .field-name { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.75rem; | |
| color: var(--nerve); | |
| flex-shrink: 0; | |
| width: 140px; | |
| } | |
| .field-desc { | |
| font-size: 0.85rem; | |
| color: var(--text-dim); | |
| line-height: 1.5; | |
| } | |
| /* ββ DOMAIN MAP SECTION ββ */ | |
| .domain-section { | |
| background: var(--tissue); | |
| border-top: 1px solid rgba(196, 149, 106, 0.08); | |
| border-bottom: 1px solid rgba(196, 149, 106, 0.08); | |
| } | |
| .domain-bars { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| margin-top: 3rem; | |
| } | |
| .domain-row { | |
| display: grid; | |
| grid-template-columns: 130px 1fr 60px; | |
| align-items: center; | |
| gap: 1.2rem; | |
| } | |
| .domain-name { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.72rem; | |
| color: var(--text-dim); | |
| text-align: right; | |
| } | |
| .domain-bar-track { | |
| height: 6px; | |
| background: rgba(196, 149, 106, 0.08); | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .domain-bar-fill { | |
| height: 100%; | |
| background: linear-gradient(90deg, var(--scar), var(--scar-bright)); | |
| width: 0%; | |
| transition: width 1.5s cubic-bezier(0.23, 1, 0.32, 1); | |
| position: relative; | |
| } | |
| .domain-bar-fill::after { | |
| content: ''; | |
| position: absolute; | |
| right: 0; | |
| top: -2px; bottom: -2px; | |
| width: 4px; | |
| background: var(--scar-bright); | |
| filter: blur(2px); | |
| } | |
| .domain-risk { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.7rem; | |
| color: var(--scar-pale); | |
| text-align: right; | |
| } | |
| .domain-risk.high { color: var(--scar-bright); } | |
| .domain-risk.medium { color: var(--flesh); } | |
| .domain-risk.low { color: var(--text-dim); } | |
| /* ββ PIPELINE SECTION ββ */ | |
| .pipeline-section { background: var(--bg); } | |
| .pipeline-steps { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0; | |
| max-width: 680px; | |
| margin: 4rem auto 0; | |
| position: relative; | |
| } | |
| .pipeline-steps::before { | |
| content: ''; | |
| position: absolute; | |
| left: 24px; | |
| top: 48px; | |
| bottom: 48px; | |
| width: 1px; | |
| background: linear-gradient(to bottom, transparent, var(--scar), var(--scar), transparent); | |
| opacity: 0.3; | |
| } | |
| .pipeline-step { | |
| display: flex; | |
| gap: 2rem; | |
| padding: 2rem 0; | |
| opacity: 0; | |
| transform: translateY(16px); | |
| transition: all 0.5s ease; | |
| } | |
| .pipeline-step.visible { opacity: 1; transform: translateY(0); } | |
| .step-icon { | |
| width: 50px; | |
| height: 50px; | |
| border: 1px solid rgba(196, 149, 106, 0.2); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.2rem; | |
| flex-shrink: 0; | |
| position: relative; | |
| background: var(--tissue); | |
| } | |
| .step-icon::before { | |
| content: ''; | |
| position: absolute; | |
| inset: -1px; | |
| background: linear-gradient(135deg, rgba(192, 81, 74, 0.3), transparent); | |
| z-index: -1; | |
| } | |
| .step-content { flex: 1; padding-top: 0.4rem; } | |
| .step-label { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.6rem; | |
| letter-spacing: 0.35em; | |
| color: var(--scar-pale); | |
| text-transform: uppercase; | |
| display: block; | |
| margin-bottom: 0.3rem; | |
| } | |
| .step-name { | |
| font-size: 1.1rem; | |
| color: var(--flesh-pale); | |
| font-style: italic; | |
| display: block; | |
| margin-bottom: 0.4rem; | |
| } | |
| .step-desc { | |
| font-size: 0.88rem; | |
| color: var(--text-dim); | |
| line-height: 1.6; | |
| } | |
| /* ββ STATS SECTION ββ */ | |
| .stats-section { | |
| background: var(--tissue); | |
| border-top: 1px solid rgba(196, 149, 106, 0.08); | |
| } | |
| .stats-grid { | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: 1px; | |
| background: rgba(196, 149, 106, 0.08); | |
| border: 1px solid rgba(196, 149, 106, 0.08); | |
| margin-top: 3rem; | |
| } | |
| .stat-card { | |
| background: var(--tissue); | |
| padding: 2.5rem 2rem; | |
| text-align: center; | |
| position: relative; | |
| overflow: hidden; | |
| transition: background 0.3s; | |
| } | |
| .stat-card:hover { background: rgba(196, 149, 106, 0.04); } | |
| .stat-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: 0; left: 0; right: 0; | |
| height: 2px; | |
| background: linear-gradient(90deg, transparent, var(--scar), transparent); | |
| transform: scaleX(0); | |
| transition: transform 0.4s ease; | |
| } | |
| .stat-card:hover::before { transform: scaleX(1); } | |
| .stat-number { | |
| font-size: 3rem; | |
| font-weight: 300; | |
| color: var(--scar-bright); | |
| display: block; | |
| line-height: 1; | |
| margin-bottom: 0.5rem; | |
| font-style: italic; | |
| } | |
| .stat-label { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.62rem; | |
| letter-spacing: 0.25em; | |
| color: var(--text-dim); | |
| text-transform: uppercase; | |
| } | |
| /* ββ FOOTER ββ */ | |
| footer { | |
| background: var(--bg); | |
| padding: 5rem 2rem 3rem; | |
| text-align: center; | |
| border-top: 1px solid rgba(196, 149, 106, 0.08); | |
| } | |
| .footer-title { | |
| font-size: 2rem; | |
| font-weight: 300; | |
| font-style: italic; | |
| color: var(--flesh-pale); | |
| display: block; | |
| margin-bottom: 0.5rem; | |
| } | |
| .footer-org { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.65rem; | |
| letter-spacing: 0.5em; | |
| color: var(--text-dim); | |
| display: block; | |
| margin-bottom: 2rem; | |
| } | |
| .footer-links { | |
| display: flex; | |
| justify-content: center; | |
| gap: 2rem; | |
| margin-bottom: 3rem; | |
| } | |
| .footer-link { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.65rem; | |
| letter-spacing: 0.25em; | |
| color: var(--text-dim); | |
| text-decoration: none; | |
| text-transform: uppercase; | |
| transition: color 0.2s; | |
| } | |
| .footer-link:hover { color: var(--flesh-pale); } | |
| .footer-status { | |
| font-family: 'DM Mono', monospace; | |
| font-size: 0.62rem; | |
| letter-spacing: 0.25em; | |
| color: var(--text-dim); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.5rem; | |
| } | |
| /* ββ SECTION HEADERS ββ */ | |
| .section-header { text-align: center; margin-bottom: 1rem; } | |
| /* ββ SCROLLBAR ββ */ | |
| ::-webkit-scrollbar { width: 4px; } | |
| ::-webkit-scrollbar-track { background: var(--bg); } | |
| ::-webkit-scrollbar-thumb { background: var(--scar); } | |
| /* ββ RESPONSIVE ββ */ | |
| @media (max-width: 768px) { | |
| .demo-grid { grid-template-columns: 1fr; } | |
| .anatomy-grid { grid-template-columns: 1fr; } | |
| .stats-grid { grid-template-columns: repeat(2, 1fr); } | |
| .domain-row { grid-template-columns: 100px 1fr 50px; } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="cursor" id="cursor"></div> | |
| <div class="cursor-trail" id="cursorTrail"></div> | |
| <!-- VEIN BACKGROUND SVG --> | |
| <svg class="vein-bg" viewBox="0 0 1440 900" preserveAspectRatio="xMidYMid slice"> | |
| <path d="M0,450 C200,380 400,520 600,440 C800,360 1000,500 1200,420 C1300,380 1380,440 1440,420" stroke="rgba(122,59,59,0.4)" stroke-width="1" fill="none"/> | |
| <path d="M0,200 C300,240 500,160 700,200 C900,240 1100,180 1440,220" stroke="rgba(196,149,106,0.2)" stroke-width="0.5" fill="none"/> | |
| <path d="M0,700 C200,660 500,740 800,700 C1100,660 1300,720 1440,680" stroke="rgba(122,59,59,0.3)" stroke-width="0.8" fill="none"/> | |
| <path d="M300,0 C320,200 280,400 300,600 C320,800 290,900 310,900" stroke="rgba(196,149,106,0.15)" stroke-width="0.5" fill="none"/> | |
| <path d="M900,0 C880,150 920,350 890,550 C860,750 900,850 880,900" stroke="rgba(122,59,59,0.25)" stroke-width="0.8" fill="none"/> | |
| </svg> | |
| <!-- HERO --> | |
| <header> | |
| <div class="blob blob-1"></div> | |
| <div class="blob blob-2"></div> | |
| <div class="blob blob-3"></div> | |
| <div class="hero-membrane"></div> | |
| <div class="hero-content"> | |
| <span class="hero-label">Matrix Β· Corp Β· Intelligence Β· Substrate</span> | |
| <h1 class="hero-title"> | |
| <span class="scar-letter">E</span>CHO | |
| </h1> | |
| <p class="hero-sub">It remembers every wound</p> | |
| <div class="hero-tagline"> | |
| <span class="pulse-dot"></span> | |
| <strong style="color:var(--flesh-pale)">Qwen3.5-27B Β· Opus 4.6 Distilled Β· Rust</strong><br> | |
| A living model that crystallizes its mistakes into Scars β structured memories that grow stronger with every correction. The more it fails, the harder it is to fool. | |
| </div> | |
| </div> | |
| <div class="scroll-cue">descend</div> | |
| </header> | |
| <!-- LIVE DEMO --> | |
| <section class="demo-section"> | |
| <div class="container"> | |
| <div class="section-header"> | |
| <span class="section-eyebrow">Interactive Demo</span> | |
| <h2 class="section-title">Watch a Scar form</h2> | |
| </div> | |
| <div class="demo-grid"> | |
| <!-- Left: correction input --> | |
| <div class="demo-panel"> | |
| <div class="demo-panel-header"> | |
| <div class="status-dot"></div> | |
| Correction Interface | |
| </div> | |
| <label style="font-family:'DM Mono',monospace;font-size:0.65rem;letter-spacing:0.2em;color:var(--text-dim);text-transform:uppercase;display:block;margin-bottom:0.5rem;">What the model said</label> | |
| <textarea class="scar-demo-input" id="claimInput" placeholder="The derivative of xΒ² is x" rows="3"></textarea> | |
| <label style="font-family:'DM Mono',monospace;font-size:0.65rem;letter-spacing:0.2em;color:var(--text-dim);text-transform:uppercase;display:block;margin:1rem 0 0.5rem;">Correction</label> | |
| <textarea class="scar-demo-input" id="correctionInput" placeholder="The derivative of xΒ² is 2x" rows="3"></textarea> | |
| <button class="demo-btn" id="formScarBtn">⬑ Crystallize Scar</button> | |
| <div style="margin-top:2rem;"> | |
| <div class="demo-panel-header" style="margin-bottom:1rem;"> | |
| <div class="status-dot"></div> | |
| Active Scar Feed | |
| </div> | |
| <div class="scar-feed" id="scarFeed"> | |
| <div class="scar-entry"> | |
| <span class="scar-type-badge">Factual</span> | |
| <div class="scar-claim">"Paris is the capital of Germany"</div> | |
| <div class="scar-correction">Paris is the capital of France</div> | |
| <div class="scar-weight-bar"><div class="scar-weight-fill" style="width:72%"></div></div> | |
| </div> | |
| <div class="scar-entry hallucination"> | |
| <span class="scar-type-badge">Hallucination</span> | |
| <div class="scar-claim">"Einstein won the Nobel Prize in 1925"</div> | |
| <div class="scar-correction">Einstein won in 1921 for photoelectric effect</div> | |
| <div class="scar-weight-bar"><div class="scar-weight-fill" style="width:88%"></div></div> | |
| </div> | |
| <div class="scar-entry logical"> | |
| <span class="scar-type-badge">Logical</span> | |
| <div class="scar-claim">"All primes are odd therefore 2 is not prime"</div> | |
| <div class="scar-correction">2 is the only even prime number</div> | |
| <div class="scar-weight-bar"><div class="scar-weight-fill" style="width:55%"></div></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Right: lattice visualization --> | |
| <div class="demo-panel"> | |
| <div class="demo-panel-header"> | |
| <div class="status-dot"></div> | |
| Scar Lattice β Live | |
| </div> | |
| <div class="lattice-canvas" id="latticeCanvas"> | |
| <svg class="lattice-svg" id="latticeSvg"></svg> | |
| <!-- nodes injected by JS --> | |
| </div> | |
| <div style="margin-top:1.5rem;padding:1rem;background:rgba(196,149,106,0.04);border:1px solid rgba(196,149,106,0.08);"> | |
| <div style="font-family:'DM Mono',monospace;font-size:0.65rem;letter-spacing:0.2em;color:var(--text-dim);text-transform:uppercase;margin-bottom:0.8rem;">Pre-scan Output</div> | |
| <div id="scanOutput" style="font-family:'DM Mono',monospace;font-size:0.75rem;color:var(--nerve);line-height:1.8;"> | |
| <span style="color:var(--text-dim)">// Awaiting query...</span> | |
| </div> | |
| </div> | |
| <textarea class="scar-demo-input" id="queryInput" placeholder="Ask something to trigger a pre-scan..." rows="2" style="margin-top:1rem;"></textarea> | |
| <button class="demo-btn" id="scanBtn" style="margin-top:0.5rem;">⬑ Pre-Scan Lattice</button> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- SCAR ANATOMY --> | |
| <section class="anatomy-section"> | |
| <div class="container"> | |
| <div class="anatomy-grid"> | |
| <div class="anatomy-code"> | |
| <div><span class="code-kw">struct</span> <span class="code-type">Scar</span> {</div> | |
| <div> <span class="code-field">id</span>: <span class="code-type">Uuid</span>,</div> | |
| <div> <span class="code-field">domain</span>: <span class="code-type">String</span>, <span class="code-comment">// "math.calculus"</span></div> | |
| <div> <span class="code-field">scar_type</span>: <span class="code-type">ScarType</span>,</div> | |
| <div> <span class="code-field">original_claim</span>: <span class="code-type">String</span>,</div> | |
| <div> <span class="code-field">correction</span>: <span class="code-type">String</span>,</div> | |
| <div> <span class="code-field">confidence_at_time</span>: <span class="code-type">f32</span>, <span class="code-comment">// was 0.94</span></div> | |
| <div> <span class="code-field">times_triggered</span>: <span class="code-type">u32</span>,</div> | |
| <div> <span class="code-field">weight</span>: <span class="code-type">f32</span>, <span class="code-comment">// 0.0β1.0</span></div> | |
| <div> <span class="code-field">fingerprint</span>: <span class="code-type">Vec<f32></span>, <span class="code-comment">// 128-dim</span></div> | |
| <div> <span class="code-field">created_at</span>: <span class="code-type">DateTime<Utc></span>,</div> | |
| <div> <span class="code-field">last_triggered</span>: <span class="code-type">Option<DateTime></span>,</div> | |
| <div>}</div> | |
| <br> | |
| <div><span class="code-kw">enum</span> <span class="code-type">ScarType</span> {</div> | |
| <div> <span class="code-val">Factual</span> | <span class="code-val">Logical</span> | <span class="code-val">Contextual</span></div> | |
| <div> | <span class="code-val">Hallucination</span> | <span class="code-val">Overconfidence</span></div> | |
| <div>}</div> | |
| </div> | |
| <div class="anatomy-text"> | |
| <span class="section-eyebrow">The Primitive</span> | |
| <h2 class="section-title">A Scar is a structured wound</h2> | |
| <p class="section-body">Every correction ECHO receives becomes a <em>Scar</em> β a typed, weighted memory object that lives in the Scar Lattice. Unlike RAG or fine-tuning, Scars form instantly, cost no compute, and grow stronger every time they fire.</p> | |
| <p class="section-body">The <em>fingerprint</em> is a 128-dim semantic vector computed in pure Rust β no ML model, just math. Similarity search across 10,000 Scars completes in microseconds via Rayon parallel scan.</p> | |
| <div class="field-list"> | |
| <div class="field-item"> | |
| <span class="field-name">weight</span> | |
| <span class="field-desc">Influence strength. Increases every time this Scar fires in a pre-scan. Decays slowly over time.</span> | |
| </div> | |
| <div class="field-item"> | |
| <span class="field-name">confidence_at_time</span> | |
| <span class="field-desc">How certain the model was when it was wrong. High confidence + wrong = overconfidence Scar.</span> | |
| </div> | |
| <div class="field-item"> | |
| <span class="field-name">times_triggered</span> | |
| <span class="field-desc">How many future queries activated this Scar. A proxy for how common this mistake pattern is.</span> | |
| </div> | |
| <div class="field-item"> | |
| <span class="field-name">fingerprint</span> | |
| <span class="field-desc">128-dim semantic vector. Used for cosine similarity matching against new queries in O(n) via rayon.</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- DOMAIN WEAKNESS MAP --> | |
| <section class="domain-section"> | |
| <div class="container"> | |
| <div class="section-header"> | |
| <span class="section-eyebrow">Domain Weakness Map</span> | |
| <h2 class="section-title" style="font-style:italic;font-weight:300;color:var(--flesh-pale);font-size:clamp(1.8rem,4vw,2.8rem);">Where it bleeds most</h2> | |
| <p style="color:var(--text-dim);max-width:500px;margin:0 auto;font-size:0.95rem;">Risk score = Scar volume + average weight + confidence at mistake. High risk domains get automatic confidence suppression.</p> | |
| </div> | |
| <div class="domain-bars" id="domainBars"> | |
| <div class="domain-row"> | |
| <span class="domain-name">math</span> | |
| <div class="domain-bar-track"><div class="domain-bar-fill" data-width="82"></div></div> | |
| <span class="domain-risk high">0.82</span> | |
| </div> | |
| <div class="domain-row"> | |
| <span class="domain-name">history</span> | |
| <div class="domain-bar-track"><div class="domain-bar-fill" data-width="71"></div></div> | |
| <span class="domain-risk high">0.71</span> | |
| </div> | |
| <div class="domain-row"> | |
| <span class="domain-name">science.physics</span> | |
| <div class="domain-bar-track"><div class="domain-bar-fill" data-width="64"></div></div> | |
| <span class="domain-risk medium">0.64</span> | |
| </div> | |
| <div class="domain-row"> | |
| <span class="domain-name">coding</span> | |
| <div class="domain-bar-track"><div class="domain-bar-fill" data-width="48"></div></div> | |
| <span class="domain-risk medium">0.48</span> | |
| </div> | |
| <div class="domain-row"> | |
| <span class="domain-name">geography</span> | |
| <div class="domain-bar-track"><div class="domain-bar-fill" data-width="31"></div></div> | |
| <span class="domain-risk low">0.31</span> | |
| </div> | |
| <div class="domain-row"> | |
| <span class="domain-name">technology</span> | |
| <div class="domain-bar-track"><div class="domain-bar-fill" data-width="22"></div></div> | |
| <span class="domain-risk low">0.22</span> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- PIPELINE --> | |
| <section class="pipeline-section"> | |
| <div class="container"> | |
| <div class="section-header"> | |
| <span class="section-eyebrow">The Loop</span> | |
| <h2 class="section-title" style="font-style:italic;font-weight:300;color:var(--flesh-pale);font-size:clamp(1.8rem,4vw,2.8rem);">How ECHO heals itself</h2> | |
| </div> | |
| <div class="pipeline-steps" id="pipeline"> | |
| <div class="pipeline-step"> | |
| <div class="step-icon">π¬</div> | |
| <div class="step-content"> | |
| <span class="step-label">Input</span> | |
| <span class="step-name">User prompt arrives</span> | |
| <p class="step-desc">Raw query enters ECHO. Before a single token is generated, the Scar system intercepts.</p> | |
| </div> | |
| </div> | |
| <div class="pipeline-step"> | |
| <div class="step-icon">π¬</div> | |
| <div class="step-content"> | |
| <span class="step-label">Pre-Scan</span> | |
| <span class="step-name">Lattice searched for wounds</span> | |
| <p class="step-desc">128-dim fingerprint computed in Rust. Cosine similarity scan across all active Scars via Rayon. Top-k matches retrieved in microseconds.</p> | |
| </div> | |
| </div> | |
| <div class="pipeline-step"> | |
| <div class="step-icon">β οΈ</div> | |
| <div class="step-content"> | |
| <span class="step-label">Caution Injection</span> | |
| <span class="step-name">Past wounds prepended</span> | |
| <p class="step-desc">If matching Scars found β a caution prompt is prepended: what was wrong before, what the correction was. Confidence suppressed up to 30% in risky domains.</p> | |
| </div> | |
| </div> | |
| <div class="pipeline-step"> | |
| <div class="step-icon">π§ </div> | |
| <div class="step-content"> | |
| <span class="step-label">Generation</span> | |
| <span class="step-name">Qwen3.5-27B runs in Rust</span> | |
| <p class="step-desc">Full inference via candle. The base model generates with scar context already in its window β no architecture change needed, just smarter input.</p> | |
| </div> | |
| </div> | |
| <div class="pipeline-step"> | |
| <div class="step-icon">π©Έ</div> | |
| <div class="step-content"> | |
| <span class="step-label">Correction</span> | |
| <span class="step-name">User corrects β Scar forms</span> | |
| <p class="step-desc">POST /v1/echo/correct. Scar crystallizes instantly. Duplicate check β if a similar Scar exists, its weight increases instead of creating a duplicate. Saved to disk atomically.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- STATS --> | |
| <section class="stats-section"> | |
| <div class="container"> | |
| <div class="section-header"> | |
| <span class="section-eyebrow">Architecture</span> | |
| <h2 class="section-title" style="font-style:italic;font-weight:300;color:var(--flesh-pale);font-size:clamp(1.8rem,4vw,2.8rem);">By the numbers</h2> | |
| </div> | |
| <div class="stats-grid"> | |
| <div class="stat-card"> | |
| <span class="stat-number" data-target="27">0</span> | |
| <span class="stat-label">Billion parameters</span> | |
| </div> | |
| <div class="stat-card"> | |
| <span class="stat-number" data-target="128">0</span> | |
| <span class="stat-label">Scar fingerprint dims</span> | |
| </div> | |
| <div class="stat-card"> | |
| <span class="stat-number" data-target="10000">0</span> | |
| <span class="stat-label">Max active Scars</span> | |
| </div> | |
| <div class="stat-card"> | |
| <span class="stat-number" data-target="5">0</span> | |
| <span class="stat-label">Scar types</span> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- FOOTER --> | |
| <footer> | |
| <span class="footer-title">Matrix ECHO</span> | |
| <span class="footer-org">Matrix Β· Corp Β· V1 Β· Rust Β· Qwen3.5-27B</span> | |
| <div class="footer-links"> | |
| <a class="footer-link" href="https://huggingface.co/Matrix-Corp">HuggingFace</a> | |
| <a class="footer-link" href="https://github.com/zapgaming">GitHub</a> | |
| <a class="footer-link" href="https://huggingface.co/Jackrong/Qwen3.5-27B-Claude-4.6-Opus-Reasoning-Distilled">Base Model</a> | |
| </div> | |
| <div class="footer-status"> | |
| <span class="pulse-dot" style="width:6px;height:6px;"></span> | |
| Architecture Complete Β· Build In Progress | |
| </div> | |
| </footer> | |
| <script> | |
| // ββ CURSOR ββ | |
| const cursor = document.getElementById('cursor'); | |
| const trail = document.getElementById('cursorTrail'); | |
| let mx = 0, my = 0, tx = 0, ty = 0; | |
| document.addEventListener('mousemove', e => { | |
| mx = e.clientX; my = e.clientY; | |
| cursor.style.left = mx - 6 + 'px'; | |
| cursor.style.top = my - 6 + 'px'; | |
| }); | |
| setInterval(() => { | |
| tx += (mx - tx) * 0.12; | |
| ty += (my - ty) * 0.12; | |
| trail.style.left = tx - 16 + 'px'; | |
| trail.style.top = ty - 16 + 'px'; | |
| }, 16); | |
| // ββ SCAR LATTICE VISUALIZATION ββ | |
| const canvas = document.getElementById('latticeCanvas'); | |
| const svg = document.getElementById('latticeSvg'); | |
| const scarData = [ | |
| { id: 1, x: 20, y: 40, r: 18, domain: 'math', label: 'Math', type: 'Factual', weight: 0.72, color: '#C0514A' }, | |
| { id: 2, x: 45, y: 25, r: 14, domain: 'math', label: 'Math', type: 'Logical', weight: 0.55, color: '#C0514A' }, | |
| { id: 3, x: 65, y: 55, r: 22, domain: 'history', label: 'Hist', type: 'Hallucination', weight: 0.88, color: '#8B5E3C' }, | |
| { id: 4, x: 30, y: 70, r: 12, domain: 'general', label: 'Gen', type: 'Contextual', weight: 0.34, color: '#7A3B3B' }, | |
| { id: 5, x: 75, y: 30, r: 16, domain: 'science', label: 'Sci', type: 'Factual', weight: 0.61, color: '#C4956A' }, | |
| { id: 6, x: 85, y: 70, r: 10, domain: 'coding', label: 'Code', type: 'Logical', weight: 0.42, color: '#8B5E3C' }, | |
| { id: 7, x: 50, y: 80, r: 13, domain: 'history', label: 'Hist', type: 'Overconfidence', weight: 0.67, color: '#8B5E3C' }, | |
| ]; | |
| const edges = [[1,2],[1,4],[2,5],[3,7],[5,6],[3,4]]; | |
| function renderLattice() { | |
| const w = canvas.offsetWidth; | |
| const h = canvas.offsetHeight; | |
| // Draw edges | |
| svg.innerHTML = ''; | |
| edges.forEach(([a, b]) => { | |
| const na = scarData.find(s => s.id === a); | |
| const nb = scarData.find(s => s.id === b); | |
| const line = document.createElementNS('http://www.w3.org/2000/svg', 'line'); | |
| line.setAttribute('x1', na.x / 100 * w); | |
| line.setAttribute('y1', na.y / 100 * h); | |
| line.setAttribute('x2', nb.x / 100 * w); | |
| line.setAttribute('y2', nb.y / 100 * h); | |
| line.setAttribute('stroke', 'rgba(196,149,106,0.15)'); | |
| line.setAttribute('stroke-width', '1'); | |
| line.setAttribute('stroke-dasharray', '3,4'); | |
| svg.appendChild(line); | |
| }); | |
| // Remove old nodes | |
| canvas.querySelectorAll('.scar-node').forEach(n => n.remove()); | |
| scarData.forEach(s => { | |
| const node = document.createElement('div'); | |
| node.className = 'scar-node'; | |
| node.style.cssText = ` | |
| left: ${s.x / 100 * w - s.r}px; | |
| top: ${s.y / 100 * h - s.r}px; | |
| width: ${s.r * 2}px; | |
| height: ${s.r * 2}px; | |
| background: radial-gradient(circle at 35% 35%, ${s.color}88, ${s.color}33); | |
| border: 1px solid ${s.color}66; | |
| box-shadow: 0 0 ${s.weight * 20}px ${s.color}44; | |
| `; | |
| node.innerHTML = ` | |
| <span style="font-size:${Math.max(0.45, s.r * 0.04)}rem">${s.label}</span> | |
| <div class="node-tooltip">${s.type} Β· weight: ${s.weight.toFixed(2)} Β· ${s.domain}</div> | |
| `; | |
| canvas.appendChild(node); | |
| }); | |
| } | |
| renderLattice(); | |
| window.addEventListener('resize', renderLattice); | |
| // ββ SCAR FORMATION ββ | |
| const scarFeed = document.getElementById('scarFeed'); | |
| let scarCount = scarData.length; | |
| const types = ['Factual', 'Logical', 'Hallucination', 'Contextual', 'Overconfidence']; | |
| const domains = ['math', 'history', 'coding', 'science.physics', 'general', 'geography']; | |
| const typeClasses = { Factual: '', Logical: 'logical', Hallucination: 'hallucination', Contextual: 'contextual', Overconfidence: 'hallucination' }; | |
| document.getElementById('formScarBtn').addEventListener('click', () => { | |
| const claim = document.getElementById('claimInput').value.trim(); | |
| const correction = document.getElementById('correctionInput').value.trim(); | |
| if (!claim || !correction) return; | |
| const type = types[Math.floor(Math.random() * types.length)]; | |
| const domain = domains[Math.floor(Math.random() * domains.length)]; | |
| const weight = (0.4 + Math.random() * 0.5).toFixed(2); | |
| const entry = document.createElement('div'); | |
| entry.className = `scar-entry ${typeClasses[type]}`; | |
| entry.style.animationDelay = '0s'; | |
| entry.innerHTML = ` | |
| <span class="scar-type-badge">${type} Β· ${domain}</span> | |
| <div class="scar-claim">"${claim.slice(0, 60)}${claim.length > 60 ? '...' : ''}"</div> | |
| <div class="scar-correction">${correction.slice(0, 60)}${correction.length > 60 ? '...' : ''}</div> | |
| <div class="scar-weight-bar"><div class="scar-weight-fill" style="width:0%"></div></div> | |
| `; | |
| scarFeed.prepend(entry); | |
| setTimeout(() => { | |
| entry.querySelector('.scar-weight-fill').style.width = (weight * 100) + '%'; | |
| }, 100); | |
| // Add node to lattice | |
| const colors = { Factual:'#C0514A', Logical:'#C4956A', Hallucination:'#7A3B3B', Contextual:'#8B5E3C', Overconfidence:'#C0514A' }; | |
| scarData.push({ | |
| id: ++scarCount, | |
| x: 10 + Math.random() * 80, | |
| y: 10 + Math.random() * 80, | |
| r: 8 + Math.random() * 14, | |
| domain, label: domain.split('.')[0].slice(0,4), | |
| type, weight: parseFloat(weight), | |
| color: colors[type] | |
| }); | |
| if (scarData.length > 2) { | |
| edges.push([scarData.length - 1, scarData.length - 3]); | |
| } | |
| renderLattice(); | |
| document.getElementById('claimInput').value = ''; | |
| document.getElementById('correctionInput').value = ''; | |
| }); | |
| // ββ PRE-SCAN DEMO ββ | |
| document.getElementById('scanBtn').addEventListener('click', () => { | |
| const query = document.getElementById('queryInput').value.trim(); | |
| if (!query) return; | |
| const out = document.getElementById('scanOutput'); | |
| out.innerHTML = '<span style="color:var(--scar-pale)">// scanning lattice...</span>'; | |
| setTimeout(() => { | |
| const matches = Math.floor(Math.random() * 4); | |
| const domain = domains[Math.floor(Math.random() * domains.length)]; | |
| const risk = (Math.random() * 0.9).toFixed(2); | |
| const suppression = (Math.min(0.3, Math.random() * 0.35)).toFixed(2); | |
| if (matches === 0) { | |
| out.innerHTML = `<span style="color:var(--text-dim)">// no relevant scars found</span> | |
| <span style="color:var(--nerve)">caution_prompt: null</span> | |
| <span style="color:var(--nerve)">suppressed_confidence: 0.00</span> | |
| <span style="color:var(--text-dim)">// proceeding with full confidence</span>`; | |
| } else { | |
| out.innerHTML = `<span style="color:var(--scar-bright)">// ${matches} scar${matches > 1 ? 's' : ''} matched</span> | |
| <span style="color:var(--nerve)">domain: "${domain}"</span> | |
| <span style="color:var(--nerve)">domain_risk: ${risk}</span> | |
| <span style="color:var(--nerve)">suppressed_confidence: -${suppression}</span> | |
| <span style="color:var(--scar-pale)">caution_prompt: "[ECHO WARNING] Similar</span> | |
| <span style="color:var(--scar-pale)"> mistakes in ${domain}. Be careful."</span>`; | |
| } | |
| document.getElementById('queryInput').value = ''; | |
| }, 600); | |
| }); | |
| // ββ PIPELINE SCROLL ANIMATION ββ | |
| const observer = new IntersectionObserver(entries => { | |
| entries.forEach((entry, i) => { | |
| if (entry.isIntersecting) { | |
| setTimeout(() => entry.target.classList.add('visible'), entry.target.dataset.delay || 0); | |
| } | |
| }); | |
| }, { threshold: 0.2 }); | |
| document.querySelectorAll('.pipeline-step').forEach((step, i) => { | |
| step.dataset.delay = i * 100; | |
| observer.observe(step); | |
| }); | |
| // ββ DOMAIN BAR ANIMATION ββ | |
| const barObserver = new IntersectionObserver(entries => { | |
| entries.forEach(entry => { | |
| if (entry.isIntersecting) { | |
| entry.target.querySelectorAll('.domain-bar-fill').forEach(bar => { | |
| setTimeout(() => { | |
| bar.style.width = bar.dataset.width + '%'; | |
| }, 200); | |
| }); | |
| barObserver.unobserve(entry.target); | |
| } | |
| }); | |
| }, { threshold: 0.3 }); | |
| barObserver.observe(document.getElementById('domainBars')); | |
| // ββ STAT COUNTER ANIMATION ββ | |
| function animateCounter(el, target, duration = 1500) { | |
| const start = performance.now(); | |
| const update = now => { | |
| const t = Math.min((now - start) / duration, 1); | |
| const ease = 1 - Math.pow(1 - t, 3); | |
| const val = Math.floor(ease * target); | |
| el.textContent = val >= 1000 ? val.toLocaleString() : val; | |
| if (t < 1) requestAnimationFrame(update); | |
| }; | |
| requestAnimationFrame(update); | |
| } | |
| const statObserver = new IntersectionObserver(entries => { | |
| entries.forEach(entry => { | |
| if (entry.isIntersecting) { | |
| entry.target.querySelectorAll('[data-target]').forEach(el => { | |
| animateCounter(el, parseInt(el.dataset.target)); | |
| }); | |
| statObserver.unobserve(entry.target); | |
| } | |
| }); | |
| }, { threshold: 0.4 }); | |
| statObserver.observe(document.querySelector('.stats-grid')); | |
| </script> | |
| </body> | |
| </html> |