:root{color-scheme:dark;--bg:#080c16;--panel:#0f1626;--ink:#e8eefc;--mut:#9aa8c2;--line:#233049;--soft:#16203a;--acc:#35e8c6;--acc2:#a78bfa;--acc-ink:#04121a;--ok:#4ee6a8;--bad:#ff7d8a;--warn:#ffc85c;--s1:#0ea896;--s2:#8b7cf6;--s3:#c97a24;--glow:0 0 0 1px rgba(53,232,198,.35),0 8px 32px -8px rgba(53,232,198,.28);--mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;--sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:6rem;overflow-x:hidden}body{margin:0;background:radial-gradient(60rem 30rem at 85% -8rem,rgba(139,124,246,.16),transparent 70%),radial-gradient(50rem 28rem at 5% -6rem,rgba(53,232,198,.13),transparent 70%),linear-gradient(rgba(120,150,210,.05) 1px,transparent 1px) 0 0/100% 2.5rem,linear-gradient(90deg,rgba(120,150,210,.05) 1px,transparent 1px) 0 0/2.5rem 100%,var(--bg);background-repeat:no-repeat,no-repeat,repeat,repeat;color:var(--ink);font:1.03rem/1.65 var(--sans);font-variant-numeric:tabular-nums}a{color:var(--acc);text-underline-offset:.15em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--acc);outline-offset:2px}h1,h2,h3{line-height:1.15;letter-spacing:-.02em;text-wrap:balance}h1,h2{font-family:var(--mono);font-weight:700}h1{font-size:clamp(1.75rem,1.2rem + 2.6vw,2.7rem);margin:.2em 0 .4em;letter-spacing:-.04em}h2{font-size:1.3rem;margin:2.2em 0 .7em;letter-spacing:-.03em}section>h2:before,.guide>h2:before,.sec-h>h2:before{content:"// ";color:var(--acc)}h3{font-size:1.15rem;margin:1.8em 0 .4em}p,ul,ol{margin:0 0 1em}li{margin-bottom:.35em}code,kbd{font:.9em var(--mono);background:var(--soft);padding:.1em .3em;border-radius:3px;overflow-wrap:anywhere}pre{font:.875rem/1.55 var(--mono);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.95rem;margin:0 0 1.2em}th,td{text-align:left;padding:.45em .6em;border-bottom:1px solid var(--line);vertical-align:top}th{font-weight:600}.scroll{overflow-x:auto}.wrap{max-width:72rem;margin:0 auto;padding:0 1.15rem}.page,.tool-page{max-width:60rem}.skip{position:absolute;left:-999px}.skip:focus{left:.5rem;top:.5rem;background:var(--panel);padding:.5rem;z-index:9}.top{border-bottom:1px solid var(--line);background:#080c16f0;position:sticky;top:0;z-index:5}.top-in{display:flex;flex-wrap:wrap;align-items:center;gap:0 1.4rem;padding-top:.35rem;padding-bottom:.2rem}.logo{font:700 1.1rem var(--mono);color:var(--ink);text-decoration:none;padding:.3rem 0}.logo span{color:var(--acc);text-shadow:0 0 14px rgba(53,232,198,.6)}.top nav{min-width:0;flex:1 1 20rem}.top ul{list-style:none;display:flex;gap:.1rem .9rem;margin:0;padding:0;overflow-x:auto;scrollbar-width:none}.top li{margin:0;flex:none}.top nav a{display:block;padding:.4rem .1rem;color:var(--mut);text-decoration:none;font-size:.95rem;min-height:2.5rem}.top nav a:hover,.top nav a[aria-current]{color:var(--ink)}.top nav a[aria-current]{box-shadow:inset 0 -2px var(--acc)}.top li:first-child a{color:var(--acc);font-weight:600}.foot{margin-top:5rem;border-top:1px solid var(--line);padding:2rem 0;color:var(--mut);font-size:.92rem}.foot ul{list-style:none;display:flex;flex-wrap:wrap;gap:.2rem 1.2rem;padding:0}.foot a{color:inherit;display:inline-block;padding:.25rem 0}.legal{font-size:.9rem;color:var(--mut)}.crumbs{font-size:.88rem;color:var(--mut);margin:1.1rem 0 1.6rem}.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:.1rem .45rem;margin:0;padding:0}.crumbs li{margin:0}.crumbs li+li:before{content:"/";margin-right:.45rem;color:var(--line)}.crumbs a{color:inherit;padding:.2rem 0;display:inline-block}.crumbs [aria-current]{max-width:22rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kicker{font:.78rem var(--mono);color:var(--acc);margin:0 0 .4em;text-transform:uppercase;letter-spacing:.06em}.lead{font-size:1.14rem;color:var(--mut);line-height:1.5;max-width:44rem}.toc{border-block:1px solid var(--line);padding:.7rem 0;margin:1.2rem 0;font-size:.88rem;font-family:var(--mono)}.toc ol{display:flex;flex-wrap:wrap;gap:.1rem 1.1rem;list-style:none;margin:0;padding:0}.toc li{margin:0}.toc a{color:var(--mut);display:inline-block;padding:.22rem 0}#idee p:first-of-type{font-size:1.14rem;font-weight:500}article h2:first-of-type{margin-top:1.2em}@media(min-width:66rem){article{display:grid;grid-template-columns:minmax(0,1fr) 13.5rem;column-gap:2.6rem}article>*{grid-column:1;min-width:0}.toc{grid-column:2;grid-row:1/span 12;align-self:start;position:sticky;top:5.2rem;border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:.8rem 1rem}.toc ol,.toc a{display:block}.toc:before{content:"SOMMAIRE";display:block;font-size:.72rem;color:var(--acc);letter-spacing:.1em;margin-bottom:.3rem}.art-head{grid-column:1}}.callout{border-left:3px solid var(--acc);padding:.2rem 0 .2rem 1rem;margin:1.2rem 0}.pager{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-top:2.5rem}.pager a{border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:.8rem 1rem;color:var(--ink);text-decoration:none;font-weight:600;line-height:1.3;transition:box-shadow .15s,border-color .15s}.pager a:last-child{text-align:right}.pager a:hover{border-color:var(--acc);box-shadow:var(--glow)}.pager span{display:block;font:.78rem var(--mono);color:var(--mut);margin-bottom:.3rem}.cards,.path,.demo-list,.tools{list-style:none;padding:0;margin:0 0 2rem;display:grid;gap:.8rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr))}.cards{counter-reset:c}.cards li,.path li,.demo-list li,.tools li{margin:0;display:flex;min-width:0}.cards a,.path a,.demo-list a,.tools a{flex:1;display:flex;flex-direction:column;gap:.3rem;position:relative;overflow:hidden;padding:1rem 1.05rem;border:1px solid var(--line);border-radius:10px;background:linear-gradient(160deg,rgba(53,232,198,.07),transparent 45%),var(--panel);color:var(--ink);text-decoration:none;transition:box-shadow .15s,border-color .15s,transform .15s}.cards a:hover,.path a:hover,.demo-list a:hover,.tools a:hover{border-color:var(--acc);box-shadow:var(--glow);transform:translateY(-2px)}.cards li{counter-increment:c}.cards a:before{content:counter(c,decimal-leading-zero);font:.76rem var(--mono);color:var(--acc)}.cards b,.path b,.demo-list b,.tools b{line-height:1.3}.cards span,.path span,.demo-list span,.tools span{color:var(--mut);font-size:.92rem;line-height:1.45}.path i{font:700 .78rem var(--mono);color:var(--acc)}.path em,.tools em{margin-top:auto;padding-top:.3rem;font:normal .76rem var(--mono);color:var(--acc)}.tools i{font:600 .7rem var(--mono);color:var(--acc-ink);background:var(--acc);padding:.08rem .45rem;border-radius:3px;align-self:flex-start;text-transform:uppercase;letter-spacing:.06em}.path{grid-template-columns:repeat(auto-fit,minmax(min(100%,12.5rem),1fr))}.cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr))}.hero{display:grid;gap:1.6rem 2.6rem;padding:2.4rem 0 1.4rem;align-items:center}.hero h1{margin-top:0;font-size:clamp(2.1rem,1.3rem + 3.6vw,3.5rem)}.hero h1 span{color:var(--acc);text-shadow:0 0 24px rgba(53,232,198,.5)}@media(min-width:60rem){.hero{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}}.cta{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.2rem}.btn{display:inline-flex;align-items:center;min-height:2.75rem;padding:.55rem 1.1rem;border-radius:6px;font-weight:600;text-decoration:none;background:var(--acc);color:var(--acc-ink);box-shadow:0 0 22px -4px #35e8c699}.btn.alt{background:transparent;color:var(--ink);box-shadow:none;border:1px solid var(--mut)}.term{border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:var(--glow);overflow:hidden;font-family:var(--mono);font-size:.86rem}.term-h{display:flex;justify-content:space-between;gap:.5rem;padding:.5rem .9rem;border-bottom:1px solid var(--line);color:var(--mut);font-size:.76rem}.live{color:var(--ok)}.live:before{content:"";display:inline-block;width:.5em;height:.5em;border-radius:50%;background:var(--ok);margin-right:.4em;animation:pulse 1.6s infinite}@keyframes pulse{50%{opacity:.25}}.term-b{padding:.9rem}.term label{display:block;color:var(--mut);font-size:.78rem;margin-bottom:.25rem}.term input{font-family:var(--mono);font-size:.9rem}.term-l{color:var(--mut);margin:.7rem 0 .1rem;font-size:.76rem}.term-v{overflow-wrap:anywhere;min-height:3em;line-height:1.5;color:var(--ink);margin:0}.term-v b{color:var(--acc);font-weight:700}.kpi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-top:.7rem}.kpi div{background:var(--soft);border-radius:6px;padding:.4rem .55rem;min-width:0}.kpi b{display:block;font-size:1rem;color:var(--acc);white-space:nowrap;overflow:hidden}.kpi span{font-size:.68rem;color:var(--mut)}.ticker{display:flex;overflow:hidden;border-block:1px solid var(--line);background:var(--panel);margin-inline:calc(50% - 50vw);font:.78rem var(--mono);color:var(--mut)}.ticker ul{display:flex;flex:none;gap:2.4rem;list-style:none;margin:0;padding:.55rem 1.2rem;animation:tick 55s linear infinite;will-change:transform}.ticker li{margin:0;white-space:nowrap}.ticker b{color:var(--acc);font-weight:600}.ticker:hover ul{animation-play-state:paused}@keyframes tick{to{transform:translate(-100%)}}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.8rem;margin:1.6rem 0}.metrics div{border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:.8rem 1rem}.metrics b{display:block;font:700 1.7rem/1.2 var(--mono);color:var(--acc)}.metrics span{font-size:.84rem;color:var(--mut)}.sec-h h2{margin-bottom:.5em}.sec-h{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap}.faq{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;padding:.7rem 0;font-weight:600}.gl dt{font-weight:700;margin-top:1.2rem;scroll-margin-top:1rem}.gl dd{margin:0 0 .2rem}.az{display:flex;flex-wrap:wrap;gap:.2rem .5rem;list-style:none;padding:0;font-family:var(--mono)}.az li{margin:0}.az a{display:inline-block;padding:.3rem .45rem}@media(max-width:34rem){.pager{grid-template-columns:1fr}.pager a:last-child{text-align:left}.top ul{margin-inline:-1.15rem;padding-inline:1.15rem}}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media(prefers-reduced-motion:reduce){.ticker ul,.live:before{animation:none}.cards a,.path a,.tools a{transition:none}}.tv{margin:1rem 0}.tv-box{position:relative;border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden}.tv-off{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.7rem;padding:1rem;text-align:center;color:var(--mut);font-size:.92rem}.tv-off p{margin:0;max-width:26rem}.sub{font:600 .98rem var(--sans);letter-spacing:0;margin:.9em 0 .4em}.tv-box iframe{color-scheme:light}.tv-box .tradingview-widget-container,.tv-box .tradingview-widget-container__widget,.tv-box iframe{width:100%;height:100%}.tv figcaption{font-size:.78rem;text-align:right}.tv figcaption a{color:var(--mut);display:inline-block;padding:.35rem 0}.mkt{max-width:72rem}.mkt>.guide,.mkt>.legal{max-width:60rem}.demo{position:relative;background:linear-gradient(170deg,rgba(53,232,198,.06),transparent 30%),var(--panel);border:1px solid rgba(53,232,198,.4);border-radius:12px;padding:1.1rem;margin:1rem 0;box-shadow:0 12px 44px -16px #35e8c64d}.demo h3{margin-top:.8em}.demo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.8rem 1rem;margin-bottom:.8rem}.field{display:block;margin-bottom:.8rem;font-size:.92rem}.demo-grid .field{margin-bottom:0}.field>span{display:flex;justify-content:space-between;gap:.5rem;font-weight:600;margin-bottom:.25rem}.field output{font:.9rem var(--mono);font-weight:400}input[type=text],input[type=number],textarea,select{width:100%;font:1rem var(--sans);color:var(--ink);background:var(--bg);border:1px solid var(--mut);border-radius:5px;padding:.5rem .6rem;min-height:2.75rem}input[type=range]{width:100%;accent-color:var(--acc);height:2.25rem;margin:0}textarea{font-family:var(--mono);font-size:.875rem;line-height:1.55;display:block;resize:vertical}button{font:600 .94rem var(--mono);box-shadow:0 0 18px -6px #35e8c6b3;color:var(--acc-ink);background:var(--acc);border:1px solid var(--acc);border-radius:5px;padding:.55rem 1rem;min-height:2.75rem;cursor:pointer}button:hover{filter:brightness(1.08)}button:disabled{opacity:.55;cursor:default}button.ghost{background:transparent;color:var(--ink);border-color:var(--mut);box-shadow:none}.actions{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0}.out{font:.86rem/1.55 var(--mono);background:#0a1020;border:1px solid var(--line);border-radius:5px;padding:.6rem .7rem;margin:.6rem 0;overflow-wrap:anywhere;white-space:pre-wrap;min-height:2.6rem}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));gap:.6rem;margin:.8rem 0}.stats div{background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:.55rem .75rem}.stats b{display:block;font:700 1.3rem/1.3 var(--mono);overflow-wrap:anywhere;color:var(--acc)}.stats span{font-size:.82rem;color:var(--mut)}.ok{color:var(--ok);font-weight:600}.bad{color:var(--bad);font-weight:600}.warn{color:var(--warn);font-weight:600}.diff{background:#35e8c638;color:var(--acc);border-radius:2px}.edu{border:1px solid var(--warn);color:var(--ink);border-radius:6px;padding:.55rem .8rem;font-size:.93rem;margin:.8rem 0}.edu b{color:var(--warn);margin-right:.35rem}.chain{display:grid;gap:.6rem;margin:.8rem 0}.block{border:1px solid var(--line);border-left:4px solid var(--ok);border-radius:5px;padding:.6rem .7rem;background:var(--bg);font-size:.9rem;min-width:0}.block.broken{border-left-color:var(--bad)}.block code{background:none;padding:0}.plot{position:relative;margin:.8rem 0;aspect-ratio:16/10;touch-action:pan-y}.plot svg{display:block;width:100%;height:100%;overflow:visible}.plot text{font:11px var(--sans);fill:var(--mut)}.plot .grid{stroke:var(--line);stroke-width:1}.plot .ln{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.plot .s0{stroke:var(--s1);fill:var(--s1)}.plot .s1{stroke:var(--s2);fill:var(--s2)}.plot .s2{stroke:var(--s3);fill:var(--s3)}.plot .ln.s0,.plot .ln.s1,.plot .ln.s2{fill:none}.plot .dot{stroke:var(--panel);stroke-width:2}.plot .x{stroke:var(--mut);stroke-width:1}.plot .lbl{fill:var(--ink);font-weight:600}.tip{position:absolute;top:0;pointer-events:none;background:var(--ink);color:#080c16;font:.78rem/1.35 var(--sans);padding:.3rem .5rem;border-radius:4px;white-space:nowrap}.legend{display:flex;flex-wrap:wrap;gap:.2rem 1rem;font-size:.84rem;color:var(--mut);list-style:none;padding:0;margin:.3rem 0 0}.legend li{margin:0}.legend i{display:inline-block;width:.8em;height:.8em;border-radius:2px;margin-right:.35em;background:var(--s1)}.legend .k1{background:var(--s2)}.legend .k2{background:var(--s3)}.run label{font-size:.9rem;font-weight:600;display:block;margin-bottom:.25rem}.run textarea{overflow-x:auto;white-space:pre;tab-size:2;background:#0a1020;color:#b9f6e8}.run-bar{display:flex;gap:.5rem;margin:.5rem 0}.run-out{background:#0a1020;border:1px solid var(--line);padding:.6rem .7rem;border-radius:5px;min-height:5rem;max-height:20rem;overflow:auto;margin:0 0 1rem;white-space:pre-wrap;overflow-wrap:anywhere}.run-out .e{color:var(--bad)}.embed{font-size:.93rem;margin:.6rem 0}.embed summary{cursor:pointer;color:var(--mut);padding:.35rem 0}.q{border:1px solid var(--line);border-radius:6px;padding:.7rem .9rem;margin:0 0 .9rem;min-width:0}.q legend{font-weight:600;padding:0 .3rem}.q label{display:flex;gap:.5rem;align-items:baseline;padding:.32rem 0;cursor:pointer}.q input{margin:0;flex:none;width:1.1rem;height:1.1rem;accent-color:var(--acc)}.why{margin:.5rem 0 0}.embedded{background:var(--bg)}.embedded main{padding:.6rem;max-width:44rem;margin:auto}.embedded .demo{border:0;padding:0;margin:0}.by{font-size:.85rem;margin:.6rem 0 0}.bar{height:.6rem;background:var(--soft);border-radius:3px;overflow:hidden;margin:.35rem 0}.bar i{display:block;height:100%;width:50%;background:var(--s2)}.block.off{border-left-color:var(--mut)}.block.off .bar i{background:var(--mut)}.trace{height:19rem;overflow:auto;border:1px solid var(--line);border-radius:5px;background:var(--bg);margin:.6rem 0}.trace table{margin:0;font:.78rem/1.45 var(--mono);width:auto;min-width:100%}.trace th,.trace td{padding:.12rem .45rem;white-space:nowrap;text-align:left;border:0}.trace th{position:sticky;top:0;background:var(--soft)}.trace tr.on td{background:color-mix(in srgb,var(--s1) 22%,transparent)}.trace li{padding:.12rem .5rem;font-size:.86rem;list-style:none;margin:0}.trace ol{margin:0;padding:.2rem 0}.trace li.on{background:color-mix(in srgb,var(--s1) 22%,transparent)}.nft{display:grid;grid-template-columns:7.5rem 1fr;gap:.8rem;align-items:start}.nft img,.nft .gone{width:7.5rem;height:7.5rem;border-radius:5px;display:block}.nft .gone{display:grid;place-items:center;background:var(--soft);font-size:.8rem;text-align:center;padding:.4rem}.nft .out{margin:0;min-height:7.5rem}@media(max-width:30rem){.nft{grid-template-columns:1fr}}.mtree{display:grid;gap:3px;align-content:start;min-height:9.2rem;margin:.8rem 0;font:.72rem/1.3 var(--mono)}.mtree span{background:var(--soft);border:1px solid transparent;border-radius:3px;padding:.28rem 0;text-align:center}.mtree .path{border-color:var(--acc);font-weight:600}.mtree .sib{border-color:var(--ok);border-style:dashed}.mtree .dup{background:none;border:1px dotted var(--mut)}.mtree .tx{background:none;color:var(--mut)}.bf{display:grid;grid-template-columns:4.6rem minmax(0,1fr);gap:.1rem .5rem;margin-top:.3rem;font-size:.84rem}.bf>span,.bf>label{color:var(--mut)}.bf code{overflow-wrap:anywhere;font-size:.8rem}.bf input{min-height:2.4rem;padding:.25rem .4rem;font-size:.92rem}.zz{color:var(--ok);font-weight:600}.stats b.ok{color:var(--ok)}.stats b.bad{color:var(--bad)}.stats b.warn{color:var(--warn)}.block.todo{border-left-color:var(--line);color:var(--mut)}.block.warned{border-left-color:var(--warn)}.check{display:flex;align-items:center;gap:.5rem;min-height:2.75rem;cursor:pointer}.check input{width:1.2rem;height:1.2rem;margin:0;accent-color:var(--acc)}.sec-vals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;margin:.6rem 0}.sec-vals label{display:flex;gap:.4rem;align-items:center;border:1px solid var(--line);border-radius:5px;padding:.4rem .5rem;font-size:.82rem;min-width:0;cursor:pointer}.sec-vals input,.sec-check input{flex:none;width:1.1rem;height:1.1rem;margin:0;accent-color:var(--acc)}.sec-check{display:flex;gap:.5rem;align-items:center;font-size:.92rem;margin:.4rem 0;cursor:pointer}.sec-tall{min-height:11rem}.sec-log{min-height:9.5rem}
