.ecam{text-shadow:0 1px 2px #070b1a73;background:#070b1adb;border-radius:18px;margin-top:2.25rem;padding:clamp(.85rem,2vw,1.35rem);box-shadow:inset 0 0 0 1px #e8edf51f,inset 0 1px #ffffff29,inset 0 0 60px -30px #7fd3ff80,0 30px 70px -45px #000000e6}.js .ecam__pg:not(.is-on){display:none}.ecam__pg{animation:ecam-in .34s var(--ease-out) both}.ecam__pg+.ecam__pg{margin-top:2.5rem}@keyframes ecam-in{0%{opacity:0;translate:0 6px}}.ecam__hd{border-bottom:1px solid #e8edf51f;flex-wrap:wrap;align-items:baseline;gap:.5rem .9rem;padding-bottom:.7rem;display:flex}.ecam__id{font-family:var(--font-mono);letter-spacing:.14em;color:var(--instr);font-size:1.02rem}.ecam__nm{margin:0;font-size:clamp(1.05rem,2.4vw,1.3rem);font-weight:600}.ecam__st{font-family:var(--font-mono);letter-spacing:.14em;border-radius:999px;padding:.2rem .5rem;font-size:.62rem;box-shadow:inset 0 0 0 1px}.ecam__st[data-s=live]{color:var(--teal)}.ecam__st[data-s=published]{color:var(--instr)}.ecam__st[data-s=in-build]{color:var(--amber)}.ecam__st[data-s=research]{color:#e8edf5ad}.ecam__sum{color:var(--ink-2);font-size:var(--t-small);flex:14rem;margin:0}.ecam__body{gap:1.1rem;margin-top:1.1rem;display:grid}.ecam__split{align-items:start;gap:1.1rem 1.5rem;display:grid}@media (width>=58rem){.ecam__split:not(.is-wide){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.ecam__note{font-size:var(--t-small);margin-top:2rem}.ecam__prose p{color:var(--ink-2);font-size:var(--t-small);max-width:58ch;margin:0 0 .7rem}.syn-defs{width:0;height:0;position:absolute;overflow:hidden}.syn-wrap{background:#7fd3ff0a;border-radius:12px;padding:.35rem;overflow-x:auto;box-shadow:inset 0 0 0 1px #e8edf517}.syn-wrap svg{width:100%;min-width:34rem;height:auto;display:block}.syn-hint{font-family:var(--font-mono);letter-spacing:.1em;color:#7fd3ff99;margin:.4rem 0 0;font-size:.6rem;display:none}@media (width<=42rem){.syn-hint{display:block}}.syn-cap{color:var(--ink-3);margin:.5rem 0 0;font-size:.74rem}.syn-box,.syn-chip{fill:#7fd3ff0f;stroke:#7fd3ff66;stroke-width:1px}.syn-group{fill:none;stroke:#e8edf529;stroke-width:1px;stroke-dasharray:3 4}.syn--amber .syn-box,.syn--amber .syn-chip{fill:#ff7a2f14;stroke:#ff7a2f80}.syn--teal .syn-box,.syn--teal .syn-chip{fill:#63e6d214;stroke:#63e6d273}.syn--dim .syn-box,.syn--dim .syn-chip{fill:#e8edf50a;stroke:#e8edf542}.syn-ttl{fill:var(--ink-light);text-anchor:middle;font-size:11px;font-weight:600}.syn-sub{fill:#e8edf59e;text-anchor:middle;font-size:8.5px}.syn-chip-t{fill:#e8edf5d1;text-anchor:middle;font-size:8.5px}.syn-lbl{fill:#e8edf59e}.syn-xs{letter-spacing:.08em;font-size:8px}.syn-sm{font-size:9.5px}.syn-head{fill:#e8edf58c;letter-spacing:.16em;font-size:8px}.syn-grp{fill:#e8edf58c;letter-spacing:.14em;font-size:7.5px}.syn-wlbl{fill:#e8edf599;text-anchor:middle;font-size:7.5px}.syn-mono{font-family:var(--font-mono)}.syn-lbl.syn--instr{fill:#7fd3ffc7}.syn-lbl.syn--amber{fill:#ff7a2fd9}.syn-lbl.syn--teal{fill:#63e6d2cc}.syn-wire{fill:none;stroke:#e8edf538;stroke-width:1px}.syn-wire.syn--instr{stroke:#7fd3ff80}.syn-wire.syn--amber{stroke:#ff7a2f8c}.syn-wire.syn--teal{stroke:#63e6d280}.syn-arw{fill:#e8edf54d}.syn-arw.syn--instr{fill:#7fd3ff99}.syn-arw.syn--amber{fill:#ff7a2fa6}.syn-arw.syn--teal{fill:#63e6d299}.syn-axis{fill:none;stroke:#e8edf54d;stroke-width:1px}.syn-curve{fill:none;stroke-width:1.6px}.syn-curve.syn--amber{stroke:#ff7a2fcc}.syn-curve.syn--teal{stroke:#63e6d2cc}.syn-flow{stroke-dasharray:3 7;animation:1.9s linear infinite syn-flow}@keyframes syn-flow{to{stroke-dashoffset:-20px}}.demo{background:#05091480;border-radius:12px;overflow:hidden;box-shadow:inset 0 0 0 1px #e8edf51a}.demo__cap{color:var(--ink-3);margin:.5rem 0 0;font-size:.74rem}.demo--term{font-family:var(--font-mono);padding:.9rem 1rem;font-size:.73rem;line-height:1.65;overflow-x:auto}.demo--term pre{white-space:pre;margin:0}.demo--term span{display:block}.demo__cmd{color:var(--instr)}.demo__err{color:var(--amber)}.demo__dim{color:#e8edf58c}.demo__load{cursor:pointer;width:100%;color:inherit;background:0 0;border:0;padding:0;display:block;position:relative}.demo__load img{opacity:.55;width:100%;height:auto;transition:opacity .3s;display:block}.demo__load:hover img,.demo__load:focus-visible img{opacity:.8}.demo__play{font-family:var(--font-mono);letter-spacing:.1em;text-align:center;background:linear-gradient(#05091459,#050914b8);place-content:center;gap:.35rem;font-size:.74rem;display:grid;position:absolute;inset:0}.demo__play b{color:var(--instr);font-weight:600}.demo__play span{color:#e8edf599;font-size:.66rem}.demo iframe{background:#fff;border:0;width:100%;height:clamp(20rem,46vh,28rem);display:block}.demo__shot img{width:100%;height:auto;display:block}.demo__thumbs{gap:.4rem;padding:.5rem;display:flex;overflow-x:auto}.demo__thumbs button{cursor:pointer;opacity:.45;background:0 0;border:0;border-radius:6px;flex:none;width:4.4rem;padding:0;transition:opacity .25s;overflow:hidden;box-shadow:0 0 0 1px #e8edf524}.demo__thumbs button[aria-current=true],.demo__thumbs button:hover{opacity:1;box-shadow:0 0 0 1px #7fd3ff99}.demo__thumbs img{width:100%;height:auto;display:block}.ecam__rd{gap:.1rem;margin:1.2rem 0 0;display:grid}.ecam__row{font-size:var(--t-small);border-top:1px solid #e8edf512;grid-template-columns:5.6rem minmax(0,1fr);gap:.75rem;padding:.38rem 0;display:grid}.ecam__k{font-family:var(--font-mono);letter-spacing:.1em;color:#7fd3ffb8;padding-top:.14rem;font-size:.64rem}.ecam__v{color:var(--ink-2)}.ecam__row[data-tone=amber] .ecam__k{color:var(--amber)}.ecam__row[data-tone=amber] .ecam__v{color:#ffc7a0f2}.ecam__src{font-family:var(--font-mono);color:#e8edf594;margin-top:.12rem;font-size:.6rem;display:block}.ecam__ft{border-top:1px solid #e8edf51f;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-top:1.1rem;padding-top:.9rem;display:flex}.ecam__stack{flex-wrap:wrap;flex:12rem;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.ecam__stack li{font-family:var(--font-mono);letter-spacing:.06em;color:#e8edf5b8;background:#e8edf50d;border-radius:999px;padding:.18rem .5rem;font-size:.62rem;box-shadow:inset 0 0 0 1px #e8edf51a}.ecam__links{flex-wrap:wrap;gap:.45rem;display:flex}.ecam__links a{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-2);border-radius:999px;padding:.3rem .7rem;font-size:.68rem;text-decoration:none;transition:color .25s,box-shadow .25s;box-shadow:inset 0 0 0 1px #e8edf52e}.ecam__links a:hover{color:var(--ink-light);box-shadow:inset 0 0 0 1px #7fd3ff8c}.ecam__links a[data-primary]{color:var(--instr);box-shadow:inset 0 0 0 1px #7fd3ff80}.ecam__ctl{scrollbar-width:thin;border-top:1px solid #e8edf51f;gap:.4rem;margin-top:1.15rem;padding-top:.95rem;display:flex;overflow-x:auto}.ecam__btn{cursor:pointer;font-family:var(--font-mono);letter-spacing:.12em;color:#e8edf599;background:#e8edf50a;border:0;border-radius:8px;flex:none;padding:.45rem .8rem;font-size:.66rem;transition:color .22s,background .22s,box-shadow .22s;box-shadow:inset 0 0 0 1px #e8edf51f}.ecam__btn:hover{color:var(--ink-light)}.ecam__btn[aria-selected=true]{color:var(--instr);background:#7fd3ff1a;box-shadow:inset 0 0 0 1px #7fd3ff8c,0 0 18px -6px #7fd3ff80}.stat{border-collapse:collapse;width:100%;font-size:var(--t-small);margin-top:1rem}.stat caption{text-align:left;font-family:var(--font-mono);letter-spacing:.14em;color:#e8edf594;padding-bottom:.5rem;font-size:.64rem}.stat th,.stat td{text-align:left;vertical-align:top;border-top:1px solid #e8edf514;padding:.55rem .6rem .55rem 0}.stat th{font-family:var(--font-mono);letter-spacing:.12em;color:#e8edf594;border-top:0;font-size:.6rem;font-weight:400}.stat tbody tr{transition:background .2s}.stat tbody tr:hover{background:#7fd3ff0d}.stat__go{font-family:var(--font-mono);letter-spacing:.1em;color:var(--instr);cursor:pointer;background:0 0;border:0;padding:0;font-size:.72rem;text-decoration:none}.stat__go:hover{text-decoration:underline}.stat__s{font-family:var(--font-mono);letter-spacing:.1em;white-space:nowrap;font-size:.6rem}.stat__s[data-s=live]{color:var(--teal)}.stat__s[data-s=published]{color:var(--instr)}.stat__s[data-s=in-build]{color:var(--amber)}.stat__s[data-s=research]{color:#e8edf59e}@media (prefers-reduced-motion:reduce){.syn-flow,.ecam__pg{animation:none}}
