@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";html,body{max-width:100%;overflow-x:hidden}.header-actions{justify-self:end;display:flex;align-items:center;gap:1rem}.language-switch{display:flex;gap:.3rem;align-items:center;font:500 .7rem JetBrains Mono;color:#526075}.language-switch button{border:0;background:none;color:#64748b;padding:.25rem;cursor:pointer}.language-switch button[aria-pressed=true]{color:var(--cyan)}.flow-diagram{display:block!important;min-height:0!important;aspect-ratio:2/1;isolation:isolate}.flow-connections{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible;z-index:0}.flow-edge .edge-path{fill:none;stroke:#89a8ca38;stroke-width:1.5;marker-end:url(#flow-arrow);transition:stroke .2s,opacity .2s,filter .2s}.flow-edge .edge-hit{stroke:transparent;stroke-width:14;marker-end:none}.flow-edge text{fill:#667991;font:500 10px JetBrains Mono;text-anchor:middle;letter-spacing:.04em}.flow-connections marker path{fill:#71849b}.flow-edge.is-active .edge-path:not(.edge-hit){stroke:var(--cyan);stroke-width:2.2;filter:drop-shadow(0 0 5px rgba(34,211,238,.55))}.flow-edge[data-direction=reverse] .edge-path:not(.edge-hit){marker-start:url(#flow-arrow);marker-end:none}.flow-particle{fill:#d9fbff;filter:drop-shadow(0 0 5px var(--cyan))}.flow-diagram[data-state=running] .flow-edge:not(.is-active){opacity:.28}.flow-diagram .node{position:absolute;width:21%;max-width:150px;min-width:105px;min-height:76px;z-index:1;transform:translate(-50%,-50%)}.flow-diagram .node.browser{left:16.5%;top:50%}.flow-diagram .node.bff{left:50%;top:50%;border-color:#8b5cf699;box-shadow:0 0 34px #8b5cf61a}.flow-diagram .node.identity{left:83.5%;top:24.5%}.flow-diagram .node.redis{left:83.5%;top:75.5%}.flow-diagram[data-state=running] .node:not(.is-active):not(.is-error){opacity:.4}.node.is-active{border-color:#22d3eed9;box-shadow:0 0 24px #22d3ee2e;transform:translate(-50%,-50%) scale(1.025)}.node.is-error{border-color:#fb7185e6;box-shadow:0 0 24px #fb71852e}.node.is-healthy{border-color:#34d39973}.flow-steps{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))!important}.flow-steps li{animation:none!important;transition:border-color .2s,color .2s}.flow-steps li.active{color:#cdeff5;border-top-color:var(--cyan)}.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}@media(max-width:620px){.flow-diagram{transform:none!important;margin:0!important;aspect-ratio:1/1;min-height:360px!important}.flow-connections{transform:scaleX(1.7);transform-origin:center}.flow-diagram .node{width:29%;min-width:96px}.flow-diagram .node.browser{left:8%;top:50%}.flow-diagram .node.bff{left:50%;top:50%}.flow-diagram .node.identity,.flow-diagram .node.redis{left:92%}.flow-diagram .node span,.flow-diagram .node small{font-size:.48rem}.flow-steps{grid-template-columns:1fr 1fr!important}}@media(prefers-reduced-motion:reduce){.flow-particle{display:none}.node.is-active{transform:translate(-50%,-50%)}}:root{color-scheme:dark;--bg:#060b13;--surface:#0a1220;--surface-2:#0e1929;--line:rgba(137,168,202,.15);--text:#dce7f5;--muted:#8292a8;--cyan:#22d3ee;--violet:#8b5cf6;--green:#34d399;--red:#fb7185;font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:radial-gradient(circle at 70% -10%,rgba(34,211,238,.08),transparent 34%),linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.015) 1px,transparent 1px),var(--bg);background-size:auto,40px 40px,40px 40px}.skip-link{position:fixed;top:-4rem;left:1rem;z-index:20;background:#fff;color:#000;padding:.7rem}.skip-link:focus{top:1rem}.topbar{height:70px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 max(1.2rem,calc((100vw - 1240px)/2));border-bottom:1px solid var(--line);background:#060b13e0;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);position:sticky;top:0;z-index:10}.back-link{color:var(--muted);text-decoration:none;font-size:.75rem}.back-link:hover{color:var(--cyan)}.brand{display:flex;align-items:center;gap:.7rem;font:600 .75rem JetBrains Mono}.brand small{color:#607087}.brand-mark{display:grid;place-items:center;width:32px;height:32px;border:1px solid rgba(34,211,238,.4);border-radius:.5rem;color:var(--cyan);box-shadow:inset 0 0 18px #22d3ee14}.status-pill{justify-self:end;padding:.35rem .65rem;border:1px solid var(--line);border-radius:99px;font:500 .62rem JetBrains Mono}.status-pill:before{content:"";display:inline-block;width:6px;height:6px;margin-right:.4rem;border-radius:50%;background:#64748b}.status-pill.ok{color:var(--green)}.status-pill.ok:before{background:var(--green);box-shadow:0 0 8px var(--green)}main{width:min(1240px,calc(100% - 2rem));margin:auto}.intro{display:grid;grid-template-columns:1.4fr 1fr;align-items:end;gap:3rem;padding:5rem 0 3rem}.eyebrow{margin:0;color:var(--cyan);font:500 .65rem JetBrains Mono;letter-spacing:.15em;text-transform:uppercase}.intro h1{max-width:760px;margin:.6rem 0 1rem;font-size:clamp(2.6rem,6vw,5.4rem);line-height:.95;letter-spacing:-.06em}.intro h1 em{font-style:normal;color:transparent;-webkit-text-stroke:1px #7be6f4}.intro>div>p:last-child,.lead{max-width:680px;color:var(--muted);line-height:1.7}.protocol-strip{display:flex;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.protocol-strip span{border:1px solid var(--line);padding:.45rem .6rem;border-radius:.35rem;color:#72849c;font:500 .62rem JetBrains Mono}.card{border:1px solid var(--line);border-radius:1rem;background:linear-gradient(145deg,#0e1929e6,#070d17f0);box-shadow:0 30px 80px #0000003d}.lab-grid{display:grid;grid-template-columns:340px 1fr;gap:1rem}.control-panel,.flow-panel,.instrument{padding:1.5rem}.card-heading{margin-bottom:1.3rem}.card-heading h2,.tab-panel h2{margin:.35rem 0;font-size:1.2rem}.card-heading.inline{display:flex;align-items:center;justify-content:space-between}.button,.icon-button{border:1px solid var(--line);border-radius:.5rem;background:#ffffff08;color:var(--text);padding:.72rem 1rem;font:600 .72rem Inter;cursor:pointer;transition:.2s}.button:hover,.icon-button:hover{border-color:#22d3ee73;transform:translateY(-1px)}.button:focus-visible,.icon-button:focus-visible,input:focus-visible,summary:focus-visible,.tabs button:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}.button.primary{background:linear-gradient(135deg,#087c96,#633cc5);border-color:transparent}.button.danger{margin-top:1rem;color:#fda4af;border-color:#fb718540}.button:disabled{opacity:.35;cursor:not-allowed;transform:none}.wide{width:100%;display:flex;justify-content:space-between}.microcopy{color:#63738a;font:400 .66rem/1.5 JetBrains Mono;text-align:center}.divider{display:flex;align-items:center;gap:.6rem;color:#526177;font-size:.65rem;margin:1.3rem 0}.divider:before,.divider:after{content:"";height:1px;flex:1;background:var(--line)}form{display:grid;gap:.85rem}label{display:grid;gap:.4rem;color:#9dacbf;font-size:.72rem}input{width:100%;border:1px solid var(--line);border-radius:.45rem;background:#07101c;color:var(--text);padding:.72rem;font:400 .78rem JetBrains Mono}details{margin-top:1rem;border-top:1px solid var(--line);padding-top:1rem}summary{cursor:pointer;color:#9dacbf;font-size:.72rem}.alert{padding:.8rem;margin-bottom:1rem;border:1px solid rgba(251,113,133,.3);border-radius:.5rem;background:#fb71850f;font-size:.72rem}.alert details{margin:.6rem 0 0}.alert code{display:block;margin-top:.5rem;color:#fda4af}.flow-panel{min-height:510px}.flow-diagram{display:grid;grid-template-columns:150px 80px 150px;align-items:center;justify-content:center;min-height:330px;position:relative}.node{width:150px;min-height:88px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid rgba(34,211,238,.25);border-radius:.7rem;background:#091523;transition:.3s;position:relative}.node:before{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border:1px solid transparent;border-radius:.9rem}.node span,.node small{font:500 .55rem JetBrains Mono;color:#637a96}.node strong{font:600 .82rem JetBrains Mono;margin:.35rem}.node.bff{border-color:#8b5cf673;box-shadow:0 0 45px #8b5cf60f}.connector{position:relative;color:#5d718b;font:500 .5rem JetBrains Mono}.connector.horizontal{height:1px;background:#22d3ee40}.connector span{position:absolute;bottom:.5rem;left:50%;transform:translate(-50%)}.connector i{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px var(--cyan);opacity:0}.branch{position:absolute;width:260px;top:200px;left:50%;transform:translate(-10px);display:grid;grid-template-columns:1fr 1fr;gap:100px}.connector.vertical{height:65px;width:1px;background:#8b5cf64d;justify-self:center}.connector.vertical span{bottom:auto;top:50%;left:.7rem;transform:none}.targets{position:absolute;top:274px;left:50%;transform:translate(-50%);display:flex;gap:110px}.node.redis,.node.identity{width:150px;min-height:75px}.flow-diagram[data-flow=login] .connector i,.flow-diagram[data-flow=logout] .connector i,.flow-diagram[data-flow=session] .connector i{opacity:1;animation:travel 1s ease-in-out 2}.flow-diagram[data-flow=login] .node:before{animation:pulse 1.3s ease 2}.flow-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;list-style:none;padding:0;margin:1.5rem 0 0;counter-reset:flow}.flow-steps li{border-top:1px solid var(--line);padding:.7rem .2rem;color:#718198;font-size:.65rem;line-height:1.5;animation:reveal .35s both;animation-delay:var(--delay)}.flow-steps li:before{counter-increment:flow;content:"0" counter(flow);display:block;color:var(--cyan);font:500 .55rem JetBrains Mono;margin-bottom:.35rem}.tabs{display:flex;gap:.2rem;margin-top:1rem;padding:0 1rem;border-bottom:1px solid var(--line);overflow:auto}.tabs button{border:0;border-bottom:2px solid transparent;background:none;color:#6f8097;padding:1rem;font:500 .68rem JetBrains Mono;cursor:pointer}.tabs button.active{color:var(--cyan);border-color:var(--cyan)}.tabs span{padding:.12rem .35rem;border-radius:99px;background:#ffffff0f}.instrument{min-height:350px;border-top-left-radius:0;border-top-right-radius:0}.instrument-grid{display:grid;grid-template-columns:1fr 1fr;gap:3rem}.metrics{display:grid;grid-template-columns:1fr 1fr;margin-top:1.5rem}.metrics div{padding:1rem 0;border-top:1px solid var(--line)}.metrics dt{color:#617189;font:500 .58rem JetBrains Mono;text-transform:uppercase}.metrics dd{margin:.35rem 0 0;color:#cbd8e8;font:500 .75rem JetBrains Mono;overflow-wrap:anywhere}.custody{display:grid;gap:.7rem;align-content:center}.custody>div{padding:1rem;border:1px solid var(--line);border-radius:.6rem;background:#08111e}.custody strong{font:600 .68rem JetBrains Mono;color:var(--cyan)}.custody p{margin:.6rem 0;font-size:.8rem}.custody code,.token-parts code,.key-grid code{color:#708097;font-size:.64rem}.custody>span{text-align:center;color:#62748b;font:500 .6rem JetBrains Mono}.token-parts{display:grid;grid-template-columns:.75fr 1.4fr .85fr;gap:.7rem;margin-top:1.5rem}.token-parts article,.key-grid article{border:1px solid var(--line);border-top-color:var(--accent,var(--cyan));border-radius:.6rem;padding:1rem;background:#07101c;overflow:auto}.token-parts article:nth-child(2){--accent:var(--violet)}.token-parts article:nth-child(3){--accent:#f59e0b}.token-parts span{font:500 .55rem JetBrains Mono;color:#60738d}.token-parts pre{font:400 .65rem/1.6 JetBrains Mono;color:#a8c2db;white-space:pre-wrap}.key-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}.key-grid p{color:var(--muted);font:500 .7rem JetBrains Mono}.empty{padding:2rem;border:1px dashed var(--line);border-radius:.6rem;text-align:center;color:#65758b}.verification-flow,.formula{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:2rem;padding:1rem;border-top:1px solid var(--line);color:#7790aa;font:500 .65rem JetBrains Mono}.verification-flow span,.formula span{padding:.75rem;border:1px solid var(--line);border-radius:.5rem;text-align:center;color:#c2cfdf}.verification-flow small{color:#687a91}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font:400 .68rem JetBrains Mono}th,td{padding:.75rem;text-align:left;border-bottom:1px solid var(--line)}th{color:#607189;font-size:.56rem;text-transform:uppercase}td{color:#a7b6c9}.security-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-top:1.2rem}.security-grid>div{display:flex;align-items:center;gap:.7rem;padding:.9rem;border:1px solid var(--line);border-radius:.5rem}.security-grid span{font-size:1.1rem}.security-grid .verified{color:var(--green)}.security-grid .pending{color:#58677a}.security-grid strong,.security-grid small{display:block}.security-grid strong{font-size:.7rem}.security-grid small{margin-top:.25rem;color:#617189;font-size:.58rem}footer{display:flex;justify-content:space-between;padding:2rem 0 3rem;color:#526076;font:500 .6rem JetBrains Mono}@keyframes travel{0%{transform:translate(0)}50%{transform:translate(65px)}to{transform:translate(0)}}@keyframes pulse{50%{border-color:#22d3eeb3;box-shadow:0 0 25px #22d3ee26}}@keyframes reveal{0%{opacity:0;transform:translateY(5px)}}[hidden]{display:none!important}@media(max-width:900px){.intro{grid-template-columns:1fr}.protocol-strip{justify-content:flex-start}.lab-grid,.instrument-grid{grid-template-columns:1fr}.security-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:620px){.topbar{grid-template-columns:1fr 1fr}.brand{display:none}.back-link{font-size:.65rem}.intro{padding-top:3rem}.intro h1{font-size:2.8rem}.flow-panel{overflow:hidden}.flow-diagram{transform:scale(.78);transform-origin:top center;margin-bottom:-60px}.flow-steps,.token-parts,.key-grid,.security-grid,.metrics{grid-template-columns:1fr}.verification-flow,.formula{flex-direction:column}footer{display:block}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
