From 1faea7491c67d4c5c8f3dce8246a9220f7b685c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jesu=CC=81s=20Pe=CC=81rez?= Multiple projects now adopt the ontoref protocol (lian-build is the explicit
+external case under bl-002 / bl-008). Field experience across ontoref +
+lian-build + provisioning shows that an ontoref-onboarded project's
+repository carries TWO distinct ontoref-shaped layers, while a third layer
+exists outside the project (in caller repositories). Without codification,
+adopters re-derive the model per project, mix layers accidentally, and lose
+boundaries silently: - Layer 3 content (caller-side cabling) drifts into a project's qa.ncl,
+ making the FAQ a how-to-deploy guide for one specific caller.
+ - Layer 2 schemas live under reflection/ as 'project notes', drifting
+ from the binary because they're not on the contract path.
+ - Layer 1 architectural rationale ends up in catalog/domains/<id>/
+ contract.ncl, where consumers expecting a typed shape get prose. The model has been observed (lian-build/reflection/qa.ncl::lian-build-what-
+and-why), described (ontoref/reflection/qa.ncl::ontoref-three-layer-model),
+and queued for codification (bl-009). This ADR commits the model with
+machine-checkable constraints. Acceptance is gated on the constraints
+running clean across the existing ontoref-onboarded projects (ontoref
+itself, lian-build, provisioning). WHY IT SAT IN 'Proposed FOR TWO MONTHS, AND WHAT UNSTUCK IT (2026-07-13). The gate was never a judgement call. The constraints could not run clean because
+the executor that runs them was broken (ADR-070 / migration 0044: check paths
+resolved against the caller's cwd, and `.ontoref/`-prefixed paths came out
+double-prefixed and missed). With the executor anchored, the four Layer 1 checks
+run clean on ontoref, lian-build and provisioning as written. The Layer 1 half of
+this ADR was correct and unenforced, which is the worst state a constraint can
+be in — it looks satisfied because nothing evaluates it. The Layer 2 half was wrong, and the question that surfaced it was a user's:
+"ontoref carries ADRs and modes about its own site, doors, campaigns and CV —
+what use are those to a project that merely adopts ontoref?" The empirical
+answer is: none, and they do not travel — provisioning's spine carries 44 ADRs
+of its own and not one of ours. But the question exposed that the protocol had
+no TYPED answer to "what of me is yours". It had a paragraph in CLAUDE.md (the
+migration-trigger table) doing the job of a `pub` keyword. Two defects followed from that: 1. This ADR located Layer 2 by SNIFFING A PATH (`catalog/domains/`), which is
+ provisioning's spelling generalised too early. ontoref publishes its domain
+ artifacts from `code/domains/` (ADR-012 domain extensions, and `code/` only
+ because ADR-052 split the constellation). lian-build spells it differently
+ again. A protocol check that hard-codes one member's layout is the very
+ confusion this ADR exists to end. Worse, patching the check to also look in
+ `code/domains/` would have BAKED ONTOREF'S CONSTELLATION SHAPE INTO A
+ PROTOCOL CONSTRAINT. 2. The mechanism already existed and had rotted unseen. `manifest.ncl::layers`
+ has always declared "a named region of the repo with visibility rules per
+ mode", and ontoref's own manifest already named a `protocol` layer ("the
+ contract layer that projects implement") beside a `self-description` layer
+ ("ontoref consuming ontoref"). That IS Layer 2 beside Layer 1. Nobody
+ noticed, because nothing checked it — its paths still pointed at the
+ pre-ADR-032 layout (`ontology/`, `.ontology/`), naming directories that had
+ not existed for months. A third meaning of the word "layer" sat in the
+ schema while this ADR worried only about colliding with "level" (ADR-018). So Layer 2 is not discovered, it is DECLARED — on the mechanism that was already
+there. The layer taxonomy stops being prose about where files sit and becomes the
+export axis of an ontoref instance: the `pub` the user asked for, checkable. A project's ontoref instance has THREE distinct layers — but only the first
+two live in the project's own repository: LAYER 1 — Self-management ontoref (about the project itself)
+ paths .ontology/ reflection/ adrs/
+ audience this project's developers and maintainers
+ purpose describe the project to itself — axioms, FSM dimensions,
+ binding decisions, open questions, accepted knowledge
+ presence MANDATORY on every ontoref-onboarded project LAYER 2 — Specialized domain/mode ontoref (the integration surface)
+ paths DECLARED, never sniffed — the paths of any manifest layer whose
+ kind = 'IntegrationSurface, plus manifest.ncl::registry_provides
+ audience OTHER projects that want to integrate this project
+ purpose the contract surface other projects bind to — typed domain
+ artifacts, orchestration mode artifacts, registry-namespace
+ claim
+ presence OPTIONAL but BICONDITIONAL — a project declares an
+ 'IntegrationSurface layer if and only if it declares
+ registry_provides. Half-Layer-2 is a contract violation. LAYER 3 — Caller-side implementations (NOT in this project)
+ paths <caller>/extensions/<this-project>/
+ <caller>/catalog/components/<...>/ (when consuming)
+ <workspace>/infra/<ws>/integrations/
+ audience operators and CI of caller projects
+ presence PER CALLER, NEVER in this project's repo. Cross-references
+ from this project to Layer 3 are explicit pointers, never
+ copy-paste. The three-layer axis is ORTHOGONAL to ADR-018's level hierarchy
+(Base/Domain/Instance). A project at any level may have any combination of
+Layer 1 (always) and Layer 2 (sometimes). Layer 3 is the boundary outward,
+not a property of the project. The 3-layer × 3-level matrix is navigable in
+both axes: 'where in the protocol hierarchy' (level) is independent of
+'where in the project's repo' (layer). Cross-layer references inside a project carry an explicit layer-N tag on
+qa entries. A qa entry whose primary topic is a Layer N concern wears
+the layer-N tag; satellite entries (operational how-to, troubleshooting)
+inherit the layer of their anchor without re-tagging. THE MECHANISM — manifest.ncl::layers CARRIES THE AXIS `layer_type` gains one field, `kind`: 'SelfManagement Layer 1. Never travels.
+ 'IntegrationSurface Layer 2. What a consumer binds to.
+ 'Internal Neither — reached through a released binary or
+ artifact, never imported as source. The DEFAULT,
+ so a manifest that never mentions `kind` keeps
+ validating unchanged. ADDITIVE, BUT ORDERED — and the ordering is not optional. Nickel record contracts
+are CLOSED: a manifest that declares `kind` against a data-dir schema predating the
+field fails outright with `extra field `kind``. So the field costs nothing to IGNORE
+and requires a reinstall to USE. Reinstall precedes tagging; migration 0046 says so
+first, and it says so because the first attempt at tagging the two consumer projects
+failed exactly this way. ontoref itself did not catch it, because ontoref's manifest
+imports the schema SOURCE by relative path (`../../code/ontology/defaults/manifest.ncl`)
+while every consumer imports the INSTALLED copy — the self-hosting project is the one
+project that cannot feel this class of break. Worth remembering the next time an
+"additive" schema change is asserted rather than tested on a consumer. Layer 3 has no `kind` BY CONSTRUCTION: it has no region in this repo. A project
+that finds itself wanting to tag one has put caller cabling in its own tree. The consequence is that "what of me is yours" stops being prose. It is a query: the union of the paths of every layer with kind = 'IntegrationSurface and everything else — the site, the doors, the campaigns, the CV modes, the
+constellation instance — is 'SelfManagement or 'Internal, and is nobody's
+business but this project's. That is the whole content of the answer to
+"of what use are ontoref's own site ADRs to provisioning?": none, and the
+manifest now says so in a form a validator can read. THE RULING ON `constellation` — THE CASE THAT DECIDED THE AXIS `constellation` was the test case, because it is the one artifact of ontoref's
+that has demonstrably reached another project. It is not one thing but three,
+and they split exactly along the layers: reflection/schemas/constellation.ncl → LAYER 2. Protocol.
+ The taxonomy ('Primary/'Addon/'Projection), the forge/mirror/sovereign
+ vocabularies, and the cross-field rule that a 'Projection owns no repo and
+ a 'Never member carries no mirror. These are generic. The proof is
+ empirical, not argued: provisioning BOUND to this schema, EXTENDED it
+ (a `distribution`/'OCI axis and a `workspaces` block) and ADR'd it (its own
+ adr-052). A second project binding and extending an artifact is what an
+ integration surface IS. It stays. ontology/constellation.ncl → LAYER 1. Self.
+ WHICH members ontoref has (code, outreach, vault, desktop) and where they
+ push. Per project. Provisioning has its own, listing its own. ontoref's forge POLICY → LAYER 1 SITTING INSIDE LAYER 2.
+ "Forgejo always canonical · GitHub always a one-way mirror · vault never
+ mirrored" is ontoref's own constellation policy, and it was written into
+ the comments of the shared schema and into the error message of its
+ contract. This is the ONLY ontoref-self content that has ever reached a
+ consumer — and it did: provisioning's copy repeats the `vault` rule
+ although vault is not a member of provisioning. It comes out of the schema. The schema is protocol. What leaves it is the policy, not the contract. And note
+HOW it travelled: provisioning did not import the schema, it COPIED it — 118
+lines here, 164 there, the comments already diverged. That is the drift this ADR
+predicted in its own context, arriving on schedule, and it is now an anti-pattern
+with a name (`layer-2-adopted-by-copy`). A type cannot stop a comment from lying. That is precisely why the export axis
+has to be a FIELD and not a paragraph. ADR-001 · ADR-012 · ADR-016 · ADR-018 · ADR-032 · ADR-052 · ADR-062 · ADR-070Context
+
+Decision
+
+Constraints
+
+
+
+Alternatives considered
+
+
+
+Anti-patterns
+
+
+
+Related ADRs
+
+Constraints
-
+Alternatives considered
diff --git a/site/site/content/adr/en/accepted/adr-070.md b/site/site/content/adr/en/accepted/adr-070.md
index e16944c..7d06b2f 100644
--- a/site/site/content/adr/en/accepted/adr-070.md
+++ b/site/site/content/adr/en/accepted/adr-070.md
@@ -74,12 +74,21 @@ pipeline is gated on them.
Consequently, the site level gets the overlay slot the assembler never gave it: - site/templates-overlay/ is the declared source for template work owned by THIS level. - Anything edited straight into the assembled output is, by definition, unwitnessed.
+ site/_htmx/ is the declared source for work owned by THIS level — templates in + site/_htmx/templates/, htmx-runtime overrides in site/_htmx/assets/ — and the `_` + prefix says what site/_public already says here: this is the tree you edit, its + unprefixed twin is the tree that gets generated. Anything edited straight into the + assembled output is, by definition, unwitnessed. +And the rule is ONE rule, so it governs both delivery trees and both are assembled by + ONE script (scripts/build/assemble-layers.nu): a file present in a higher layer wins, + a file absent from it is inherited from the layer below — the exact cascade the + implementation already applies to the framework. htmx-assets/ had only the framework + layer, which meant an ext/* override shipped by website-htmx-rustelo could never reach + the site; the asymmetry was invisible precisely because nothing had tried to use it.
THE GATES DECIDE, AND THEY RUN BEFORE THE DAMAGE. Three exist and pass today: `adr-check` (the spine holds no ADR the site never published), `templates-check` (the assembled tree is exactly reproducible from its declared sources — any drift @@ -95,7 +104,7 @@ pipeline is gated on them.
Writing about software in Spanish has no settled convention, and the project had been resolving the +question one file at a time. The first attempt, `anglicisms.ncl`, was a flat deny-list: ~50 English +words, a Spanish replacement, a severity, and a gate that failed on a Hard hit.
+It was the right instinct with the wrong shape, and it was wrong in a way that MEASURES.
+WHAT WAS MEASURED (2026-07-12, across the glossary and the whole positioning layer, code spans +stripped, word boundaries honoured):
+2 concepts DIVERGED BETWEEN THE TWO SURFACES + `reflection` glossary kept the English (4×) · positioning wrote "reflexión" (3×) + `gate` glossary kept the English (3×) · positioning wrote "compuertas"
+5 concepts were INCOHERENT INSIDE A SINGLE FILE + the glossary — the document whose ONLY job is to fix the vocabulary — wrote both `schema` and + «esquema», both `drift` and «deriva»; the positioning layer wrote both `witness` and «testigo», + both `runtime` and «tiempo de ejecución».
+The headline is not that two documents disagreed. It is that EACH DOCUMENT DISAGREED WITH ITSELF. +The arbiter did not agree with itself — not through carelessness, but because the decision had +NOWHERE TO LIVE. A rendering was a fact about a string in a file, not a property of the concept.
+Six vocabularies were live: the glossary, the positioning layer, two sets of `.ftl` (one of them +DEAD — `content/i18n/build-tools/`, which nothing reads), a hand-rolled Nushell VOCAB table +(`expediente-vocab.nu`), and seven generators with Spanish strings baked in. None owned, none +witnessing the others. This is the ADR-070 pathology — declared twice, no witness — one layer down, +and it is the third clone of the same pathogen after `deriva-hardcoded` and `espejo-que-revertía`.
+AND THE COLLISION NOBODY COULD SEE. The glossary renders `door` → "puerta" (the funnel entry, +ADR-064). Its OWN Spanish definition of `testigo-verificado` was rendering `gate` → "puerta" as +well. Two distinct concepts had already collapsed into one Spanish word, inside the document written +to prevent exactly that. Each decision is defensible ALONE, which is why reading never catches it.
+THE FIRST ATTEMPT AT A FIX REPRODUCED THE DISEASE, LIVE. The surface-typed lexicon that preceded this +ADR (a four-class deny-list with a per-surface axis) was a SEVENTH vocabulary, built parallel to the +six without seeing them. And it misfiled `reflection` as untranslatable — because it collided with +the `reflection/` directory — while correctly rendering `schema` as «esquema» in the same file, on +the same day, under a rule its own author had just written. Nothing could contradict it, so it +convinced itself. The agent had the full ontology loaded. That is what a vocabulary without a +witness produces, and it is the most useful evidence this ADR has.
+ +A concept's rendering is DECLARED PER LANGUAGE, in one registry, under contracts that run across +every surface that speaks. And the gate DECLARES WHAT IT CANNOT CHECK.
+STRUCTURE
+reflection/schemas/rendering.ncl how a concept renders in a language + the seven cross-contracts + reflection/schemas/term.ncl gains an OPTIONAL `policy` — a concept carries its own decision + reflection/schemas/lexicon.ncl LANGUAGES, vocabulary that is not a concept, coverage + ontology/glossary.ncl concepts WITH a definition (protocol surface; ADR-063 gates it) + ontology/lexicon.ncl vocabulary WITHOUT one (`drift`, `flag` — nothing to define) + ontology/registry.ncl THE UNION — the only place the contracts run, and the only + thing a consumer may read
+The two registries are not a compromise: forcing a definition onto `flag` would be ceremony, and +deleting `glossary.ncl` would break the protocol seed and ADR-063's Hard constraints. What makes the +split SAFE is that the union is contracted as ONE namespace. A consumer reading half a registry +believes half a policy.
+TWO ROADS TO KEEPING A SOURCE FORM. CONFLATING THEM IS THE BUG.
+'Identifier it appears verbatim in a command, an API, a `kind:`, an error message. + Translating breaks the REFERENCE — the reader cannot get from the text to + the tool. Mechanical, true in EVERY language. (`commit`, `ADR`, `NCL`)
+'NoFaithfulRendering no word in THIS language carries the concept without displacing it. + Translating breaks the CONCEPT. A fact about ONE language, possibly false in + the next. (`gate`)
+Same verdict, incompatible reasons, and the contract enforces the difference: 'Keep justified by +'FaithfulRendering is REFUSED — if a faithful word exists, use it. That single rule is what corrects +`reflection` → «reflexión», and it is the rule the previous design could not express.
+For `gate`, the note must say what each candidate LOSES, because each looks reasonable alone: +«compuerta» sends it to ELECTRONICS · «puerta» is already `door`'s · «umbral» loses the typed policy +· «punto de control» loses that it BLOCKS · «criterio de paso» is honest and is a periphrasis.
+A REJECTED RENDERING IS NOT ONLY A CALQUE.
+'Calque a source verb forced into the target's conjugation ("mergear"). It grates, so it is + found. The defect is the MORPHOLOGY, not the loanword: a borrowed noun is inert, a + borrowed verb must pick a conjugation and drags its register in. Hence the repair — + LIGHT VERB + KEPT NOUN, "hacer un commit" — carried on the denial itself, because a + noun cannot repair a verb. + 'FalseFriend library → «librería» (a SHOP). Reads perfectly. Is wrong. Has largely won. THESE ARE + THE DANGEROUS ONES, because nobody hunts for a mistake that sounds right. + 'Displaces a true cognate borrowed from ANOTHER DISCIPLINE («compuerta», from electronics). + 'Regional correct elsewhere, rejected here for REGISTER («corrida»). A choice, and it says so.
+Each denial carries its reason IN THE DATA, or someone reverts it in good faith in six months.
+RENDERINGS ARE INJECTIVE, PER LANGUAGE. Two concepts may not render to the same word. This is the +contract a human found and no validator would have, and it fires on the real data today.
+THE LANGUAGE AXIS IS A GUARANTEE. `languages` is declared ONCE — a fact about the project, not the +website; rustelo's `site.ncl` becomes a consumer, not a second truth. Adding one FAILS THE BUILD +until every concept answers for it and every surface declares its content. A half-added language is +not a pending translation; it is a site quietly serving the wrong one — which four `domains/es/` door +pages did for months, carrying Spanish frontmatter over English bodies, because a surface had no +language and nothing could ask.
+THE GATE DECLARES WHAT IT CANNOT CHECK — and this is half the decision, not a footnote.
+On its first run the gate reported 52 Hard findings. FORTY-THREE WERE FALSE, every one of them the +checker asserting what a regex cannot establish:
+· "puerta" is denied for `gate` and is the RIGHT rendering of `door`. Injectivity guarantees a form + is the PREFERRED rendering of at most ONE concept; it says nothing about a form preferred by one + and denied by another — and that case is legal and common. It is what an AVOIDED collision looks + like from the other side. → `gateable = false` + · "build system", "un fork", "el deploy" are BORROWED COMPOUNDS, entering the language as units. + Demanding «compilar» inside «cada build system usa DAGs» is nonsense. → `gate_source = false` + · `tags = ["witness", "adr-070"]` is a routing key, not prose. Renaming it breaks the filter. + · a verbatim quotation in the source language is a CITATION. You do not translate a quote, and no + checker can tell one from the author's prose — on the page they are identical. → `<!-- lang:en -->`
+The rule is still EMITTED — the glossary and the public note print it, because a human writing a +sentence HAS the context a regex lacks — but no surface fails on it. This is not weakening the +policy. It is the policy refusing to claim knowledge it does not have. A gate that cries wolf is a +gate people learn to skip, and a skipped gate is the failure this entire ADR is about.
+THE POLICY EXPLAINS ITSELF WHERE IT IS READ. The Spanish glossary and a public "Nota sobre el +lenguaje" are GENERATED from the same NCL the gate reads; `--check` fails on drift. A rule enforced +by a machine and justified nowhere is a rule people comply with and resent. This is not a legal +disclaimer: the right analogy is the licence or the code of conduct — normative, published, +versioned — and unlike either, executed by CI.
+ +ADR-070 · ADR-066 · ADR-064 · ADR-063 · ADR-035
diff --git a/site/site/content/adr/en/accepted/adr-071.ncl b/site/site/content/adr/en/accepted/adr-071.ncl new file mode 100644 index 0000000..ce336d8 --- /dev/null +++ b/site/site/content/adr/en/accepted/adr-071.ncl @@ -0,0 +1,12 @@ +{ + id = "adr-071", + title = "A concept's rendering is declared per language, and the gate declares what it cannot check", + slug = "071", + excerpt = "", + tags = ["adr", "accepted"], + page_route = "/adr/071", + graph = { + implements = [], + related_to = ["adr-070", "adr-066", "adr-064", "adr-063", "adr-035"], + }, +} diff --git a/site/site/content/adr/en/accepted/adr-072.md b/site/site/content/adr/en/accepted/adr-072.md new file mode 100644 index 0000000..54d3ad1 --- /dev/null +++ b/site/site/content/adr/en/accepted/adr-072.md @@ -0,0 +1,168 @@ +--- +id: "adr-072" +title: "A check declares its coverage, a mechanism declares its extent, and the witness carries the extent" +slug: "072" +subtitle: "Accepted" +excerpt: "A witness proves THAT a check ran and what it returned. ADR-050 says so explicitly, and says it as" +author: "ontoref" +date: "2026-07-13" +published: true +featured: false +category: "accepted" +tags: ["adr-072", "adr", "accepted"] +css_class: "category-adr" +--- +A witness proves THAT a check ran and what it returned. ADR-050 says so explicitly, and says it as +a limitation: structure, never truthfulness.
+There is a second limitation it does not say, and it is the one that bites.
+A WITNESS DOES NOT PROVE THAT THE CHECK LOOKED AT EVERYTHING IT SHOULD HAVE.
+Coverage — which files, which formats, which levels, which languages a check actually reads — is +UNWITNESSED. So a check can go green over a shrinking fraction of reality and its receipt stays +perfectly valid. It does not fail. It does not warn. It looks where it always looked, finds nothing +wrong there, and signs.
+AND THE COVERAGE EXPIRES PRECISELY WHEN YOU IMPROVE THE MECHANISM. That is the finding, and it is +not a metaphor. In one session, on one witness (`ore rustelo routes`), THREE TIMES:
+· the SITE gained ownership of its templates (adr-070's overlay). The witness read only the + framework's `crates/pages_htmx/templates/` and reported a site-owned page as broken. + · the CONSUMER gained ownership of its routes (`merge_site_routes`). The witness read only the + image's `routes.ncl` — blind to the very mechanism that had just been built to enable it. It + counted 26 routes where there were 28 and would have declared a live page non-existent. + · those routes moved TOML → NCL, TO PUT THEM UNDER CONTRACT. The witness kept reading `.toml`. + Blind again, to the same mechanism, one step later.
+Warnings emitted across all three: ZERO.
+Two cousins in the same session: a check that returned an EMPTY LIST when its source failed to +export (green because it could not look), and a check that measured "does this route have a title?" +instead of "does this route have a body renderer?" — satisfiable by adding fourteen strings while +304 declared Fluent keys stayed unserved on every request.
+And a fourth, which is the one that settles the argument. The tool that PUBLISHES the case file +about this pathology reported `8 case(s) reproduce from their .ncl — no hand-edited render` while +five cases existed in Spanish and three in English. GREEN OVER AN INCOMPLETE BILINGUAL SET. It could +not say otherwise: it only ever verified what EXISTED, never what SHOULD exist. The expediente about +the blind witness was published by a blind witness.
+AND A FIFTH, ON THE SAME TOOL, AN HOUR LATER, which names the axis the other four did not. The case +was generated, validated, activated and indexed. Its article answered 200. Its entry was in the +index. AND IT WAS NOT IN THE GRID. Not pagination — the page size was twelve and there were five. +`content_processor` writes the indexes to `site/r/`; THE SERVER READS `site/public/r/`, and a +separate recipe mirrors one into the other. It had not run. The two trees said five and three, dated +a day apart, and every check on the page walked straight past it BECAUSE THEY ALL ASKED "DOES THE +FILE EXIST?" OF THE TREE NOBODY SERVES. This is expediente 69/58 — the mirror that reverted its own +work — on a path its own cure never covered.
+The axis, then, is not a format and not a language. It is WHERE. And it is the axis nobody thinks to +declare, because a file that exists is assumed to exist — when existence is not a property of a +file, it is a property of THE TREE THAT IS READ.
+THE OBVIOUS FIX IS THE WRONG ONE, AND THE EVIDENCE IS DECISIVE. "Write it in the howto." "Remember +to update the check." That is advisory prose, and this protocol has spent three case files proving +advisory prose does not bind — not a human under deadline, and not a probabilistic actor at all. +The proof here is total: THE AGENT THAT BROKE THE RULE THREE TIMES HAD AUTHORED IT THAT SAME +AFTERNOON, in adr-071, under its own name — `gate-green-over-nothing`. Writing it down was not +enough. Nothing that depends on remembering is enough.
+AND THE PRIMITIVE ALREADY EXISTS, BUILT TWICE, UNRECOGNISED. `CoversDeclaredLanguages` (adr-071) +does exactly the right thing on one axis: adding a language to the registry FAILS THE BUILD until +all 45 concepts answer for it. A half-added language cannot ship. `CoversEverySurfaceAndLanguage` +does the same for surfaces. Both were written for a concrete purpose and both turn out to be the +special case of one general rule that the protocol has never named.
+ +COVERAGE BECOMES PART OF THE WITNESSED SURFACE.
+Three declarations and one gate:
+1. A MECHANISM DECLARES ITS EXTENT — the axes over which it exists. Formats (`.ncl`, `.toml`), + levels (framework / site overlay), languages (`en`, `es`), locations (image / consumer), + surfaces, and — the axis that had to be learned the hard way — THE TREE THAT IS READ. The + extent is DATA, in the mechanism's own declaration, not folklore in a script.
+2. A CHECK DECLARES ITS COVERAGE — which of those axes it actually reads. This already exists in + one place (`coverage` in `ontology/lexicon.ncl`) and it was not enough on its own, which is + the instructive part: the coverage declared what the check READ, and there was nothing to + check it against. A coverage declaration with no extent to compare it to is a signed opinion.
+3. A GATE: COVERAGE ⊇ EXTENT, or the build breaks. Not "the check should be updated" — the build + BREAKS. A mechanism that grows an axis its witness does not read is a mechanism whose witness + is unproven, and unproven is not green.
+4. THE WITNESS CARRIES THE EXTENT'S DIGEST. A receipt issued against the old extent is not a + passing receipt against the new one. It stops being GREEN and becomes UNPROVEN — a different + word, and today there was no such word. This is what makes the expiry automatic rather than + remembered: the witness invalidates itself when the world it witnessed changes shape.
+THE INVERSION, WHICH IS THE WHOLE DECISION:
+before → improving the mechanism BLINDS its witness, in silence + after → improving the mechanism BREAKS its witness, loudly
+That is what one wants from a witness. A check that cannot notice the world changed is not a check; +it is a certificate of a world that no longer exists, and it signs in green.
+AND THE PUBLICATION AXIS HAS A RULE OF ITS OWN, BECAUSE IT IS THE ONE THAT LOOKS ALREADY SOLVED:
+A CHECK VERIFIES THE TREE THAT IS SERVED, NEVER THE TREE THAT IS WRITTEN.
+A canonical tree and a served tree that disagree is A PUBLICATION THAT DID NOT HAPPEN, and the +disagreement is invisible to every existence check ever written, because they all ask "does the file +exist?" — a question with a true answer in the tree nobody reads. The artifact answers 200, sits in +the index, and is absent from the page. So the cheapest possible witness is also the one that was +missing: COMPARE THE TWO TREES, and fail when the served one is short.
+AND THE DISK IS ITSELF A PROXY, WHICH IS WHY THE CHAIN DOES NOT END THERE. Comparing two trees on +disk closes a real gap, and not the last one: THE SERVER READS ITS INDEX INTO MEMORY AT STARTUP. +After the mirror ran and both trees said five, the grid still showed four, and only a restart fixed +it. A gate that stops at the filesystem certifies a publication no reader can see.
+THE PAGE IS THE PUBLICATION. THE WITNESS AT THE END OF THE CHAIN ASKS: IS THE CASE ON THE PAGE?
+And it asks it the expensive way, because the cheap way is what failed. IT COUNTS THE CARD, NOT THE +STRING: a case's id also lives in the page's nav, its meta tags and two JSON blobs — `testigo-ciego` +occurs FOUR TIMES before the first card ever opens — so a page-wide grep reports a case as present +while its card is missing. That grep is not hypothetical: it is the verification that reported "5 +cards" over a grid rendering four. And ZERO CARDS IS A FINDING, NEVER AN ANSWER: a page that yields +no card cannot be distinguished from a card the check no longer knows how to read, and both are +findings.
+The two questions are different and the chain must keep them apart. "Is the disk right?" is +answerable offline, always. "Is the site right?" REQUIRES A SITE — and where there is none the +answer is not green, it is `I DID NOT LOOK`. So the offline aggregate now ends by saying what it is +NOT: six gates green ON DISK is not proof of publication.
+AND THE WITNESS ITSELF IS A MECHANISM, SO IT TOO GETS THE TREATMENT. To recognise a card it must +know the framework's markup — which is a coupling, and therefore an axis, and therefore the same +defect one level up: re-skin the grid and the recogniser silently matches nothing. A witness that +can only report "I found no cards" is reporting A MYSTERY, and a mystery is read as an empty grid, +which is read as health. That is this ADR's own pathology, wearing the ADR's own uniform.
+So the marker is DECLARED (`card`, in the surface file — never a literal in the checker), and the +page is read TWICE, by two readings that adjudicate each other:
+the MARKER reading knows the card class. Precise, and blinded by a re-skin. + the STRUCTURAL reading knows no class at all — it deletes what is not content (script, nav, + header, footer) and asks which case links survive. It CANNOT be re-skinned into silence, + because it never knew the skin.
+When the marker finds nothing and the structure finds cases, THE PAGE IS FINE AND THE WITNESS IS +STALE — and now it can say exactly that, name the marker, and name the file that repairs it. The +sentence "I do not recognise what I am watching" is the third thing a check could not say, and it +is the one a check needs most, because it is the only one that indicts the check itself.
+WHAT A CHECK MUST BE ABLE TO SAY, AND COULD NOT. Three sentences, and the protocol had a word for +none of them:
+"I did not look." — a source that fails to load is a FINDING, not an empty list. One + check returned zero findings BECAUSE IT COULD NOT LOOK, and that + is the worst possible green. + "I cannot know this." — adr-071's `gateable` / `gate_source`. A rule a regex cannot + falsify must be marked uncheckable IN THE DATA, or the check + cries wolf and gets skipped. + "I am no longer complete." — THIS ADR. The extent grew and my coverage did not. + "I no longer recognise — THIS ADR, turned on the witness. The thing I watch was re-skinned + what I am watching." and I match nothing in it. Without this sentence the check reports + "no cards found", which is a MYSTERY — and a mystery is read as an + empty grid, and an empty grid is read as health. It is the only one + of the four that indicts the CHECK rather than the world.
+FALSIFY AGAINST THE NEW CAPABILITY, NOT THE OLD ONE. The gate above makes forgetting impossible; it +does not make the check CORRECT. Every one of the three blindings was caught the same way — by +falsifying: injecting `fr` into the languages, injecting `gate → puerta` beside `door → puerta`, +running the gate against the page just created. Where the falsification was run against the OLD +capability, the check stayed green and lied. So the constraint is not "the check passes" but "the +check has been SEEN TO REFUSE the new capability's failure mode".
+AND A CHECK MEASURES THE CAPABILITY, NOT ITS PROXY. "Has a title key" is a proxy for "renders its +content", and it is satisfiable by adding fourteen strings while the page stays empty. A gate that +can be turned green without fixing anything is a gate that WILL be, and that is not a hypothesis: +it is what nearly happened, and the word used at the time was "trivial".
+ +ADR-071 · ADR-070 · ADR-066 · ADR-050
diff --git a/site/site/content/adr/en/accepted/adr-072.ncl b/site/site/content/adr/en/accepted/adr-072.ncl new file mode 100644 index 0000000..b10eec2 --- /dev/null +++ b/site/site/content/adr/en/accepted/adr-072.ncl @@ -0,0 +1,12 @@ +{ + id = "adr-072", + title = "A check declares its coverage, a mechanism declares its extent, and the witness carries the extent", + slug = "072", + excerpt = "", + tags = ["adr", "accepted"], + page_route = "/adr/072", + graph = { + implements = [], + related_to = ["adr-071", "adr-070", "adr-066", "adr-050"], + }, +} diff --git a/site/site/content/adr/en/proposed/adr-020.md b/site/site/content/adr/en/proposed/adr-020.md deleted file mode 100644 index b19b19d..0000000 --- a/site/site/content/adr/en/proposed/adr-020.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -id: "adr-020" -title: "Three-Layer Model for Project Ontoref Instances" -slug: "020" -subtitle: "Proposed" -excerpt: "Multiple projects now adopt the ontoref protocol (lian-build is the explicit" -author: "ontoref" -date: "2026-05-03" -published: true -featured: false -category: "proposed" -tags: ["adr-020", "adr", "proposed"] -css_class: "category-adr" ---- -Multiple projects now adopt the ontoref protocol (lian-build is the explicit -external case under bl-002 / bl-008). Field experience across ontoref + -lian-build + provisioning shows that an ontoref-onboarded project's -repository carries TWO distinct ontoref-shaped layers, while a third layer -exists outside the project (in caller repositories). Without codification, -adopters re-derive the model per project, mix layers accidentally, and lose -boundaries silently:
-- Layer 3 content (caller-side cabling) drifts into a project's qa.ncl, - making the FAQ a how-to-deploy guide for one specific caller. - - Layer 2 schemas live under reflection/ as 'project notes', drifting - from the binary because they're not on the contract path. - - Layer 1 architectural rationale ends up in catalog/domains/<id>/ - contract.ncl, where consumers expecting a typed shape get prose.
-The model has been observed (lian-build/reflection/qa.ncl::lian-build-what- -and-why), described (ontoref/reflection/qa.ncl::ontoref-three-layer-model), -and queued for codification (bl-009). This ADR commits the model with -machine-checkable constraints. Acceptance is gated on the constraints -running clean across the existing ontoref-onboarded projects (ontoref -itself, lian-build, provisioning).
- -A project's ontoref instance has THREE distinct layers — but only the first -two live in the project's own repository:
-LAYER 1 — Self-management ontoref (about the project itself) - paths .ontology/ reflection/ adrs/ - audience this project's developers and maintainers - purpose describe the project to itself — axioms, FSM dimensions, - binding decisions, open questions, accepted knowledge - presence MANDATORY on every ontoref-onboarded project
-LAYER 2 — Specialized domain/mode ontoref (the integration surface) - paths schemas/ catalog/{domains,modes}/ - manifest.ncl::registry_provides - audience OTHER projects that want to integrate this project - purpose the contract surface other projects bind to — typed domain - artifacts, orchestration mode artifacts, registry-namespace - claim - presence OPTIONAL but BICONDITIONAL — a project either has all of - {schemas/, catalog/, registry_provides} or none. Half-Layer-2 - is a contract violation.
-LAYER 3 — Caller-side implementations (NOT in this project) - paths <caller>/extensions/<this-project>/ - <caller>/catalog/components/<...>/ (when consuming) - <workspace>/infra/<ws>/integrations/ - audience operators and CI of caller projects - presence PER CALLER, NEVER in this project's repo. Cross-references - from this project to Layer 3 are explicit pointers, never - copy-paste.
-The three-layer axis is ORTHOGONAL to ADR-018's level hierarchy -(Base/Domain/Instance). A project at any level may have any combination of -Layer 1 (always) and Layer 2 (sometimes). Layer 3 is the boundary outward, -not a property of the project. The 3-layer × 3-level matrix is navigable in -both axes: 'where in the protocol hierarchy' (level) is independent of -'where in the project's repo' (layer).
-Cross-layer references inside a project carry an explicit layer-N tag on -qa entries. A qa entry whose primary topic is a Layer N concern wears -the layer-N tag; satellite entries (operational how-to, troubleshooting) -inherit the layer of their anchor without re-tagging.
- -
-
-
-
-
-
-
-
-GET /notifications/pending?token=X&project=Y; bloquea el commit git hasta que todo es reconocidoPOST /notifications/ack; notificaciones custom vía POST /{slug}/notifications/emitpre_commit — el hook pre-commit hace POLL en GET /notifications/pending?token=X&project=Y; bloquea el commit git hasta que todo es reconocidodrift — deriva de esquema detectada entre codebase y ontologíaontology_drift — emitido por el observador pasivo con conteos missing/stale/drift/broken tras 15s debouncePOST /notifications/ack; notificaciones custom vía POST /{slug}/notifications/emitPOST /sessions; la CLI inyecta ONTOREF_TOKEN como Bearer automáticamente. Nunca cambia el protocolo — acelera y comparte el acceso a él. Configurado via ~/.config/ontoref/config.ncl (Nickel, type-checked); edición interactiva con ontoref config-edit. Iniciado via NCL pipe bootstrap: ontoref-daemon-boot.
-ontoref-mcp-knowledge-desc = --db y --db-url ws://...--db: respaldado por DashMap en memoria, solo durante el proceso--db-namespace; credenciales vía --db-username/--db-password--db y --db-url ws://...--db: respaldado por DashMap en memoria, solo durante el proceso--db-namespace; credenciales vía --db-username/--db-password.ontology/ separa tres concerns ortogonales: core.ncl (lo que ES) · state.ncl (dónde ESTAMOS vs queremos estar) · gate.ncl (cuándo LISTO para cruzar una frontera)reflection/ lee los tres y responde consultas de autoconocimiento — un agente entiende el proyecto sin leer código, solo consultando el grafo declarativopre_commit, drift, ontology_drift bloquean hasta ser reconocidasjpl validate "aceptar oferta" → invariants_at_risk, aristas relevantes, veredicto.ontoref/config.nclontology_drift con conteos de missing/stale/drift/broken.ontoref/config.nclontology_drift con conteos de missing/stale/drift/brokenpre_commit, drift y ontology_drift. Confirma, descarta o emite notificaciones personalizadas con botones de acción.
+ontoref-ui-backlog-title = Cartera de pendientes
ontoref-ui-backlog-desc = Elementos de trabajo filtrables por estado con operaciones de añadir y actualizar.
ontoref-ui-qa-title = Q&A
ontoref-ui-qa-desc = Almacén de conocimiento hidratado por servidor desde reflection/qa.ncl. Añade, edita y elimina entradas — persistidas como NCL tipado.
@@ -109,17 +109,17 @@ ontoref-ui-modes-title = Modos
ontoref-ui-modes-desc = Lista de modos de reflexión de reflection/modes/ — nombre, descripción y contrato DAG completo por modo.
ontoref-ui-compose-title = Compose
ontoref-ui-compose-desc = Formularios de modos interactivos con compartición de sesión en vivo para flujos multi-actor.
-ontoref-ui-dashboard-desc = Salud del proyecto, estado de drift, resumen de actores y notificaciones pendientes de un vistazo.
+ontoref-ui-dashboard-desc = Salud del proyecto, estado de deriva, resumen de actores y notificaciones pendientes de un vistazo.
ontoref-mcp-core-title = Core
-ontoref-mcp-query-desc = search, get_node, list_adrs, get_adr, list_modes, get_mode, constraints — recorrido completo del DAG.
+ontoref-mcp-query-desc = search, get_node, list_adrs, get_adr, list_modes, get_mode, constraints — recorrido completo del DAG.
ontoref-crate-ontology-title = ontoref-ontology
-ontoref-crate-ontology-desc = Carga ficheros .ontology/ NCL como structs Rust tipados. Recorrido de grafo (callers, callees, impact queries). Extracción de invariantes y validación de constraints. Sin dependencias de stratumiops — superficie de adopción mínima.
+ontoref-crate-ontology-desc = Carga ficheros .ontology/ NCL como structs Rust tipados. Recorrido de grafo (callers, callees, impact queries). Extracción de invariantes y validación de restricciones. Sin dependencias de stratumiops — superficie de adopción mínima.
ontoref-crate-reflection-title = ontoref-reflection
ontoref-crate-reflection-desc = Ejecuta modos de reflexión como contratos DAG NCL tipados. Ejecución de pasos con resolución de dependencias. Ciclo de vida ADR de Proposed a Accepted a Superseded. Operaciones de config seal y rollback.
ontoref-crate-nushell-title = Módulos Nushell
ontoref-crate-nushell-desc = store.nu (caché respaldado por SurrealDB con export NCL) · sync.nu (sincronización de código de ontología) · describe.nu (autoconocimiento de proyecto con actor-awareness) · coder.nu (registros de sesión estructurados). 16 módulos en total — uno por dominio operacional.
-ontoref-crate-nickel-title = Schemas Nickel
-ontoref-crate-nickel-desc = Tipos de ontología core: Node, Edge, Pole, AbstractionLevel. Tipos de máquina de estados: Dimension, Transition, Gate, Membrane. Schema ADR: Constraint, Severity, Status, supersession. Schema de reflexión: Mode, Step, OnError, Dependency.
+ontoref-crate-nickel-title = Esquemas Nickel
+ontoref-crate-nickel-desc = Tipos de ontología core: Node, Edge, Pole, AbstractionLevel. Tipos de máquina de estados: Dimension, Transition, Gate, Membrane. Esquema ADR: Constraint, Severity, Status, supersession. Esquema de reflexión: Mode, Step, OnError, Dependency.
ontoref-crate-daemon-title = ontoref-daemon
ontoref-crate-daemon-desc = Registro de actores vía DashMap. Barrera de notificaciones con integración de hook pre-commit. Formularios Compose para despacho de modos compartidos. Persistencia respaldada por SurrealDB como feature opt-in. Feature gate NATS para setups distribuidos.
diff --git a/site/site/i18n/locales/es/pages/rustelo.ftl b/site/site/i18n/locales/es/pages/rustelo.ftl
index 8023083..8cb1f99 100644
--- a/site/site/i18n/locales/es/pages/rustelo.ftl
+++ b/site/site/i18n/locales/es/pages/rustelo.ftl
@@ -46,7 +46,7 @@ rustelo-feat-routing-title = Enrutamiento Agnóstico
rustelo-feat-routing-desc = Rutas definidas en TOML/NCL. Generación en tiempo de build. Sin rutas hardcodeadas. Descubrimiento automático de idiomas.
rustelo-feat-plugins-title = Sistema de Plugins
-rustelo-feat-plugins-desc = Traits ResourceContributor y PageContributor. Registro al inicio, sin overhead en runtime. include_str!() para embedding en tiempo de compilación.
+rustelo-feat-plugins-desc = Traits ResourceContributor y PageContributor. Registro al inicio, sin overhead en tiempo de ejecución. include_str!() para embedding en tiempo de compilación.
rustelo-feat-db-title = Abstracción de BD
rustelo-feat-db-desc = PostgreSQL y SQLite vía SQLx. Verificación de queries en tiempo de compilación. Pool de conexiones async. Migraciones separadas por tipo de base de datos.
@@ -55,14 +55,14 @@ rustelo-feat-email-title = Email y Notificaciones
rustelo-feat-email-desc = Sistema de email multi-proveedor vía Lettre. Emails basados en plantillas con FTL i18n. Notificaciones en tiempo real WebSocket vía tokio-tungstenite.
rustelo-feat-codegen-title = Generación de Código en Build
-rustelo-feat-codegen-desc = Nickel NCL → build.rs → OUT_DIR → include!(). Routes, pages, menus y registro FTL generados en tiempo de compilación. Coste cero en runtime.
+rustelo-feat-codegen-desc = Nickel NCL → build.rs → OUT_DIR → include!(). Routes, pages, menus y registro FTL generados en tiempo de compilación. Coste cero en tiempo de ejecución.
rustelo-feat-features-title = Composición de Features Cargo
rustelo-feat-features-desc = auth, content-db, content-static, email, tls, metrics, crypto. Activa solo lo que necesitas. Compilación por features para targets WASM y nativo.
# Build pipeline
rustelo-pipeline-title = Generación Orientada a Configuración
-rustelo-pipeline-subtitle = Todo generado en tiempo de compilación desde configuración Nickel NCL. Sin overhead en runtime, seguridad de tipos completa.
+rustelo-pipeline-subtitle = Todo generado en tiempo de compilación desde configuración Nickel NCL. Sin overhead en tiempo de ejecución, seguridad de tipos completa.
# Quick start
rustelo-quickstart-title = En Marcha
@@ -74,3 +74,7 @@ rustelo-tech-title = Construido sobre Bases Sólidas
# Bottom CTA
rustelo-cta-title = ¿Listo para construir con Rust?
rustelo-cta-subtitle = Open source · Self-hosted · Zero unsafe · 100% Rust
+
+# SEO (RusteloPage → rustelo).
+rustelo-page-title = Rustelo — Framework Web Full-Stack en Rust
+rustelo-page-description = Plataforma Rust modular y type-safe construida sobre Leptos y Axum. Arquitectura orientada a configuración con enrutamiento agnóstico al idioma, sistema de plugins y compilación dual WASM+nativo.
diff --git a/site/site/i18n/locales/es/pages/services.ftl b/site/site/i18n/locales/es/pages/services.ftl
index ad9de83..d70f826 100644
--- a/site/site/i18n/locales/es/pages/services.ftl
+++ b/site/site/i18n/locales/es/pages/services.ftl
@@ -15,7 +15,7 @@ services-tier2-eyebrow = TIER 2 · OPERACIONES · SOSTIENE EL RUMBO
services-tier2-title = Operaciones y gobernanza, operadas como servicio
services-tier2-desc = El tier 2 es donde cada mutación pasa por una operación tipada y deposita un testigo Ed25519 — el recorrido de los cambios, no solo el estado, queda sostenido y verificable. El protocolo sigue abierto; la superficie atestiguada es lo que se opera o se da soporte por ti.
services-tier2-ops-title = Adopción de la capa de operaciones
-services-tier2-ops-desc = Levantar el tier 2: operaciones de dominio como único camino de mutación del agente, precondiciones tipadas, dispatch y el daemon. El runtime pasa a ser el único sitio donde el estado autoritativo puede cambiar (ADR-024).
+services-tier2-ops-desc = Levantar el tier 2: operaciones de dominio como único camino de mutación del agente, precondiciones tipadas, dispatch y el daemon. El tiempo de ejecución pasa a ser el único sitio donde el estado autoritativo puede cambiar (ADR-024).
services-tier2-audit-title = Traza de auditoría atestiguada
services-tier2-audit-desc = Un DAG de oplog Ed25519, direccionado por contenido y reproducible — un registro a prueba de manipulación que cualquiera verifica contra las claves de actor sin confiar en quien lo produjo (ADR-023/047, vp-004).
services-tier2-validators-title = Validadores y criterios a medida
@@ -62,7 +62,7 @@ services-training-content-desc = Guías escritas y el docsite proyectado (mdBook
# ── Los tres tiers — cuál encaja ────────────────────────────────────────────
services-tiers-title = Qué tier encaja contigo
-services-tiers-desc = La adopción es graduada (ADR-029): entra con un solo fichero NCL y sube solo cuando duela. Nunca eres rehén de un runtime ni de un SaaS.
+services-tiers-desc = La adopción es graduada (ADR-029): entra con un solo fichero NCL y sube solo cuando duela. Nunca eres rehén de un tiempo de ejecución ni de un SaaS.
services-tier0-label = TIER 0 · DECLARATIVO
services-tier0-title = Sostiene su porqué
services-tier0-desc = Una ontología tipada más describe: declaras la razón por la que tu proyecto existe como NCL. El coaching te lleva aquí.
@@ -76,7 +76,7 @@ services-tier2-card-desc = Testigos Ed25519 y determinismo de replay: cada cambi
# ── CTA ─────────────────────────────────────────────────────────────────────
services-cta-title = ¿Por dónde empezar?
services-cta-desc = Dinos tu tier y tu stack — te señalamos el primer paso más pequeño, sea una sesión de coaching o una intervención de tier 2.
-services-cta-primary = Empezar una conversación
-services-cta-primary-url = /contacto
+services-cta-primary = Solicitar servicios
+services-cta-primary-url = /solicitud-trabajo
services-cta-secondary = Ver qué es ontoref
services-cta-secondary-url = /acerca-de
diff --git a/site/site/i18n/locales/es/pages/stratumiops.ftl b/site/site/i18n/locales/es/pages/stratumiops.ftl
index a4211db..ad0397f 100644
--- a/site/site/i18n/locales/es/pages/stratumiops.ftl
+++ b/site/site/i18n/locales/es/pages/stratumiops.ftl
@@ -13,27 +13,27 @@ stratumiops-problem-1-desc = Decisiones en Slack, guias en wikis, patrones en do
stratumiops-problem-2-title = Costos LLM sin Control
stratumiops-problem-2-desc = Sin visibilidad en gasto IA por equipo. Sin limites o controles de presupuesto. Vapora provee presupuestos en tiempo real, fallback automatico a proveedores baratos y routing basado en expertise.
stratumiops-problem-3-title = Configuracion YAML Fragil
-stratumiops-problem-3-desc = Errores de runtime por config sin tipos. Sin validacion antes del deployment. Provisioning usa Nickel con validacion pre-runtime. TypeDialog provee formularios con validacion de contratos.
+stratumiops-problem-3-desc = Errores de tiempo de ejecución por config sin tipos. Sin validacion antes del deployment. Provisioning usa Nickel con validacion pre-tiempo de ejecución. TypeDialog provee formularios con validacion de contratos.
stratumiops-problem-4-title = Criptografia Estatica
stratumiops-problem-4-desc = Sin preparacion para amenazas cuanticas. Bloqueado en una biblioteca cripto. SecretumVault entrega cripto post-cuantico en produccion con ML-KEM-768, ML-DSA-65 y 4 backends enchufables.
stratumiops-problem-5-title = Flujos de Proyecto Caoticos
stratumiops-problem-5-desc = TODOs dispersos, sin fases estructuradas. Sin trazabilidad de cambios de estado. Syntaxis provee orquestacion sistematica de proyectos con 4 interfaces y coordinacion de agentes IA lista para VAPORA.
stratumiops-problem-6-title = Decisiones Sin Memoria
-stratumiops-problem-6-desc = Decisiones arquitectonicas en verbal o en chat. Constraints olvidadas tras cambios de equipo. Ontologia + ADRs proveen invariantes consultables por maquina con constraints hard aplicadas en cada operacion.
-stratumiops-problem-7-title = Drift de Configuracion Invisible
-stratumiops-problem-7-desc = Configs modificadas fuera de cualquier ciclo de revision. Sin trazabilidad que vincule cambio a PR o ADR. Reflection provee perfiles de config sellados con sha256, drift detection, rollback verificado e historia completa.
+stratumiops-problem-6-desc = Decisiones arquitectonicas en verbal o en chat. Restricciones olvidadas tras cambios de equipo. Ontologia + ADRs proveen invariantes consultables por maquina con restricciones hard aplicadas en cada operacion.
+stratumiops-problem-7-title = Deriva de Configuracion Invisible
+stratumiops-problem-7-desc = Configs modificadas fuera de cualquier ciclo de revision. Sin trazabilidad que vincule cambio a PR o ADR. Reflexión provee perfiles de config sellados con sha256, deriva detection, rollback verificado e historia completa.
stratumiops-problem-8-title = Documentacion Muerta
stratumiops-problem-8-desc = Docs escritas una vez, nunca actualizadas. Distintos actores generan distintos formatos sin fuente comun. Kogral + Ontologia genera docs vivas desde el mismo grafo — docs para humanos, contexto para agentes, informes de CI.
# Ontologia, Reflection y ADRs
-stratumiops-ontology-title = Ontologia, Reflection y ADRs
+stratumiops-ontology-title = Ontologia, Reflexión y ADRs
stratumiops-yin-title = Yin — La Capa Formal
stratumiops-yin-subtitle = Lo que debe ser verdad
stratumiops-yin-items = Nickel schemas — correccion estructural en tiempo de definicion
- ADR constraints — "esto nunca puede violarse"
+ Restricciones ADR — "esto nunca puede violarse"
Config seals — estados sellados, verificables con sha256
- Ontology invariants — lo que no puede cambiar sin un nuevo ADR
+ Invariantes de ontología — lo que no puede cambiar sin un nuevo ADR
Hashes matematicos — prueba de que fue sellado y cuando
stratumiops-yang-title = Yang — La Capa Operacional
@@ -50,10 +50,10 @@ stratumiops-tension-thesis = El sistema vive en la coexistencia.
stratumiops-layer-decl-label = Capa Declarativa — Nickel
stratumiops-layer-decl-items = .ontology/ · adrs/ · reflection/schemas/ · reflection/configs/
-stratumiops-layer-decl-desc = Tipos fuertes, contratos, enums. Falla en definicion, no en runtime.
+stratumiops-layer-decl-desc = Tipos fuertes, contratos, enums. Falla en definicion, no en tiempo de ejecución.
stratumiops-layer-op-label = Capa Operacional — Nushell
-stratumiops-layer-op-items = adr · register · config · backlog · forms · prereqs
+stratumiops-layer-op-items = adr · register · config · cartera de pendientes · forms · prereqs
stratumiops-layer-op-desc = Pipelines tipadas sobre datos estructurados. No streams de texto.
stratumiops-layer-entry-label = Punto de Entrada — Bash a Nu
@@ -66,7 +66,7 @@ stratumiops-layer-graph-desc = El sistema sabe que sabe. Actor-agnostic. Machine
stratumiops-layer-seal-label = Estados Sellados — Config + Historia
stratumiops-layer-seal-items = perfiles · sellos sha256 · audit trail · rollback
-stratumiops-layer-seal-desc = Inmutabilidad verificable. Drift detection. Trazabilidad completa ADR/PR/bug.
+stratumiops-layer-seal-desc = Inmutabilidad verificable. Deriva detection. Trazabilidad completa ADR/PR/bug.
# Diagramas de Arquitectura
stratumiops-arch-title = Arquitectura
@@ -101,7 +101,7 @@ stratumiops-stratum-embeddings-role = Proveedores de embeddings + VectorStore
stratumiops-stratum-nats-role = Consumidor JetStream + auth NKey
stratumiops-stratum-ncl-role = Resolutor OCI a Nickel local
stratumiops-stratum-ontology-role = Grafo de ontologia, invariantes, gates, dimensiones
-stratumiops-stratum-reflection-role = Ciclo de vida ADR, config seals, backlog, modos
+stratumiops-stratum-reflection-role = Ciclo de vida ADR, config seals, cartera de pendientes, modos
stratumiops-stratum-dispatcher-role = Dispatcher modular con actor-awareness
stratumiops-stratum-plugins-role = nickel-export, tera-render, nats pub
diff --git a/site/site/i18n/locales/es/pages/typedialog.ftl b/site/site/i18n/locales/es/pages/typedialog.ftl
index 57138bd..9288186 100644
--- a/site/site/i18n/locales/es/pages/typedialog.ftl
+++ b/site/site/i18n/locales/es/pages/typedialog.ftl
@@ -2,14 +2,14 @@
# Hero
typedialog-badge = 3.818 Tests | 6 Backends | 4 Proveedores LLM
-typedialog-tagline = Dialogos tipados para inputs, formularios y schemas en los que puedes confiar
+typedialog-tagline = Dialogos tipados para inputs, formularios y esquemas en los que puedes confiar
typedialog-page-title = Crea Dialogos Interactivos con Type-Safety
-typedialog-page-subtitle = Formularios declarativos con definiciones Nickel/TOML, 6 backends (CLI, TUI, Web, AI, Agent, Prov-Gen) y validacion type-safe. Desde prompts interactivos hasta generacion de infraestructura. Un schema. Toda superficie.
+typedialog-page-subtitle = Formularios declarativos con definiciones Nickel/TOML, 6 backends (CLI, TUI, Web, AI, Agent, Prov-Gen) y validacion type-safe. Desde prompts interactivos hasta generacion de infraestructura. Un esquema. Toda superficie.
# Problems
typedialog-problems-title = Lo que TypeDialog Resuelve
typedialog-problem-1-title = Codigo Por-Backend
-typedialog-problem-1-desc = Una definicion Nickel o TOML controla CLI, TUI, Web y AI. Sin codigo de formularios por backend. El schema es la fuente unica de verdad.
+typedialog-problem-1-desc = Una definicion Nickel o TOML controla CLI, TUI, Web y AI. Sin codigo de formularios por backend. El esquema es la fuente unica de verdad.
typedialog-problem-2-title = Validacion Fail-Open
typedialog-problem-2-desc = Los contratos Nickel validan cada predicado en tiempo de carga. Predicados desconocidos causan fallos duros, no passes silenciosos. Sin reimplementacion paralela en Rust.
typedialog-problem-3-title = I/O Oculto en Ejecucion
@@ -24,7 +24,7 @@ typedialog-how-forms-desc = Define formularios en Nickel (.ncl) o TOML (.toml).
typedialog-how-execution-title = Ejecucion en Tres Fases
typedialog-how-execution-desc = Fase 1: Ejecutar campos selector que controlan condicionales. Fase 2: Construir lista de elementos (puro, sin I/O). Fase 3: Despachar al backend con evaluacion when/when_false. Modos de renderizado completo o campo a campo.
typedialog-how-factory-title = BackendFactory
-typedialog-how-factory-desc = Feature gates en tiempo de compilacion eliminan codigo muerto. Match runtime de BackendType despacha al backend seleccionado. Auto-deteccion via env TYPEDIALOG_BACKEND con fallback CLI.
+typedialog-how-factory-desc = Feature gates en tiempo de compilacion eliminan codigo muerto. Match tiempo de ejecución de BackendType despacha al backend seleccionado. Auto-deteccion via env TYPEDIALOG_BACKEND con fallback CLI.
typedialog-how-ai-title = Backends AI y Agent
typedialog-how-ai-desc = Backend AI con RAG, embeddings y busqueda semantica. Backend Agent ejecuta archivos .agent.mdx con soporte multi-LLM (Claude, OpenAI, Gemini, Ollama). Variables de template, imports de archivos, output en streaming.
typedialog-how-infra-title = Generacion de Infraestructura
diff --git a/site/site/i18n/locales/es/pages/vapora.ftl b/site/site/i18n/locales/es/pages/vapora.ftl
index 72e5a3c..afe9185 100644
--- a/site/site/i18n/locales/es/pages/vapora.ftl
+++ b/site/site/i18n/locales/es/pages/vapora.ftl
@@ -33,7 +33,7 @@ vapora-feat-a2a-desc = Coordinación distribuida de agentes con despacho de tare
vapora-feat-knowledge-title = Knowledge Graph
vapora-feat-knowledge-desc = Historial de ejecución temporal con relaciones causales. Curvas de aprendizaje desde agregaciones diarias con ventana. Búsqueda de similitud recomienda soluciones de tareas pasadas. 20 tests verifican persistencia de grafo y perfiles de aprendizaje.
vapora-feat-nats-title = NATS JetStream
-vapora-feat-nats-desc = Entrega confiable de mensajes para coordinación de agentes. Streams JetStream para eventos de workflow, completado de tareas y actualizaciones de estado. Fallback graceful cuando NATS no disponible.
+vapora-feat-nats-desc = Entrega confiable de mensajes para coordinación de agentes. Streams JetStream para eventos de flujo de trabajo, completado de tareas y actualizaciones de estado. Fallback graceful cuando NATS no disponible.
vapora-feat-surrealdb-title = SurrealDB
vapora-feat-surrealdb-desc = Base de datos multi-modelo con capacidades de grafo. Scopes multi-tenant para aislamiento de workspace. Relaciones de grafo nativas para Knowledge Graph. Todas las queries usan bindings parametrizados. Tablas SCHEMAFULL con índices explícitos.
vapora-feat-api-title = Backend API y Conectores MCP
diff --git a/site/site/i18n/locales/es/pages/work_request.ftl b/site/site/i18n/locales/es/pages/work_request.ftl
index 4805033..313dcca 100644
--- a/site/site/i18n/locales/es/pages/work_request.ftl
+++ b/site/site/i18n/locales/es/pages/work_request.ftl
@@ -6,7 +6,7 @@ work-request-page-description = Envía una solicitud de trabajo para tu proyecto
work-request-page-keywords = trabajo, solicitud, consulta, proyecto
# Encabezado de la Página
-work-request-title = Solicitar Cotización de Proyecto
+work-request-title = Solicitar Cotización de Servicio
work-request-subtitle = Hablemos sobre los requisitos de tu proyecto y cómo puedo ayudarte a alcanzar tus objetivos.
work-request-description = Completa el formulario a continuación con los detalles de tu proyecto, y te responderé en 24 horas con una propuesta personalizada.
@@ -16,7 +16,7 @@ work-request-project-title = Título del Proyecto
work-request-project-title-placeholder = Título breve para tu proyecto
work-request-project-description = Descripción del Proyecto
work-request-project-description-placeholder = Describe tu proyecto, objetivos y requisitos en detalle...
-work-request-project-type = Tipo de Proyecto
+work-request-project-type = Tipo de Servicio
work-request-timeline = Cronograma
work-request-budget = Rango de Presupuesto
work-request-priority = Nivel de Prioridad
@@ -130,7 +130,7 @@ work-request-schedule-call = Programar Llamada
work-request-form-action = mailto:hello@ontoref.dev
# Claves faltantes necesarias por el componente
-work-request-project-type-label = Tipo de Proyecto
+work-request-project-type-label = Tipo de Servicio
work-request-project-type-placeholder = Seleccionar tipo de proyecto
work-request-project-type-new = Proyecto Nuevo
work-request-project-type-existing = Mejora de Proyecto Existente
diff --git a/site/site/public/images/decks/ai-infra-en/assets/jesusperez_w.svg b/site/site/public/images/decks/ai-infra-en/assets/jesusperez_w.svg
new file mode 100644
index 0000000..c6021de
--- /dev/null
+++ b/site/site/public/images/decks/ai-infra-en/assets/jesusperez_w.svg
@@ -0,0 +1,35 @@
+
+
\ No newline at end of file
diff --git a/site/site/public/images/decks/ai-infra-en/deck.css b/site/site/public/images/decks/ai-infra-en/deck.css
new file mode 100644
index 0000000..a5d904b
--- /dev/null
+++ b/site/site/public/images/decks/ai-infra-en/deck.css
@@ -0,0 +1,1478 @@
+/* cyrillic-ext */
+/* cyrillic */
+/* vietnamese */
+/* latin-ext */
+@font-face {
+ font-family: 'Nunito Sans';
+ font-style: normal;
+ font-weight: 200;
+ font-stretch: 100%;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/pe0TMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp7t7R-tQKr51pE8.woff2) format('woff2');
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Nunito Sans';
+ font-style: normal;
+ font-weight: 200;
+ font-stretch: 100%;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/pe0TMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp7t1R-tQKr51.woff2) format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+/* cyrillic */
+/* vietnamese */
+/* latin-ext */
+@font-face {
+ font-family: 'Nunito Sans';
+ font-style: normal;
+ font-weight: 400;
+ font-stretch: 100%;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/pe0TMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp7t7R-tQKr51pE8.woff2) format('woff2');
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Nunito Sans';
+ font-style: normal;
+ font-weight: 400;
+ font-stretch: 100%;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/pe0TMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp7t1R-tQKr51.woff2) format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+/* cyrillic */
+/* vietnamese */
+/* latin-ext */
+@font-face {
+ font-family: 'Nunito Sans';
+ font-style: normal;
+ font-weight: 600;
+ font-stretch: 100%;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/pe0TMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp7t7R-tQKr51pE8.woff2) format('woff2');
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Nunito Sans';
+ font-style: normal;
+ font-weight: 600;
+ font-stretch: 100%;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/pe0TMImSLYBIv1o4X1M8ce2xCx3yop4tQpF_MeTm0lfGWVpNn64CL7U8upHZIbMV51Q42ptCp7t1R-tQKr51.woff2) format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+/* cyrillic */
+/* greek */
+/* vietnamese */
+/* latin-ext */
+@font-face {
+ font-family: 'Victor Mono';
+ font-style: normal;
+ font-weight: 200;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/Yq6Q-LGQWyfv-LGy7lEO0_ZTtxUGS7ZG09E.woff2) format('woff2');
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Victor Mono';
+ font-style: normal;
+ font-weight: 200;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/Yq6Q-LGQWyfv-LGy7lEO0_ZdtxUGS7ZG.woff2) format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+/* cyrillic */
+/* greek */
+/* vietnamese */
+/* latin-ext */
+@font-face {
+ font-family: 'Victor Mono';
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/Yq6Q-LGQWyfv-LGy7lEO0_ZTtxUGS7ZG09E.woff2) format('woff2');
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Victor Mono';
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/Yq6Q-LGQWyfv-LGy7lEO0_ZdtxUGS7ZG.woff2) format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+/* cyrillic */
+/* greek */
+/* vietnamese */
+/* latin-ext */
+@font-face {
+ font-family: 'Victor Mono';
+ font-style: normal;
+ font-weight: 600;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/Yq6Q-LGQWyfv-LGy7lEO0_ZTtxUGS7ZG09E.woff2) format('woff2');
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Victor Mono';
+ font-style: normal;
+ font-weight: 600;
+ font-display: swap;
+ src: url(/images/decks/ai-infra-en/fonts/Yq6Q-LGQWyfv-LGy7lEO0_ZdtxUGS7ZG.woff2) format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+.deck-read,.deck-read *:not(:where([class*="gloss-"],[class*="deck-"])){all:revert}
+.deck-read .resize-observer[data-v-b329ee4c] { position: absolute; top: 0px; left: 0px; z-index: -1; width: 100%; height: 100%; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; background-color: transparent; pointer-events: none; display: block; overflow: hidden; opacity: 0; }
+.deck-read .resize-observer[data-v-b329ee4c] object:not(:where([class*="gloss-"],[class*="deck-"])) { display: block; position: absolute; top: 0px; left: 0px; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1; }
+.deck-read .v-popper__popper { z-index: 10000; top: 0px; left: 0px; outline: none; }
+.deck-read .v-popper__popper.v-popper__popper--hidden { visibility: hidden; opacity: 0; transition: opacity 0.15s, visibility 0.15s; pointer-events: none; }
+.deck-read .v-popper__popper.v-popper__popper--shown { visibility: visible; opacity: 1; transition: opacity 0.15s; }
+.deck-read .v-popper__popper.v-popper__popper--skip-transition,.deck-read .v-popper__popper.v-popper__popper--skip-transition > .v-popper__wrapper { transition: none !important; }
+.deck-read .v-popper__backdrop { position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; display: none; }
+.deck-read .v-popper__inner { position: relative; box-sizing: border-box; overflow-y: auto; }
+.deck-read .v-popper__inner > div:not(:where([class*="gloss-"],[class*="deck-"])) { position: relative; z-index: 1; max-width: inherit; max-height: inherit; }
+.deck-read .v-popper__arrow-container { position: absolute; width: 10px; height: 10px; }
+.deck-read .v-popper__popper--arrow-overflow .v-popper__arrow-container,.deck-read .v-popper__popper--no-positioning .v-popper__arrow-container { display: none; }
+.deck-read .v-popper__arrow-inner,.deck-read .v-popper__arrow-outer { border-style: solid; position: absolute; top: 0px; left: 0px; width: 0px; height: 0px; }
+.deck-read .v-popper__arrow-inner { visibility: hidden; border-width: 7px; }
+.deck-read .v-popper__arrow-outer { border-width: 6px; }
+.deck-read .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-inner,.deck-read .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner { left: -2px; }
+.deck-read .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-outer,.deck-read .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-outer { left: -1px; }
+.deck-read .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-inner,.deck-read .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-outer { border-bottom-width: 0px; border-left-color: transparent !important; border-right-color: transparent !important; border-bottom-color: transparent !important; }
+.deck-read .v-popper__popper[data-popper-placement^="top"] .v-popper__arrow-inner { top: -2px; }
+.deck-read .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-container { top: 0px; }
+.deck-read .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner,.deck-read .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-outer { border-top-width: 0px; border-left-color: transparent !important; border-right-color: transparent !important; border-top-color: transparent !important; }
+.deck-read .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-inner { top: -4px; }
+.deck-read .v-popper__popper[data-popper-placement^="bottom"] .v-popper__arrow-outer { top: -6px; }
+.deck-read .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-inner,.deck-read .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-inner { top: -2px; }
+.deck-read .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-outer,.deck-read .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-outer { top: -1px; }
+.deck-read .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-inner,.deck-read .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-outer { border-left-width: 0px; border-left-color: transparent !important; border-top-color: transparent !important; border-bottom-color: transparent !important; }
+.deck-read .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-inner { left: -4px; }
+.deck-read .v-popper__popper[data-popper-placement^="right"] .v-popper__arrow-outer { left: -6px; }
+.deck-read .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-container { right: -10px; }
+.deck-read .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-inner,.deck-read .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-outer { border-right-width: 0px; border-top-color: transparent !important; border-right-color: transparent !important; border-bottom-color: transparent !important; }
+.deck-read .v-popper__popper[data-popper-placement^="left"] .v-popper__arrow-inner { left: -2px; }
+.deck-read .v-popper--theme-tooltip .v-popper__inner { background: rgba(0, 0, 0, 0.8); color: rgb(255, 255, 255); border-radius: 6px; padding: 7px 12px 6px; }
+.deck-read .v-popper--theme-tooltip .v-popper__arrow-outer { border-color: rgba(0, 0, 0, 0.8); }
+.deck-read .v-popper--theme-dropdown .v-popper__inner { background: rgb(255, 255, 255); color: rgb(0, 0, 0); border-radius: 6px; border: 1px solid rgb(221, 221, 221); box-shadow: rgba(0, 0, 0, 0.1) 0px 6px 30px; }
+.deck-read .v-popper--theme-dropdown .v-popper__arrow-inner { visibility: visible; border-color: rgb(255, 255, 255); }
+.deck-read .v-popper--theme-dropdown .v-popper__arrow-outer { border-color: rgb(221, 221, 221); }
+.deck-read { --twoslash-border-color: #8888; --twoslash-underline-color: currentColor; --twoslash-highlighted-border: #c37d0d50; --twoslash-highlighted-bg: #c37d0d20; --twoslash-popup-bg: #f8f8f8; --twoslash-popup-color: inherit; --twoslash-popup-shadow: rgba(0, 0, 0, .08) 0px 1px 4px; --twoslash-docs-color: #888; --twoslash-docs-font: sans-serif; --twoslash-code-font: inherit; --twoslash-code-font-size: 1em; --twoslash-matched-color: inherit; --twoslash-unmatched-color: #888; --twoslash-cursor-color: #8888; --twoslash-error-color: #d45656; --twoslash-error-bg: #d4565620; --twoslash-warn-color: #c37d0d; --twoslash-warn-bg: #c37d0d20; --twoslash-tag-color: #3772cf; --twoslash-tag-bg: #3772cf20; --twoslash-tag-warn-color: var(--twoslash-warn-color); --twoslash-tag-warn-bg: var(--twoslash-warn-bg); --twoslash-tag-annotate-color: #1ba673; --twoslash-tag-annotate-bg: #1ba67320; }
+@media (prefers-reduced-motion: reduce) {
+}
+.deck-read { --twoslash-popup-bg: var(--vp-c-bg, inherit); --twoslash-popup-color: var(--vp-c-text-1); --twoslash-docs-color: var(--vp-c-text-1); --twoslash-docs-font: var(--vp-font-family-base); --twoslash-code-font: var(--vp-font-family-mono); --twoslash-code-size: var(--vp-code-font-size); --twoslash-underline-color: #8888; --twoslash-border-color: var(--vp-c-border); --twoslash-cursor-color: var(--vp-c-brand); --twoslash-matched-color: var(--vp-c-brand); --twoslash-unmatched-color: var(--vp-c-text-2); }
+.deck-read .slidev-layout { height: 100%; padding: 2.5rem 3.5rem; font-size: 1.1rem; }
+.deck-read .slidev-layout pre:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout code:not(:where([class*="gloss-"],[class*="deck-"])) { user-select: text; }
+.deck-read .slidev-layout code:not(:where([class*="gloss-"],[class*="deck-"])) { font-family: "Victor Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }
+.deck-read .slidev-layout h1:not(:where([class*="gloss-"],[class*="deck-"])) { margin-bottom: 1rem; font-size: 2.25rem; line-height: 2.5rem; }
+.deck-read .slidev-layout h6:not(:where([class*="gloss-"],[class*="deck-"])) { padding-top: 0.25rem; font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; }
+.deck-read .slidev-layout p:not(:where([class*="gloss-"],[class*="deck-"])) { margin-top: 1rem; margin-bottom: 1rem; line-height: 1.5rem; }
+.deck-read .slidev-layout ul:not(:where([class*="gloss-"],[class*="deck-"])) { list-style: square; }
+.deck-read .slidev-layout ol:not(:where([class*="gloss-"],[class*="deck-"])) { list-style: decimal; }
+.deck-read .slidev-layout li:not(:where([class*="gloss-"],[class*="deck-"])) { line-height: 1.8em; }
+.deck-read .slidev-layout blockquote:not(:where([class*="gloss-"],[class*="deck-"])) { background: var(--slidev-code-background); color: var(--slidev-code-foreground); border-left-width: 1px; border-color: var(--slidev-theme-primary); border-radius: 0.25rem; padding: 0.25rem 0.5rem; font-size: 0.875rem; line-height: 1.25rem; }
+.deck-read .slidev-layout blockquote > *:not(:where([class*="gloss-"],[class*="deck-"])) { margin-top: 0px; margin-bottom: 0px; }
+.deck-read .slidev-layout table:not(:where([class*="gloss-"],[class*="deck-"])) { width: 100%; }
+.deck-read .slidev-layout tr:not(:where([class*="gloss-"],[class*="deck-"])) { border-bottom-width: 1px; border-color: rgba(156, 163, 175, 0.2); }
+.deck-read .slidev-layout th:not(:where([class*="gloss-"],[class*="deck-"])) { text-align: left; font-weight: 400; }
+.deck-read .slidev-layout a:not(:where([class*="gloss-"],[class*="deck-"])) { border-bottom: 1px dashed; border-top-color: currentcolor; border-right-color: currentcolor; border-left-color: currentcolor; border-top-style: dashed; border-right-style: dashed; border-left-style: dashed; }
+.deck-read .slidev-layout a:hover { border-style: solid; color: var(--slidev-theme-primary); }
+.deck-read .slidev-layout td:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout th:not(:where([class*="gloss-"],[class*="deck-"])) { padding: 0.75rem 0.5rem; }
+.deck-read .slidev-layout b:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout strong:not(:where([class*="gloss-"],[class*="deck-"])) { font-weight: 600; }
+.deck-read .slidev-layout kbd:not(:where([class*="gloss-"],[class*="deck-"])) { border-width: 1px 1px 2px; border-color: rgba(156, 163, 175, 0.2); border-radius: 0.25rem; background-color: rgb(156 163 175 / var(--un-bg-opacity)); --un-bg-opacity: .05; padding: 0.125rem 0.25rem; font-size: 0.75rem; line-height: 1rem; font-family: "Victor Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }
+.deck-read .slidev-layout h1:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read [dir="ltr"] h1:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout [dir="ltr"] h1:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout h6:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read [dir="ltr"] h6:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout [dir="ltr"] h6:not(:where([class*="gloss-"],[class*="deck-"])) { margin-left: -0.05em; margin-right: 0px; }
+.deck-read .slidev-layout li:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read [dir="ltr"] li:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout [dir="ltr"] li:not(:where([class*="gloss-"],[class*="deck-"])) { margin-left: 1.1em; margin-right: 0px; padding-left: 0.2em; padding-right: 0px; }
+.deck-read [dir="rtl"] h1:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout [dir="rtl"] h1:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read [dir="rtl"] h6:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout [dir="rtl"] h6:not(:where([class*="gloss-"],[class*="deck-"])) { margin-right: -0.05em; margin-left: 0px; }
+.deck-read [dir="rtl"] li:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout [dir="rtl"] li:not(:where([class*="gloss-"],[class*="deck-"])) { margin-right: 1.1em; margin-left: 0px; padding-right: 0.2em; padding-left: 0px; }
+.deck-read .slidev-layout h1 + p:not(:where([class*="gloss-"],[class*="deck-"])) { margin-top: -0.5rem; margin-bottom: 1rem; opacity: 0.5; }
+.deck-read .slidev-layout p + h2:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout ul + h2:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout table + h2:not(:where([class*="gloss-"],[class*="deck-"])) { margin-top: 2.5rem; }
+.deck-read .slidev-layout h1:not(:where([class*="gloss-"],[class*="deck-"])) { margin-bottom: 1rem; margin-left: -0.05em; font-size: 2.25rem; line-height: 2.5rem; }
+.deck-read .slidev-layout h2:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 1.875rem; line-height: 2.25rem; }
+.deck-read .slidev-layout h3:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 1.5rem; line-height: 2rem; }
+.deck-read .slidev-layout h4:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 1.25rem; line-height: 1.75rem; }
+.deck-read .slidev-layout h5:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 1rem; line-height: 1.5rem; }
+.deck-read .slidev-layout h6:not(:where([class*="gloss-"],[class*="deck-"])) { margin-left: -0.05em; padding-top: 0.25rem; font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; }
+.deck-read .slidev-layout h6:not(.opacity-100) { opacity: 0.4; }
+.deck-read .slidev-layout.cover,.deck-read .slidev-layout.intro { display: grid; height: 100%; }
+.deck-read .slidev-layout.cover h1:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout.intro h1:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 3.75rem; line-height: 5rem; }
+.deck-read .slidev-layout.fact { display: grid; height: 100%; text-align: center; }
+.deck-read .slidev-layout.fact h1:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 6rem; line-height: 1; font-weight: 700; }
+.deck-read .slidev-layout.fact h1 + p:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 1.5rem; line-height: 2rem; font-weight: 700; }
+.deck-read .slidev-layout.statement { display: grid; height: 100%; text-align: center; }
+.deck-read .slidev-layout.statement h1:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 3.75rem; line-height: 1; font-weight: 700; }
+.deck-read .slidev-layout.quote { display: grid; height: 100%; }
+.deck-read .slidev-layout.quote h1 + p:not(:where([class*="gloss-"],[class*="deck-"])) { margin-top: 0.5rem; }
+.deck-read .slidev-layout.section h1:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 3.75rem; font-weight: 500; line-height: 5rem; }
+.deck-read { --prism-scheme: light; --prism-foreground: #6e6e6e; --prism-background: #f4f4f4; --prism-comment: #a8a8a8; --prism-string: #555555; --prism-literal: #333333; --prism-keyword: #000000; --prism-function: #4f4f4f; --prism-deleted: #333333; --prism-class: #333333; --prism-builtin: #757575; --prism-property: #333333; --prism-namespace: #4f4f4f; --prism-punctuation: #ababab; --prism-decorator: var(--prism-class); --prism-operator: var(--prism-punctuation); --prism-number: var(--prism-literal); --prism-boolean: var(--prism-literal); --prism-variable: var(--prism-literal); --prism-constant: var(--prism-literal); --prism-symbol: var(--prism-literal); --prism-interpolation: var(--prism-literal); --prism-selector: var(--prism-keyword); --prism-keyword-control: var(--prism-keyword); --prism-regex: var(--prism-string); --prism-json-property: var(--prism-property); --prism-inline-background: var(--prism-background); --prism-comment-style: italic; --prism-url-decoration: underline; --prism-line-number: #a5a5a5; --prism-line-number-gutter: #333333; --prism-line-highlight-background: #eeeeee; --prism-selection-background: #dddddd; --prism-marker-color: var(--prism-foreground); --prism-marker-opacity: .4; --prism-marker-font-size: .8em; --prism-font-size: 1em; --prism-line-height: 1.5em; --prism-font-family: monospace; --prism-inline-font-size: var(--prism-font-size); --prism-block-font-size: var(--prism-font-size); --prism-tab-size: 2; --prism-block-padding-x: 1em; --prism-block-padding-y: 1em; --prism-block-margin-x: 0; --prism-block-margin-y: .5em; --prism-block-radius: .3em; --prism-inline-padding-x: .3em; --prism-inline-padding-y: .1em; --prism-inline-radius: .3em; }
+.deck-read div[class*="language-"],.deck-read pre[class*="language-"],.deck-read code[class*="language-"] { font-size: var(--prism-font-size); font-family: var(--prism-font-family); direction: ltr; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; line-height: var(--prism-line-height); tab-size: var(--prism-tab-size); hyphens: none; color: var(--prism-foreground) !important; }
+.deck-read div[class*="language-"],.deck-read pre[class*="language-"] { font-size: var(--prism-block-font-size); padding: var(--prism-block-padding-y) var(--prism-block-padding-x); margin: var(--prism-block-margin-y) var(--prism-block-margin-x); border-radius: var(--prism-block-radius); overflow: auto; background: var(--prism-background); }
+.deck-read :not(pre) > code[class*="language-"] { font-size: var(--prism-inline-font-size); padding: var(--prism-inline-padding-y) var(--prism-inline-padding-x); border-radius: var(--prism-inline-radius); background: var(--prism-inline-background); }
+.deck-read pre[class*="language-"]::selection,.deck-read pre[class*="language-"] ::selection,.deck-read code[class*="language-"]::selection,.deck-read code[class*="language-"] ::selection { background: var(--prism-selection-background); }
+.deck-read .token.comment,.deck-read .token.prolog,.deck-read .token.doctype,.deck-read .token.cdata { color: var(--prism-comment); font-style: var(--prism-comment-style); }
+.deck-read .token.namespace { color: var(--prism-namespace); }
+.deck-read .token.interpolation { color: var(--prism-interpolation); }
+.deck-read .token.string { color: var(--prism-string); }
+.deck-read .token.punctuation { color: var(--prism-punctuation); }
+.deck-read .token.operator { color: var(--prism-operator); }
+.deck-read .token.keyword.module,.deck-read .token.keyword.control-flow { color: var(--prism-keyword-control); }
+.deck-read .token.url,.deck-read .token.symbol,.deck-read .token.inserted { color: var(--prism-symbol); }
+.deck-read .token.constant { color: var(--prism-constant); }
+.deck-read .token.string.url { text-decoration: var(--prism-url-decoration); }
+.deck-read .token.boolean,.deck-read .language-json .token.boolean { color: var(--prism-boolean); }
+.deck-read .token.number,.deck-read .language-json .token.number { color: var(--prism-number); }
+.deck-read .token.variable { color: var(--prism-variable); }
+.deck-read .token.keyword { color: var(--prism-keyword); }
+.deck-read .token.atrule,.deck-read .token.attr-value,.deck-read .token.selector { color: var(--prism-selector); }
+.deck-read .token.function { color: var(--prism-function); }
+.deck-read .token.deleted { color: var(--prism-deleted); }
+.deck-read .token.important,.deck-read .token.bold { font-weight: 700; }
+.deck-read .token.italic { font-style: italic; }
+.deck-read .token.class-name { color: var(--prism-class); }
+.deck-read .token.tag,.deck-read .token.builtin { color: var(--prism-builtin); }
+.deck-read .token.attr-name,.deck-read .token.property,.deck-read .token.entity { color: var(--prism-property); }
+.deck-read .language-json .token.property { color: var(--prism-json-property); }
+.deck-read .token.regex { color: var(--prism-regex); }
+.deck-read .token.decorator,.deck-read .token.annotation { color: var(--prism-decorator); }
+.deck-read .line-numbers .line-numbers-rows { border-right-color: var(--prism-line-number); }
+.deck-read .line-numbers-rows > span::before { color: var(--prism-line-number-gutter); }
+.deck-read .line-highlight { background: var(--prism-line-highlight-background); }
+.deck-read { --cm-scheme: light; --cm-foreground: #6e6e6e; --cm-background: #f4f4f4; --cm-comment: #a8a8a8; --cm-string: #555555; --cm-literal: #333333; --cm-keyword: #000000; --cm-function: #4f4f4f; --cm-deleted: #333333; --cm-class: #333333; --cm-builtin: #757575; --cm-property: #333333; --cm-namespace: #4f4f4f; --cm-punctuation: #ababab; --cm-decorator: var(--cm-class); --cm-operator: var(--cm-punctuation); --cm-number: var(--cm-literal); --cm-boolean: var(--cm-literal); --cm-variable: var(--cm-literal); --cm-constant: var(--cm-literal); --cm-symbol: var(--cm-literal); --cm-interpolation: var(--cm-literal); --cm-selector: var(--cm-keyword); --cm-keyword-control: var(--cm-keyword); --cm-regex: var(--cm-string); --cm-json-property: var(--cm-property); --cm-inline-background: var(--cm-background); --cm-comment-style: italic; --cm-url-decoration: underline; --cm-line-number: #a5a5a5; --cm-line-number-gutter: #333333; --cm-line-highlight-background: #eeeeee; --cm-selection-background: #aaaaaa; --cm-marker-color: var(--cm-foreground); --cm-marker-opacity: .4; --cm-marker-font-size: .8em; --cm-font-size: 1em; --cm-line-height: 1.5em; --cm-font-family: monospace; --cm-inline-font-size: var(--cm-font-size); --cm-block-font-size: var(--cm-font-size); --cm-tab-size: 2; --cm-block-padding-x: 1em; --cm-block-padding-y: 1em; --cm-block-margin-x: 0; --cm-block-margin-y: .5em; --cm-block-radius: .3em; --cm-inline-padding-x: .3em; --cm-inline-padding-y: .1em; --cm-inline-radius: .3em; }
+.deck-read .cm-s-vars.CodeMirror { background-color: var(--cm-background); color: var(--cm-foreground); }
+.deck-read .cm-s-vars .CodeMirror-gutters { background: var(--cm-line-number-gutter); color: var(--cm-line-number); border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; }
+.deck-read .cm-s-vars .CodeMirror-guttermarker,.deck-read .cm-s-vars .CodeMirror-guttermarker-subtle,.deck-read .cm-s-vars .CodeMirror-linenumber { color: var(--cm-line-number); }
+.deck-read .cm-s-vars div.CodeMirror-selected,.deck-read .cm-s-vars.CodeMirror-focused div.CodeMirror-selected { background: var(--cm-selection-background); }
+.deck-read .cm-s-vars .CodeMirror-line::selection,.deck-read .cm-s-vars .CodeMirror-line > span::selection,.deck-read .cm-s-vars .CodeMirror-line > span > span::selection { background: var(--cm-selection-background); }
+.deck-read .cm-s-vars .CodeMirror-activeline-background { background: var(--cm-line-highlight-background); }
+.deck-read .cm-s-vars .cm-keyword { color: var(--cm-keyword); }
+.deck-read .cm-s-vars .cm-variable,.deck-read .cm-s-vars .cm-variable-2,.deck-read .cm-s-vars .cm-variable-3,.deck-read .cm-s-vars .cm-type { color: var(--cm-variable); }
+.deck-read .cm-s-vars .cm-builtin { color: var(--cm-builtin); }
+.deck-read .cm-s-vars .cm-atom { color: var(--cm-literal); }
+.deck-read .cm-s-vars .cm-number { color: var(--cm-number); }
+.deck-read .cm-s-vars .cm-def { color: var(--cm-decorator); }
+.deck-read .cm-s-vars .cm-string,.deck-read .cm-s-vars .cm-string-2 { color: var(--cm-string); }
+.deck-read .cm-s-vars .cm-comment { color: var(--cm-comment); }
+.deck-read .cm-s-vars .cm-tag { color: var(--cm-builtin); }
+.deck-read .cm-s-vars .cm-meta { color: var(--cm-namespace); }
+.deck-read .cm-s-vars .cm-attribute,.deck-read .cm-s-vars .cm-property { color: var(--cm-property); }
+.deck-read .cm-s-vars .cm-qualifier { color: var(--cm-keyword); }
+.deck-read .cm-s-vars .cm-error { color: var(--prism-deleted); }
+.deck-read .cm-s-vars .cm-operator,.deck-read .cm-s-vars .cm-bracket { color: var(--cm-punctuation); }
+.deck-read .cm-s-vars .CodeMirror-matchingbracket { text-decoration: underline; }
+.deck-read .cm-s-vars .CodeMirror-cursor { border-left: 1px solid; }
+.deck-read { --cm-scheme: var(--prism-scheme); --cm-foreground: var(--prism-foreground); --cm-background: var(--prism-background); --cm-comment: var(--prism-comment); --cm-string: var(--prism-string); --cm-literal: var(--prism-literal); --cm-keyword: var(--prism-keyword); --cm-function: var(--prism-function); --cm-deleted: var(--prism-deleted); --cm-class: var(--prism-class); --cm-builtin: var(--prism-builtin); --cm-property: var(--prism-property); --cm-namespace: var(--prism-namespace); --cm-punctuation: var(--prism-punctuation); --cm-decorator: var(--prism-decorator); --cm-operator: var(--prism-operator); --cm-number: var(--prism-number); --cm-boolean: var(--prism-boolean); --cm-variable: var(--prism-variable); --cm-constant: var(--prism-constant); --cm-symbol: var(--prism-symbol); --cm-interpolation: var(--prism-interpolation); --cm-selector: var(--prism-selector); --cm-keyword-control: var(--prism-keyword-control); --cm-regex: var(--prism-regex); --cm-json-property: var(--prism-json-property); --cm-inline-background: var(--prism-inline-background); --cm-comment-style: var(--prism-comment-style); --cm-url-decoration: var(--prism-url-decoration); --cm-line-number: var(--prism-line-number); --cm-line-number-gutter: var(--prism-line-number-gutter); --cm-line-highlight-background: var(--prism-line-highlight-background); --cm-selection-background: var(--prism-selection-background); --cm-marker-color: var(--prism-marker-color); --cm-marker-opacity: var(--prism-marker-opacity); --cm-marker-font-size: var(--prism-marker-font-size); --cm-font-size: var(--prism-font-size); --cm-line-height: var(--prism-line-height); --cm-font-family: var(--prism-font-family); --cm-inline-font-size: var(--prism-inline-font-size); --cm-block-font-size: var(--prism-block-font-size); --cm-tab-size: var(--prism-tab-size); --cm-block-padding-x: var(--prism-block-padding-x); --cm-block-padding-y: var(--prism-block-padding-y); --cm-block-margin-x: var(--prism-block-margin-x); --cm-block-margin-y: var(--prism-block-margin-y); --cm-block-radius: var(--prism-block-radius); --cm-inline-padding-x: var(--prism-inline-padding-x); --cm-inline-padding-y: var(--prism-inline-padding-y); --cm-inline-radius: var(--prism-inline-radius); }
+.deck-read { --prism-font-family: var(--slidev-code-font-family); --prism-background: var(--slidev-code-background); }
+.deck-read html:not(.dark) { --prism-foreground: #393a34; --prism-comment: #a0ada0; --prism-string: #b56959; --prism-literal: #2f8a89; --prism-number: #296aa3; --prism-keyword: #1c6b48; --prism-function: #6c7834; --prism-boolean: #1c6b48; --prism-constant: #a65e2b; --prism-deleted: #a14f55; --prism-class: #2993a3; --prism-builtin: #ab5959; --prism-property: #b58451; --prism-namespace: #b05a78; --prism-punctuation: #8e8f8b; --prism-decorator: #bd8f8f; --prism-regex: #ab5e3f; --prism-json-property: #698c96; }
+.deck-read.dark { --prism-foreground: #d4cfbf; --prism-comment: #758575; --prism-string: #d48372; --prism-literal: #429988; --prism-keyword: #4d9375; --prism-boolean: #1c6b48; --prism-number: #6394bf; --prism-variable: #c2b36e; --prism-function: #a1b567; --prism-deleted: #a14f55; --prism-class: #54b1bf; --prism-builtin: #e0a569; --prism-property: #dd8e6e; --prism-namespace: #db889a; --prism-punctuation: #858585; --prism-decorator: #bd8f8f; --prism-regex: #ab5e3f; --prism-json-property: #6b8b9e; --prism-line-number: #888888; --prism-line-number-gutter: #eeeeee; --prism-line-highlight-background: #444444; --prism-selection-background: #444444; }
+.deck-read { --rust-orange: #ce422b; --rust-dark: #1a1a1a; --rust-light: #f5f5f5; --vibe-orange: #f74c00; --vibe-lorange: #f97316; --vibe-dark: #8b2500; --vibe-light: #ffa366; --color-background: #0f0f0f; --color-text: #e8e8e8; --color-text-secondary: #a0a0a0; --color-accent: var(--rust-orange); --color-accent-dark: #a03620; }
+.deck-read .lvibe,.deck-read .lvibe strong:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--vibe-lorange); }
+.deck-read .ulvibe,.deck-read .ulvibe strong:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--vibe-light); }
+.deck-read pre:not(:where([class*="gloss-"],[class*="deck-"])) { border: 1px solid var(--rust-orange); border-radius: 8px; padding: 16px; margin: 1em 0px; background: rgb(0, 0, 0) !important; }
+.deck-read .slidev-layout.two-columns.w-full.h-full.grid { column-gap: 1.5rem; }
+.deck-read .meters-slide { position: absolute; bottom: 2rem; right: 2rem; font-family: monospace; font-size: 0.85rem; opacity: 0.7; background: var(--slidev-theme-background); padding: 0.5rem 1.5rem; border-radius: 6px; border: 1px solid rgba(128, 128, 128, 0.2); }
+.deck-read { --rust-orange: #ce422b; --rust-dark: #1a1a1a; --rust-light: #f5f5f5; --color-background: #0f0f0f; --color-text: #e8e8e8; --color-text-secondary: #a0a0a0; --color-accent: var(--rust-orange); --color-accent-dark: #a03620; }
+.deck-read { font-family: Inter, sans-serif; background: var(--color-background); color: var(--color-text); }
+.deck-read { background: var(--color-background); color: var(--color-text); }
+.deck-read .slidev-layout { background: linear-gradient(135deg,var(--rust-dark) 0%,#1f1f1f 100%); color: var(--color-text); }
+.deck-read h1:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h2:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h3:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h4:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h5:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h6:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--color-text); font-weight: 600; letter-spacing: -0.02em; }
+.deck-read h1:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 3.5rem; line-height: 1.1; margin-bottom: 0.5em; }
+.deck-read h2:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 2.5rem; line-height: 1.2; margin: 0.5em 0px; }
+.deck-read h3:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 1.75rem; line-height: 1.3; }
+.deck-read .accent { color: var(--rust-orange); }
+.deck-read em:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--rust-orange); font-style: italic; font-weight: 500; }
+.deck-read strong:not(:where([class*="gloss-"],[class*="deck-"])) { font-weight: 700; color: var(--color-text); }
+.deck-read li:not(:where([class*="gloss-"],[class*="deck-"])) { margin: 0.5em 0px; color: var(--color-text); }
+.deck-read li::marker { color: var(--rust-orange); font-weight: 700; }
+.deck-read a:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--rust-orange); text-decoration: none; border-bottom: 2px solid var(--rust-orange); transition: 0.3s; }
+.deck-read a:hover { color: var(--rust-light); background: var(--rust-orange); padding: 0px 4px; border-bottom: 2px solid var(--rust-light); }
+.deck-read pre:not(:where([class*="gloss-"],[class*="deck-"])) { border: 1px solid rgba(206, 66, 43, 0.25); border-radius: 8px; padding: 16px; margin: 1em 0px; background: rgb(0, 0, 0) !important; }
+.deck-read code:not(:where([class*="gloss-"],[class*="deck-"])) { font-family: "Fira Code", monospace; font-size: 0.9em; color: rgb(232, 232, 232); }
+.deck-read :not(pre) > code:not(:where([class*="gloss-"],[class*="deck-"])) { background: rgba(206, 66, 43, 0.1); color: var(--rust-orange); padding: 2px 6px; border-radius: 4px; font-weight: 500; }
+.deck-read blockquote:not(:where([class*="gloss-"],[class*="deck-"])) { border-left: 4px solid var(--rust-orange); padding-left: 1.5em; margin: 1.5em 0px; color: var(--color-text-secondary); font-style: italic; }
+.deck-read .slidev-layout.title-slide { background: linear-gradient(135deg,#0a0a0a 0%,var(--rust-dark) 50%,rgba(206,66,43,.1) 100%); display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; }
+.deck-read .slidev-layout.title-slide h1:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--rust-light); font-size: 4rem; margin-bottom: 0.3em; text-shadow: rgba(206, 66, 43, 0.3) 0px 2px 10px; }
+.deck-read .slidev-layout.title-slide h2:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--rust-orange); font-size: 2rem; font-weight: 400; margin-bottom: 2em; }
+.deck-read .slidev-layout.title-slide p:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--color-text-secondary); font-size: 1.2rem; margin: 0.5em 0px; }
+.deck-read .slidev-layout.section { background: linear-gradient(135deg,var(--rust-orange) 0%,var(--rust-dark) 100%); }
+.deck-read .slidev-layout.section h1:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--rust-light); font-size: 3.5rem; text-shadow: rgba(0, 0, 0, 0.5) 0px 2px 10px; }
+.deck-read .box-highlight { background: rgba(206, 66, 43, 0.1); border-left: 4px solid var(--rust-orange); padding: 1.5em; border-radius: 4px; margin: 1.5em 0px; }
+.deck-read .box-highlight strong:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--rust-orange); }
+.deck-read .btn { display: inline-block; background: var(--rust-orange); color: var(--rust-light); padding: 0.75em 1.5em; border-radius: 4px; text-decoration: none; border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; font-weight: 600; transition: 0.3s; }
+.deck-read .btn:hover { background: var(--rust-accent-dark); transform: translateY(-2px); box-shadow: rgba(206, 66, 43, 0.3) 0px 8px 16px; }
+.deck-read hr:not(:where([class*="gloss-"],[class*="deck-"])) { border-width: medium; border-style: none; border-color: currentcolor; border-image: initial; height: 2px; background: linear-gradient(90deg,transparent,var(--rust-orange),transparent); margin: 2em 0px; }
+.deck-read table:not(:where([class*="gloss-"],[class*="deck-"])) { width: 100%; border-collapse: collapse; margin: 1.5em 0px; }
+.deck-read table th:not(:where([class*="gloss-"],[class*="deck-"])) { background: rgba(206, 66, 43, 0.2); color: var(--rust-orange); padding: 0.75em; text-align: left; font-weight: 600; border-bottom: 2px solid var(--rust-orange); }
+.deck-read table td:not(:where([class*="gloss-"],[class*="deck-"])) { padding: 0.75em; border-bottom: 1px solid rgba(206, 66, 43, 0.1); }
+.deck-read table tr:hover { background: rgba(206, 66, 43, 0.05); }
+.deck-read .slidev-page-number { color: var(--rust-orange); font-weight: 600; }
+.deck-read .footnote { color: var(--color-text-secondary); font-size: 0.85em; margin-top: 2em; padding-top: 1em; border-top: 1px solid rgba(206, 66, 43, 0.2); }
+.deck-read .slidev-enter-active,.deck-read .slidev-leave-active { transition: opacity 0.5s; }
+.deck-read .slidev-enter-from,.deck-read .slidev-leave-to { opacity: 0; }
+.deck-read .slidev-layout.two-cols { column-gap: 1.5rem; }
+.deck-read .meters-slide { opacity: 0.7; position: absolute !important; bottom: 2rem !important; right: 2rem !important; font-family: monospace !important; font-size: 0.85rem !important; background: rgba(15, 15, 15, 0.85) !important; padding: 0.5rem 1.5rem !important; border-radius: 6px !important; border: 1px solid rgba(128, 128, 128, 0.2) !important; z-index: 100 !important; }
+.deck-read .photo-bg { position: relative; }
+.deck-read .photo-bg::before { content: ""; position: absolute; inset: 0px; background: rgba(0, 0, 0, 0.27); pointer-events: none; z-index: 0; }
+.deck-read .photo-more-bg::before { content: ""; position: absolute; inset: 0px; background: rgba(0, 0, 0, 0.57); pointer-events: none; z-index: 0; }
+.deck-read .photo-bg .slidev-layout,.deck-read .photo-more-bg .slidev-layout { position: relative; z-index: 1; }
+@media (max-width: 768px) {
+ .deck-read h1:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 2.5rem; }
+ .deck-read h2:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 1.75rem; }
+ .deck-read code:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 0.8em; }
+}
+.deck-read *:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read ::before,.deck-read ::after { box-sizing: border-box; border-width: 0px; border-style: solid; border-color: var(--un-default-border-color, #e5e7eb); }
+.deck-read ::before,.deck-read ::after { --un-content: ""; }
+.deck-read,.deck-read :host { line-height: 1.5; text-size-adjust: 100%; tab-size: 4; font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-feature-settings: normal; font-variation-settings: normal; -webkit-tap-highlight-color: transparent; }
+.deck-read { margin: 0px; line-height: inherit; }
+.deck-read hr:not(:where([class*="gloss-"],[class*="deck-"])) { height: 0px; color: inherit; border-top-width: 1px; }
+.deck-read abbr:where([title]) { text-decoration: underline dotted; }
+.deck-read h1:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h2:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h3:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h4:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h5:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h6:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: inherit; font-weight: inherit; }
+.deck-read a:not(:where([class*="gloss-"],[class*="deck-"])) { color: inherit; text-decoration: inherit; }
+.deck-read b:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read strong:not(:where([class*="gloss-"],[class*="deck-"])) { font-weight: bolder; }
+.deck-read code:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read kbd:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read samp:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read pre:not(:where([class*="gloss-"],[class*="deck-"])) { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-feature-settings: normal; font-variation-settings: normal; font-size: 1em; }
+.deck-read small:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 80%; }
+.deck-read sub:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read sup:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
+.deck-read sub:not(:where([class*="gloss-"],[class*="deck-"])) { bottom: -0.25em; }
+.deck-read sup:not(:where([class*="gloss-"],[class*="deck-"])) { top: -0.5em; }
+.deck-read table:not(:where([class*="gloss-"],[class*="deck-"])) { text-indent: 0px; border-color: inherit; border-collapse: collapse; }
+.deck-read button:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read input:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read optgroup:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read select:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read textarea:not(:where([class*="gloss-"],[class*="deck-"])) { font-family: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 100%; font-weight: inherit; line-height: inherit; color: inherit; margin: 0px; padding: 0px; }
+.deck-read button:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read select:not(:where([class*="gloss-"],[class*="deck-"])) { text-transform: none; }
+.deck-read button:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read [type="button"],.deck-read [type="reset"],.deck-read [type="submit"] { appearance: button; background-color: transparent; background-image: none; }
+.deck-read progress:not(:where([class*="gloss-"],[class*="deck-"])) { vertical-align: baseline; }
+.deck-read ::-webkit-inner-spin-button,.deck-read ::-webkit-outer-spin-button { height: auto; }
+.deck-read [type="search"] { appearance: textfield; outline-offset: -2px; }
+.deck-read ::-webkit-search-decoration { appearance: none; }
+.deck-read ::-webkit-file-upload-button { appearance: button; font: inherit; }
+.deck-read summary:not(:where([class*="gloss-"],[class*="deck-"])) { display: list-item; }
+.deck-read blockquote:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read dl:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read dd:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h1:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h2:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h3:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h4:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h5:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read h6:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read hr:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read figure:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read p:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read pre:not(:where([class*="gloss-"],[class*="deck-"])) { margin: 0px; }
+.deck-read fieldset:not(:where([class*="gloss-"],[class*="deck-"])) { margin: 0px; padding: 0px; }
+.deck-read legend:not(:where([class*="gloss-"],[class*="deck-"])) { padding: 0px; }
+.deck-read ol:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read ul:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read menu:not(:where([class*="gloss-"],[class*="deck-"])) { list-style: none; margin: 0px; padding: 0px; }
+.deck-read dialog:not(:where([class*="gloss-"],[class*="deck-"])) { padding: 0px; }
+.deck-read textarea:not(:where([class*="gloss-"],[class*="deck-"])) { resize: vertical; }
+.deck-read input::placeholder,.deck-read textarea::placeholder { opacity: 1; color: rgb(156, 163, 175); }
+.deck-read button:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read [role="button"] { cursor: pointer; }
+.deck-read :disabled { cursor: default; }
+.deck-read img:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read svg:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read video:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read canvas:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read audio:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read iframe:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read embed:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read object:not(:where([class*="gloss-"],[class*="deck-"])) { display: block; vertical-align: middle; }
+.deck-read img:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read video:not(:where([class*="gloss-"],[class*="deck-"])) { max-width: 100%; height: auto; }
+.deck-read [hidden]:where(:not([hidden="until-found"])) { display: none; }
+.deck-read *:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read ::before,.deck-read ::after { --un-rotate: 0; --un-rotate-x: 0; --un-rotate-y: 0; --un-rotate-z: 0; --un-scale-x: 1; --un-scale-y: 1; --un-scale-z: 1; --un-skew-x: 0; --un-skew-y: 0; --un-translate-x: 0; --un-translate-y: 0; --un-translate-z: 0; --un-pan-x: ; --un-pan-y: ; --un-pinch-zoom: ; --un-scroll-snap-strictness: proximity; --un-ordinal: ; --un-slashed-zero: ; --un-numeric-figure: ; --un-numeric-spacing: ; --un-numeric-fraction: ; --un-border-spacing-x: 0; --un-border-spacing-y: 0; --un-ring-offset-shadow: 0 0 rgb(0 0 0 / 0); --un-ring-shadow: 0 0 rgb(0 0 0 / 0); --un-shadow-inset: ; --un-shadow: 0 0 rgb(0 0 0 / 0); --un-ring-inset: ; --un-ring-offset-width: 0px; --un-ring-offset-color: #fff; --un-ring-width: 0px; --un-ring-color: rgb(147 197 253 / .5); --un-blur: ; --un-brightness: ; --un-contrast: ; --un-drop-shadow: ; --un-grayscale: ; --un-hue-rotate: ; --un-invert: ; --un-saturate: ; --un-sepia: ; --un-backdrop-blur: ; --un-backdrop-brightness: ; --un-backdrop-contrast: ; --un-backdrop-grayscale: ; --un-backdrop-hue-rotate: ; --un-backdrop-invert: ; --un-backdrop-opacity: ; --un-backdrop-saturate: ; --un-backdrop-sepia: ; }
+.deck-read ::backdrop { --un-rotate: 0; --un-rotate-x: 0; --un-rotate-y: 0; --un-rotate-z: 0; --un-scale-x: 1; --un-scale-y: 1; --un-scale-z: 1; --un-skew-x: 0; --un-skew-y: 0; --un-translate-x: 0; --un-translate-y: 0; --un-translate-z: 0; --un-pan-x: ; --un-pan-y: ; --un-pinch-zoom: ; --un-scroll-snap-strictness: proximity; --un-ordinal: ; --un-slashed-zero: ; --un-numeric-figure: ; --un-numeric-spacing: ; --un-numeric-fraction: ; --un-border-spacing-x: 0; --un-border-spacing-y: 0; --un-ring-offset-shadow: 0 0 rgb(0 0 0 / 0); --un-ring-shadow: 0 0 rgb(0 0 0 / 0); --un-shadow-inset: ; --un-shadow: 0 0 rgb(0 0 0 / 0); --un-ring-inset: ; --un-ring-offset-width: 0px; --un-ring-offset-color: #fff; --un-ring-width: 0px; --un-ring-color: rgb(147 197 253 / .5); --un-blur: ; --un-brightness: ; --un-contrast: ; --un-drop-shadow: ; --un-grayscale: ; --un-hue-rotate: ; --un-invert: ; --un-saturate: ; --un-sepia: ; --un-backdrop-blur: ; --un-backdrop-brightness: ; --un-backdrop-contrast: ; --un-backdrop-grayscale: ; --un-backdrop-hue-rotate: ; --un-backdrop-invert: ; --un-backdrop-opacity: ; --un-backdrop-saturate: ; --un-backdrop-sepia: ; }
+.deck-read :is(.prose) { color: var(--un-prose-body); max-width: 65ch; }
+.deck-read :is(.prose) :where(p):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; }
+.deck-read :is(.prose) :where([class~="lead"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-lead); font-size: 1.25em; line-height: 1.6; margin-top: 1.2em; margin-bottom: 1.2em; }
+.deck-read :is(.prose) :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-links); text-decoration: underline; font-weight: 500; }
+.deck-read :is(.prose) :where(strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-bold); font-weight: 600; }
+.deck-read :is(.prose) :where(a strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }
+.deck-read :is(.prose) :where(blockquote strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }
+.deck-read :is(.prose) :where(thead th strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }
+.deck-read :is(.prose) :where(ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: decimal; margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em; }
+.deck-read :is(.prose) :where(ol[type="A"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-alpha; }
+.deck-read :is(.prose) :where(ol[type="a"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-alpha; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-alpha; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-alpha; }
+.deck-read :is(.prose) :where(ol[type="I"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-roman; }
+.deck-read :is(.prose) :where(ol[type="i"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-roman; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: upper-roman; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: lower-roman; }
+.deck-read :is(.prose) :where(ol[type="1"]):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: decimal; }
+.deck-read :is(.prose) :where(ul):not(:where([class~="not-prose"], [class~="not-prose"] *)) { list-style-type: disc; margin-top: 1.25em; margin-bottom: 1.25em; padding-inline-start: 1.625em; }
+.deck-read :is(.prose) :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { font-weight: 400; color: var(--un-prose-counters); }
+.deck-read :is(.prose) :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *))::marker { color: var(--un-prose-bullets); }
+.deck-read :is(.prose) :where(dt):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-headings); font-weight: 600; margin-top: 1.25em; }
+.deck-read :is(.prose) :where(hr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-color: var(--un-prose-hr); border-top-width: 1px; margin-top: 3em; margin-bottom: 3em; }
+.deck-read :is(.prose) :where(blockquote):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-weight: 500; font-style: italic; color: var(--un-prose-quotes); border-inline-start-width: 0.25rem; border-inline-start-color: var(--un-prose-quote-borders); quotes: "“" "”" "‘" "’"; margin-top: 1.6em; margin-bottom: 1.6em; padding-inline-start: 1em; }
+.deck-read :is(.prose) :where(blockquote p:first-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { content: open-quote; }
+.deck-read :is(.prose) :where(blockquote p:last-of-type):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { content: close-quote; }
+.deck-read :is(.prose) :where(h1):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-headings); font-weight: 800; font-size: 2.25em; margin-top: 0px; margin-bottom: 0.888889em; line-height: 1.11111; }
+.deck-read :is(.prose) :where(h1 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-weight: 900; color: inherit; }
+.deck-read :is(.prose) :where(h2):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-headings); font-weight: 700; font-size: 1.5em; margin-top: 2em; margin-bottom: 1em; line-height: 1.33333; }
+.deck-read :is(.prose) :where(h2 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-weight: 800; color: inherit; }
+.deck-read :is(.prose) :where(h3):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-headings); font-weight: 600; font-size: 1.25em; margin-top: 1.6em; margin-bottom: 0.6em; line-height: 1.6; }
+.deck-read :is(.prose) :where(h3 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-weight: 700; color: inherit; }
+.deck-read :is(.prose) :where(h4):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-headings); font-weight: 600; margin-top: 1.5em; margin-bottom: 0.5em; line-height: 1.5; }
+.deck-read :is(.prose) :where(h4 strong):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-weight: 700; color: inherit; }
+.deck-read :is(.prose) :where(img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; }
+.deck-read :is(.prose) :where(picture):not(:where([class~="not-prose"], [class~="not-prose"] *)) { display: block; margin-top: 2em; margin-bottom: 2em; }
+.deck-read :is(.prose) :where(video):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; }
+.deck-read :is(.prose) :where(kbd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { font-weight: 500; font-family: inherit; color: var(--un-prose-kbd); box-shadow: 0 0 0 1px rgb(var(--un-prose-kbd-shadows) / 10%),0 3px rgb(var(--un-prose-kbd-shadows) / 10%); font-size: 0.875em; border-radius: 0.3125rem; padding-top: 0.1875em; padding-inline: 0.375em; padding-bottom: 0.1875em; }
+.deck-read :is(.prose) :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-code); font-weight: 600; font-size: 0.875em; }
+.deck-read :is(.prose) :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { content: "`"; }
+.deck-read :is(.prose) :where(code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { content: "`"; }
+.deck-read :is(.prose) :where(a code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }
+.deck-read :is(.prose) :where(h1 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }
+.deck-read :is(.prose) :where(h2 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-size: 0.875em; }
+.deck-read :is(.prose) :where(h3 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; font-size: 0.9em; }
+.deck-read :is(.prose) :where(h4 code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }
+.deck-read :is(.prose) :where(blockquote code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }
+.deck-read :is(.prose) :where(thead th code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: inherit; }
+.deck-read :is(.prose) :where(pre):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-pre-code); background-color: var(--un-prose-pre-bg); overflow-x: auto; font-weight: 400; font-size: 0.875em; line-height: 1.71429; margin-top: 1.71429em; margin-bottom: 1.71429em; border-radius: 0.375rem; padding-top: 0.857143em; padding-inline: 1.14286em; padding-bottom: 0.857143em; }
+.deck-read :is(.prose) :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *)) { background-color: transparent; border-width: 0px; border-radius: 0px; padding: 0px; font-weight: inherit; color: inherit; font-size: inherit; font-family: inherit; line-height: inherit; }
+.deck-read :is(.prose) :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::before { content: none; }
+.deck-read :is(.prose) :where(pre code):not(:where([class~="not-prose"], [class~="not-prose"] *))::after { content: none; }
+.deck-read :is(.prose) :where(table):not(:where([class~="not-prose"], [class~="not-prose"] *)) { width: 100%; table-layout: auto; margin-top: 2em; margin-bottom: 2em; font-size: 0.875em; line-height: 1.71429; }
+.deck-read :is(.prose) :where(thead):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 1px; border-bottom-color: var(--un-prose-th-borders); }
+.deck-read :is(.prose) :where(thead th):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-headings); font-weight: 600; vertical-align: bottom; padding-inline: 0.571429em; padding-bottom: 0.571429em; }
+.deck-read :is(.prose) :where(tbody tr):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 1px; border-bottom-color: var(--un-prose-td-borders); }
+.deck-read :is(.prose) :where(tbody tr:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-bottom-width: 0px; }
+.deck-read :is(.prose) :where(tbody td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { vertical-align: baseline; }
+.deck-read :is(.prose) :where(tfoot):not(:where([class~="not-prose"], [class~="not-prose"] *)) { border-top-width: 1px; border-top-color: var(--un-prose-th-borders); }
+.deck-read :is(.prose) :where(tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { vertical-align: top; }
+.deck-read :is(.prose) :where(th, td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { text-align: start; }
+.deck-read :is(.prose) :where(figure > *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }
+.deck-read :is(.prose) :where(figcaption):not(:where([class~="not-prose"], [class~="not-prose"] *)) { color: var(--un-prose-captions); font-size: 0.875em; line-height: 1.42857; margin-top: 0.857143em; }
+.deck-read :is(.prose) { font-size: 1rem; line-height: 1.75; }
+.deck-read :is(.prose) :where(picture > img):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; margin-bottom: 0px; }
+.deck-read :is(.prose) :where(li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.5em; margin-bottom: 0.5em; }
+.deck-read :is(.prose) :where(ol > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0.375em; }
+.deck-read :is(.prose) :where(ul > li):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0.375em; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.75em; margin-bottom: 0.75em; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.25em; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 1.25em; }
+.deck-read :is(.prose) :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.75em; margin-bottom: 0.75em; }
+.deck-read :is(.prose) :where(dl):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 1.25em; margin-bottom: 1.25em; }
+.deck-read :is(.prose) :where(dd):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0.5em; padding-inline-start: 1.625em; }
+.deck-read :is(.prose) :where(hr + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }
+.deck-read :is(.prose) :where(h2 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }
+.deck-read :is(.prose) :where(h3 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }
+.deck-read :is(.prose) :where(h4 + *):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }
+.deck-read :is(.prose) :where(thead th:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }
+.deck-read :is(.prose) :where(thead th:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }
+.deck-read :is(.prose) :where(tbody td, tfoot td):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-top: 0.571429em; padding-inline: 0.571429em; padding-bottom: 0.571429em; }
+.deck-read :is(.prose) :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-start: 0px; }
+.deck-read :is(.prose) :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"], [class~="not-prose"] *)) { padding-inline-end: 0px; }
+.deck-read :is(.prose) :where(figure):not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 2em; margin-bottom: 2em; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-top: 0px; }
+.deck-read :is(.prose) :where():not(:where([class~="not-prose"], [class~="not-prose"] *)) { margin-bottom: 0px; }
+.deck-read :is(.prose) { --un-prose-body: #374151; --un-prose-invert-body: #d1d5db; --un-prose-headings: #111827; --un-prose-invert-headings: white; --un-prose-lead: #4b5563; --un-prose-invert-lead: #9ca3af; --un-prose-links: #111827; --un-prose-invert-links: white; --un-prose-bold: #111827; --un-prose-invert-bold: white; --un-prose-counters: #6b7280; --un-prose-invert-counters: #9ca3af; --un-prose-bullets: #d1d5db; --un-prose-invert-bullets: #4b5563; --un-prose-hr: #e5e7eb; --un-prose-invert-hr: #374151; --un-prose-quotes: #111827; --un-prose-invert-quotes: #f3f4f6; --un-prose-quote-borders: #e5e7eb; --un-prose-invert-quote-borders: #374151; --un-prose-captions: #6b7280; --un-prose-invert-captions: #9ca3af; --un-prose-kbd: #111827; --un-prose-invert-kbd: white; --un-prose-kbd-shadows: #111827; --un-prose-invert-kbd-shadows: white; --un-prose-code: #111827; --un-prose-invert-code: white; --un-prose-pre-code: #e5e7eb; --un-prose-invert-pre-code: #d1d5db; --un-prose-pre-bg: #1f2937; --un-prose-invert-pre-bg: rgb(0 0 0 / 50%); --un-prose-th-borders: #d1d5db; --un-prose-invert-th-borders: #4b5563; --un-prose-td-borders: #e5e7eb; --un-prose-invert-td-borders: #374151; }
+.deck-read.dark :is(.dark\:prose-invert) { --un-prose-body: var(--un-prose-invert-body); --un-prose-headings: var(--un-prose-invert-headings); --un-prose-lead: var(--un-prose-invert-lead); --un-prose-links: var(--un-prose-invert-links); --un-prose-bold: var(--un-prose-invert-bold); --un-prose-counters: var(--un-prose-invert-counters); --un-prose-bullets: var(--un-prose-invert-bullets); --un-prose-hr: var(--un-prose-invert-hr); --un-prose-quotes: var(--un-prose-invert-quotes); --un-prose-quote-borders: var(--un-prose-invert-quote-borders); --un-prose-captions: var(--un-prose-invert-captions); --un-prose-kbd: var(--un-prose-invert-kbd); --un-prose-kbd-shadows: var(--un-prose-invert-kbd-shadows); --un-prose-code: var(--un-prose-invert-code); --un-prose-pre-code: var(--un-prose-invert-pre-code); --un-prose-pre-bg: var(--un-prose-invert-pre-bg); --un-prose-th-borders: var(--un-prose-invert-th-borders); --un-prose-td-borders: var(--un-prose-invert-td-borders); }
+.deck-read .container { width: 100%; }
+.deck-read .abs-br { position: absolute; bottom: 0px; right: 0px; }
+.deck-read .z-camera { z-index: 15; }
+.deck-read .z-context-menu { z-index: 60; }
+.deck-read .z-dragging { z-index: 18; }
+.deck-read .z-label,.deck-read [z-label=""] { z-index: 40; }
+.deck-read .z-menu { z-index: 20; }
+.deck-read .z-modal { z-index: 70; }
+.deck-read .z-nav { z-index: 50; }
+.deck-read .slidev-glass-effect { border-width: 1px; border-color: rgba(156, 163, 175, 0.2); background-color: rgb(255 255 255 / var(--un-bg-opacity)); --un-shadow: var(--un-shadow-inset) 0 20px 25px -5px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 8px 10px -6px var(--un-shadow-color, rgb(0 0 0 / .1)); box-shadow: var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow); --un-backdrop-blur: blur(8px); backdrop-filter: var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia); --un-bg-opacity: .75 !important; }
+.deck-read .border-main,.deck-read.dark [border~="dark:main"],.deck-read.dark [dark\:border~="main"],.deck-read [border-main=""],.deck-read [border~="main"] { border-color: rgba(156, 163, 175, 0.2); }
+.deck-read .border-primary,.deck-read .hover\:border-primary:hover { border-color: var(--slidev-theme-primary); }
+.deck-read .bg-active { background-color: rgba(156, 163, 175, 0.1); }
+.deck-read .bg-main,.deck-read [bg-main=""] { --un-bg-opacity: 1; background-color: rgb(255 255 255 / var(--un-bg-opacity)); }
+.deck-read.dark .bg-main,.deck-read.dark .slidev-glass-effect,.deck-read.dark [bg-main=""] { --un-bg-opacity: 1; background-color: rgb(18 18 18 / var(--un-bg-opacity)); }
+.deck-read .bg-primary,.deck-read [bg-primary=""] { background-color: var(--slidev-theme-primary); }
+.deck-read .hover\:bg-active:hover,.deck-read [hover\:bg-active=""]:hover { background-color: rgba(156, 163, 175, 0.1); }
+.deck-read.dark .text-main,.deck-read.dark [text-main=""] { --un-text-opacity: 1; color: rgb(221 221 221 / var(--un-text-opacity)); }
+.deck-read .text-main,.deck-read [text-main=""] { --un-text-opacity: 1; color: rgb(24 24 24 / var(--un-text-opacity)); }
+.deck-read .text-primary,.deck-read [text-primary=""] { color: var(--slidev-theme-primary); }
+@media print {
+ .deck-read .print-container { width: 100%; }
+}
+@media (min-width: 640px) {
+ .deck-read .container { max-width: 640px; }
+}
+@media (min-width: 640px) {
+ @media print {
+ .deck-read .print-container { max-width: 640px; }
+}
+}
+@media (min-width: 768px) {
+ .deck-read .container { max-width: 768px; }
+}
+@media (min-width: 768px) {
+ @media print {
+ .deck-read .print-container { max-width: 768px; }
+}
+}
+@media (min-width: 1024px) {
+ .deck-read .container { max-width: 1024px; }
+}
+@media (min-width: 1024px) {
+ @media print {
+ .deck-read .print-container { max-width: 1024px; }
+}
+}
+@media (min-width: 1280px) {
+ .deck-read .container { max-width: 1280px; }
+}
+@media (min-width: 1280px) {
+ @media print {
+ .deck-read .print-container { max-width: 1280px; }
+}
+}
+@media (min-width: 1536px) {
+ .deck-read .container { max-width: 1536px; }
+}
+@media (min-width: 1536px) {
+ @media print {
+ .deck-read .print-container { max-width: 1536px; }
+}
+}
+.deck-read { --slidev-code-background: #f5f5f5; --slidev-code-foreground: #1b1b1b; --slidev-code-font-family: "Victor Mono",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace; --slidev-code-padding: 8px; --slidev-code-font-size: 12px; --slidev-code-line-height: 18px; --slidev-code-radius: 4px; --slidev-code-margin: 4px 0; --slidev-theme-primary: #3ab9d5; --slidev-transition-duration: .5s; --slidev-slide-container-background: black; --slidev-controls-foreground: white; --slidev-code-tab-divider: #e5e5e5; --slidev-code-tab-text-color: #67676c; --slidev-code-tab-font-size: 12px; --slidev-code-tab-active-text-color: #3c3c43; }
+.deck-read.dark { --slidev-code-background: #1b1b1b; --slidev-code-foreground: #eee; --slidev-code-tab-divider: #222222; --slidev-code-tab-text-color: #98989f; --slidev-code-tab-active-text-color: #dfdfd6; }
+.deck-read,.deck-read,.deck-read #app,.deck-read #page-root { padding: 0px; margin: 0px; print-color-adjust: exact; --un-bg-opacity: 1; background-color: rgb(255 255 255 / var(--un-bg-opacity)); font-family: "Avenir Next", "Nunito Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }
+.deck-read.dark html:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read.dark body:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read.dark #app,.deck-read.dark #page-root { --un-bg-opacity: 1; background-color: rgb(18 18 18 / var(--un-bg-opacity)); }
+.deck-read { background: transparent; }
+.deck-read .slidev-icon-btn { aspect-ratio: 1 / 1; user-select: none; outline: none; cursor: pointer; position: relative; display: inline-flex; align-items: center; justify-content: center; border-radius: 0.25rem; padding: 0.25rem; vertical-align: middle; opacity: 0.75; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-duration: 0.2s; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }
+@media (min-width: 768px) {
+ .deck-read .slidev-icon-btn { padding: 0.5rem; }
+}
+.deck-read .slidev-icon-btn:hover { background-color: rgb(156 163 175 / var(--un-bg-opacity)); --un-bg-opacity: .1; opacity: 1; }
+.deck-read .slidev-icon-btn:focus-visible { opacity: 1; outline-width: 2px; --un-outline-color-opacity: 1; outline-color: rgb(0 0 0 / var(--un-outline-color-opacity)); outline-offset: 2px; outline-style: solid; }
+.deck-read.dark .slidev-icon-btn:focus-visible { --un-outline-color-opacity: 1; outline-color: rgb(255 255 255 / var(--un-outline-color-opacity)); }
+.deck-read .slidev-icon-btn.shallow { opacity: 0.3; }
+.deck-read .slidev-icon-btn.active { opacity: 1; }
+.deck-read .slidev-icon-btn.disabled { opacity: 0.25; pointer-events: none; }
+.deck-read .slidev-layout a.slidev-icon-btn { border-style: none; }
+.deck-read .slidev-layout a.slidev-icon-btn:hover { border-style: none; --un-text-opacity: 1; color: rgb(255 255 255 / var(--un-text-opacity)); }
+.deck-read .slidev-vclick-target { transition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 0.1s; }
+.deck-read .slidev-vclick-hidden { opacity: 0 !important; pointer-events: none !important; user-select: none !important; }
+.deck-read .slidev-vclick-display-none { display: none !important; }
+.deck-read .slidev-vclick-fade { opacity: 0.5; }
+.deck-read .slidev-icon { display: inline-block; vertical-align: sub; line-height: 1em; }
+.deck-read .slidev-page { position: relative; top: 0px; left: 0px; right: 0px; width: 100%; }
+.deck-read .slidev-note-with-clicks .slidev-note-fade { color: rgba(136, 136, 136, 0.8); }
+.deck-read.dark .slidev-note-with-clicks .slidev-note-fade { color: rgba(161, 161, 161, 0.8); }
+.deck-read .slidev-note-click-mark { user-select: none; font-size: 0.7em; display: inline-flex; align-items: center; border-width: 1px; border-color: transparent; border-radius: 0.25rem; background-color: rgba(167, 139, 250, 0.1); padding-left: 0.25rem; padding-right: 0.25rem; --un-text-opacity: 1; color: rgb(167 139 250 / var(--un-text-opacity)); font-family: "Victor Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }
+.deck-read .slidev-note-click-mark.slidev-note-click-mark-active { border-width: 1px; --un-border-opacity: 1; border-color: rgb(167 139 250 / var(--un-border-opacity)); }
+.deck-read .slidev-note-click-mark.slidev-note-click-mark-past { filter: saturate(0); opacity: 0.5; }
+.deck-read .slidev-note-click-mark.slidev-note-click-mark-future { opacity: 0.5; }
+.deck-read .slidev-note-click-mark::before { content: ""; display: inline-block; --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M23 28a1 1 0 0 1-.71-.29l-6.13-6.14l-3.33 5a1 1 0 0 1-1 .44a1 1 0 0 1-.81-.7l-6-20A1 1 0 0 1 6.29 5l20 6a1 1 0 0 1 .7.81a1 1 0 0 1-.44 1l-5 3.33l6.14 6.13a1 1 0 0 1 0 1.42l-4 4A1 1 0 0 1 23 28m0-2.41L25.59 23l-7.16-7.15l5.25-3.5L7.49 7.49l4.86 16.19l3.5-5.25Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1.2em; height: 1.2em; opacity: 0.8; }
+.deck-read .slidev-note-click-mark::after { content: attr(data-clicks); display: inline-block; transform: translateY(0.1em); }
+.deck-read .slidev-form-button { border-bottom-width: 2px; border-radius: 0.25rem; padding: 0.25rem 1rem; --un-text-opacity: 1; color: rgb(255 255 255 / var(--un-text-opacity)); --un-border-opacity: 1; border-color: rgb(55 65 81 / var(--un-border-opacity)); --un-bg-opacity: 1; background-color: rgb(107 114 128 / var(--un-bg-opacity)); }
+.deck-read .slidev-form-button:hover { --un-border-opacity: 1; border-color: rgb(75 85 99 / var(--un-border-opacity)); --un-bg-opacity: 1; background-color: rgb(156 163 175 / var(--un-bg-opacity)); }
+.deck-read .slidev-form-button.primary { --un-border-opacity: 1; border-color: rgb(17 94 89 / var(--un-border-opacity)); --un-bg-opacity: 1; background-color: rgb(13 148 136 / var(--un-bg-opacity)); }
+.deck-read .slidev-form-button.primary:hover { --un-border-opacity: 1; border-color: rgb(15 118 110 / var(--un-border-opacity)); --un-bg-opacity: 1; background-color: rgb(20 184 166 / var(--un-bg-opacity)); }
+.deck-read .rough-annotation { transform: scale(calc(1 / var(--slidev-slide-scale))); }
+.deck-read .slidev-note ul:not(:where([class*="gloss-"],[class*="deck-"])) { margin: 0px; }
+.deck-read.dark :root { color-scheme: dark; }
+.deck-read.dark .shiki { color: var(--shiki-dark, inherit); --twoslash-popup-bg: var(--shiki-dark-bg, inherit); }
+.deck-read.dark .shiki span:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--shiki-dark); }
+.deck-read html:not(.dark) .shiki { color: var(--shiki-light, inherit); --twoslash-popup-bg: var(--shiki-light-bg, inherit); }
+.deck-read html:not(.dark) .shiki span:not(:where([class*="gloss-"],[class*="deck-"])) { color: var(--shiki-light); }
+.deck-read .slidev-code-wrapper { scroll-padding: var(--slidev-code-padding); margin: var(--slidev-code-margin) !important; }
+.deck-read .slidev-code { background: var(--slidev-code-background); overflow: auto; font-family: var(--slidev-code-font-family) !important; padding: var(--slidev-code-padding) !important; font-size: var(--slidev-code-font-size) !important; line-height: var(--slidev-code-line-height) !important; border-radius: var(--slidev-code-radius) !important; }
+.deck-read .slidev-code-block-title,.deck-read .slidev-code-group-tabs { background: var(--slidev-code-background); color: var(--slidev-code-tab-text-color); padding-left: var(--slidev-code-padding); padding-right: var(--slidev-code-padding); font-size: var(--slidev-code-tab-font-size); border-radius: var(--slidev-code-radius) var(--slidev-code-radius) 0 0; box-shadow: inset 0 -1px var(--slidev-code-tab-divider); display: flex; gap: 8px; align-items: center; }
+.deck-read .slidev-code-block-title { padding: var(--slidev-code-padding); }
+.deck-read .slidev-code-tab { font-size: var(--slidev-code-tab-font-size); white-space: nowrap; cursor: pointer; transition: color 0.25s; padding: var(--slidev-code-padding); border-bottom: 2px solid transparent; color: var(--slidev-code-tab-text-color); position: relative; display: flex; align-items: center; gap: 8px; }
+.deck-read .slidev-code-tab:hover { color: var(--slidev-code-tab-active-text-color) !important; }
+.deck-read .slidev-code-group-blocks .slidev-code-wrapper { margin: 0px !important; }
+.deck-read .slidev-code-group-blocks .slidev-code { border-radius: 0 0 var(--slidev-code-radius) var(--slidev-code-radius) !important; }
+.deck-read .slidev-code-group-blocks .slidev-code-wrapper.active { display: block; }
+.deck-read .slidev-code-group-blocks .slidev-code-wrapper { display: none; }
+.deck-read .slidev-code-block-title + .slidev-code,.deck-read .slidev-code-group-tabs + .slidev-code { border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; }
+.deck-read .slidev-code .slidev-code-dishonored { opacity: 0.3; pointer-events: none; }
+.deck-read .slidev-code-line-numbers .slidev-code code:not(:where([class*="gloss-"],[class*="deck-"])) { counter-reset: step 0; counter-increment: step calc(var(--start, 1) - 1); }
+.deck-read .slidev-code-line-numbers .slidev-code code .line::before { content: counter(step); counter-increment: step 1; display: inline-block; text-align: right; margin-right: 1.5rem; width: 1rem; --un-text-opacity: 1; color: rgb(156 163 175 / var(--un-text-opacity)); }
+.deck-read.dark .slidev-code-line-numbers .slidev-code code .line::before { --un-text-opacity: 1; color: rgb(75 85 99 / var(--un-text-opacity)); }
+.deck-read .slidev-note :not(pre) > code:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .slidev-layout :not(pre) > code:not(:where([class*="gloss-"],[class*="deck-"])) { font-size: 0.9em; background: var(--slidev-code-background); border-radius: var(--slidev-code-radius); padding: 0.125rem 0.375rem; font-weight: 300; }
+.deck-read .slidev-note :not(pre) > code::after,.deck-read .slidev-note :not(pre) > code::before { content: ""; }
+.deck-read .slidev-layout :not(pre) > code::before { margin-right: -0.08em; }
+.deck-read .slide-left-enter-active,.deck-read .slide-left-leave-active,.deck-read .slide-right-enter-active,.deck-read .slide-right-leave-active,.deck-read .slide-up-enter-active,.deck-read .slide-up-leave-active,.deck-read .slide-down-enter-active,.deck-read .slide-down-leave-active { transition: all var(--slidev-transition-duration) ease; }
+.deck-read .slide-left-enter-from,.deck-read .slide-right-leave-to { translate: 100%; }
+.deck-read .slide-left-leave-to,.deck-read .slide-right-enter-from { translate: -100%; }
+.deck-read .slide-up-enter-from,.deck-read .slide-down-leave-to { translate: 0px 100%; }
+.deck-read .slide-up-leave-to,.deck-read .slide-down-enter-from { translate: 0px -100%; }
+.deck-read .fade-enter-active,.deck-read .fade-leave-active { transition: opacity var(--slidev-transition-duration) ease; }
+.deck-read .fade-enter-from,.deck-read .fade-leave-to { opacity: 0; }
+.deck-read .fade-out-leave-active { transition: opacity calc(var(--slidev-transition-duration) * .6) ease-out; }
+.deck-read .fade-out-enter-active { transition-property: ; transition-duration: ; transition-timing-function: ; transition-behavior: ; transition-delay: calc(var(--slidev-transition-duration) * .6); }
+.deck-read .fade-out-enter-from,.deck-read .fade-out-leave-to { opacity: 0; }
+.deck-read { --twoslash-popup-bg: var(--slidev-code-background); --twoslash-popup-color: var(--slidev-code-foreground); --twoslash-docs-color: inherit; --twoslash-docs-font: inherit; --twoslash-code-font: "Victor Mono",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace; --twoslash-underline-color: #8888; --twoslash-border-color: #8888; --twoslash-cursor-color: var(--slidev-theme-primary); --twoslash-matched-color: var(--slidev-theme-primary); }
+.deck-read .shiki-magic-move-container { position: relative; white-space: pre; }
+.deck-read .shiki-magic-move-line-number { opacity: 0.3; user-select: none; }
+.deck-read .shiki-magic-move-item { display: inline-block; transition: color var(--smm-duration,.5s) var(--smm-easing,"ease"); }
+.deck-read .shiki-magic-move-enter-active,.deck-read .shiki-magic-move-leave-active,.deck-read .shiki-magic-move-move { transition: all var(--smm-duration,.5s) var(--smm-easing,"ease"); }
+.deck-read .shiki-magic-move-container-resize,.deck-read .shiki-magic-move-container-restyle { transition-property: ; transition-duration: ; transition-timing-function: ; transition-behavior: ; transition-delay: calc(var(--smm-duration, .5s)*var(--smm-delay-container, 1)); }
+.deck-read .shiki-magic-move-move { transition-delay: calc(var(--smm-duration, .5s)*var(--smm-delay-move, 1) + var(--smm-stagger, 0)); z-index: 1; }
+.deck-read .shiki-magic-move-enter-active { transition-delay: calc(var(--smm-duration, .5s)*var(--smm-delay-enter, 1) + var(--smm-stagger, 0)); z-index: 1; }
+.deck-read .shiki-magic-move-leave-active { transition-delay: calc(var(--smm-duration, .5s)*var(--smm-delay-leave, 1) + var(--smm-stagger, 0)); }
+.deck-read .shiki-magic-move-enter-from,.deck-read .shiki-magic-move-leave-to { opacity: 0; }
+.deck-read br.shiki-magic-move-leave-active { display: none; }
+.deck-read .i-carbon-camera { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M29 26H3a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h6.46l1.71-2.55A1 1 0 0 1 12 4h8a1 1 0 0 1 .83.45L22.54 7H29a1 1 0 0 1 1 1v17a1 1 0 0 1-1 1M4 24h24V9h-6a1 1 0 0 1-.83-.45L19.46 6h-6.92l-1.71 2.55A1 1 0 0 1 10 9H4Z'/%3E%3Cpath fill='currentColor' d='M16 22a6 6 0 1 1 6-6a6 6 0 0 1-6 6m0-10a4 4 0 1 0 4 4a4 4 0 0 0-4-4'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:apps { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M8 4v4H4V4Zm2-2H2v8h8Zm8 2v4h-4V4Zm2-2h-8v8h8Zm8 2v4h-4V4Zm2-2h-8v8h8ZM8 14v4H4v-4Zm2-2H2v8h8Zm8 2v4h-4v-4Zm2-2h-8v8h8Zm8 2v4h-4v-4Zm2-2h-8v8h8ZM8 24v4H4v-4Zm2-2H2v8h8Zm8 2v4h-4v-4Zm2-2h-8v8h8Zm8 2v4h-4v-4Zm2-2h-8v8h8Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:arrow-down { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M24.59 16.59L17 24.17V4h-2v20.17l-7.59-7.58L6 18l10 10l10-10z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:arrow-left { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m14 26l1.41-1.41L7.83 17H28v-2H7.83l7.58-7.59L14 6L4 16z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:arrow-right { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m18 6l-1.43 1.393L24.15 15H4v2h20.15l-7.58 7.573L18 26l10-10z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:arrow-up { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 4L6 14l1.41 1.41L15 7.83V28h2V7.83l7.59 7.58L26 14z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:arrow-up-right { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M10 6v2h12.59L6 24.59L7.41 26L24 9.41V22h2V6z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:catalog { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 2H8a2 2 0 0 0-2 2v4H4v2h2v5H4v2h2v5H4v2h2v4a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2m0 26H8v-4h2v-2H8v-5h2v-2H8v-5h2V8H8V4h18Z'/%3E%3Cpath fill='currentColor' d='M14 8h8v2h-8zm0 7h8v2h-8zm0 7h8v2h-8z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:checkbox { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M6 26V6h20v20Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:checkmark { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m13 24l-9-9l1.414-1.414L13 21.171L26.586 7.586L28 9z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:chevron-up,.deck-read [i-carbon\:chevron-up=""] { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m16 10l10 10l-1.4 1.4l-8.6-8.6l-8.6 8.6L6 20z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:cics-program { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m20.17 19l-2.59 2.59L19 23l4-4l-4-4l-1.42 1.41zm-8.34 0l2.59-2.59L13 15l-4 4l4 4l1.42-1.41z'/%3E%3Ccircle cx='9' cy='8' r='1' fill='currentColor'/%3E%3Ccircle cx='6' cy='8' r='1' fill='currentColor'/%3E%3Cpath fill='currentColor' d='M28 4H4c-1.103 0-2 .898-2 2v20c0 1.103.897 2 2 2h24c1.103 0 2-.897 2-2V6c0-1.102-.897-2-2-2m0 2v4H4V6zM4 26V12h24v14z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:close { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M17.414 16L24 9.414L22.586 8L16 14.586L9.414 8L8 9.414L14.586 16L8 22.586L9.414 24L16 17.414L22.586 24L24 22.586z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:close-outline { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 2C8.2 2 2 8.2 2 16s6.2 14 14 14s14-6.2 14-14S23.8 2 16 2m0 26C9.4 28 4 22.6 4 16S9.4 4 16 4s12 5.4 12 12s-5.4 12-12 12'/%3E%3Cpath fill='currentColor' d='M21.4 23L16 17.6L10.6 23L9 21.4l5.4-5.4L9 10.6L10.6 9l5.4 5.4L21.4 9l1.6 1.6l-5.4 5.4l5.4 5.4z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:cursor-1 { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M23 28a1 1 0 0 1-.71-.29l-6.13-6.14l-3.33 5a1 1 0 0 1-1 .44a1 1 0 0 1-.81-.7l-6-20A1 1 0 0 1 6.29 5l20 6a1 1 0 0 1 .7.81a1 1 0 0 1-.44 1l-5 3.33l6.14 6.13a1 1 0 0 1 0 1.42l-4 4A1 1 0 0 1 23 28m0-2.41L25.59 23l-7.16-7.15l5.25-3.5L7.49 7.49l4.86 16.19l3.5-5.25Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:document-pdf { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M30 18v-2h-6v10h2v-4h3v-2h-3v-2zm-11 8h-4V16h4a3.003 3.003 0 0 1 3 3v4a3.003 3.003 0 0 1-3 3m-2-2h2a1 1 0 0 0 1-1v-4a1 1 0 0 0-1-1h-2zm-6-8H6v10h2v-3h3a2.003 2.003 0 0 0 2-2v-3a2 2 0 0 0-2-2m-3 5v-3h3l.001 3z'/%3E%3Cpath fill='currentColor' d='M22 14v-4a.91.91 0 0 0-.3-.7l-7-7A.9.9 0 0 0 14 2H4a2.006 2.006 0 0 0-2 2v24a2 2 0 0 0 2 2h16v-2H4V4h8v6a2.006 2.006 0 0 0 2 2h6v2Zm-8-4V4.4l5.6 5.6Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:download { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 24v4H6v-4H4v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2v-4zm0-10l-1.41-1.41L17 20.17V2h-2v18.17l-7.59-7.58L6 14l10 10z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:drop-photo { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M19 26a4 4 0 1 1 4-4a4.005 4.005 0 0 1-4 4m0-6a2 2 0 1 0 2 2a2 2 0 0 0-2-2'/%3E%3Cpath fill='currentColor' d='M27 29H11a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2h3.28l.543-1.632A2 2 0 0 1 16.721 13h4.558a2 2 0 0 1 1.898 1.368L23.72 16H27a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2m-16-2h16v-9h-4.72l-1-3h-4.56l-1 3H11zm16-16h2v2h-2zm0-4h2v2h-2zm0-4h2v2h-2zm-4 0h2v2h-2zm-4 0h2v2h-2zm-4 0h2v2h-2zm-4 0h2v2h-2zM7 3h2v2H7zM3 3h2v2H3zm0 4h2v2H3zm0 4h2v2H3zm0 4h2v2H3zm0 4h2v2H3zm0 4h2v2H3zm0 4h2v2H3z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:edit { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M2 26h28v2H2zM25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4zm-5-5L24 7.6l-3 3L17.4 7zM6 22v-3.6l10-10l3.6 3.6l-10 10z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:erase { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7 27h23v2H7zm20.38-16.49l-7.93-7.92a2 2 0 0 0-2.83 0l-14 14a2 2 0 0 0 0 2.83L7.13 24h9.59l10.66-10.66a2 2 0 0 0 0-2.83M15.89 22H8l-4-4l6.31-6.31l7.93 7.92zm3.76-3.76l-7.92-7.93L18 4l8 7.93z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:error { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M2 16A14 14 0 1 0 16 2A14 14 0 0 0 2 16m23.15 7.75L8.25 6.85a12 12 0 0 1 16.9 16.9M8.24 25.16a12 12 0 0 1-1.4-16.89l16.89 16.89a12 12 0 0 1-15.49 0'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:help { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 2a14 14 0 1 0 14 14A14 14 0 0 0 16 2m0 26a12 12 0 1 1 12-12a12 12 0 0 1-12 12'/%3E%3Ccircle cx='16' cy='23.5' r='1.5' fill='currentColor'/%3E%3Cpath fill='currentColor' d='M17 8h-1.5a4.49 4.49 0 0 0-4.5 4.5v.5h2v-.5a2.5 2.5 0 0 1 2.5-2.5H17a2.5 2.5 0 0 1 0 5h-2v4.5h2V17a4.5 4.5 0 0 0 0-9'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:information { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M17 22v-8h-4v2h2v6h-3v2h8v-2zM16 8a1.5 1.5 0 1 0 1.5 1.5A1.5 1.5 0 0 0 16 8'/%3E%3Cpath fill='currentColor' d='M16 30a14 14 0 1 1 14-14a14 14 0 0 1-14 14m0-26a12 12 0 1 0 12 12A12 12 0 0 0 16 4'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:list-boxes { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 8h14v2H16zm0 14h14v2H16zm-6-8H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2M4 6v6h6.001L10 6zm6 22H4a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2m-6-8v6h6.001L10 20z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:maximize { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M20 2v2h6.586L18 12.582L19.414 14L28 5.414V12h2V2zm-6 17.416L12.592 18L4 26.586V20H2v10h10v-2H5.414z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:minimize { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M4 18v2h6.586L2 28.582L3.414 30L12 21.414V28h2V18zM30 3.416L28.592 2L20 10.586V4h-2v10h10v-2h-6.586z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:pause { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 8v16H8V8zm0-2H8a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2m12 2v16h-4V8zm0-2h-4a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:pen { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M27.307 6.107L30 3.414L28.586 2l-2.693 2.693L24.8 3.6a1.933 1.933 0 0 0-2.8 0l-18 18V28h6.4l18-18a1.933 1.933 0 0 0 0-2.8ZM9.6 26H6v-3.6L23.4 5L27 8.6ZM9 11.586L16.586 4L18 5.414L10.414 13z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:pin { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M28.59 13.31L30 11.9L20 2l-1.31 1.42l1.18 1.18l-11.49 9.72l-1.72-1.71L5.25 14l5.66 5.68L2 28.58L3.41 30l8.91-8.91L18 26.75l1.39-1.42l-1.71-1.71l9.72-11.49ZM16.26 22.2L9.8 15.74L21.29 6L26 10.71Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:pin-filled { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M28.586 13.314L30 11.9L20 2l-1.314 1.415l1.186 1.186L8.38 14.322l-1.716-1.715L5.25 14l5.657 5.677L2 28.583L3.41 30l8.911-8.909L18 26.748l1.393-1.414l-1.716-1.716l9.724-11.49Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:play { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28M8 6.69v18.62L24.925 16Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:presentation-file { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M15 10h2v8h-2zm5 4h2v4h-2zm-10-2h2v6h-2z'/%3E%3Cpath fill='currentColor' d='M25 4h-8V2h-2v2H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8v6h-4v2h10v-2h-4v-6h8a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 16H7V6h18Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:radio-button { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 2a14 14 0 1 0 14 14A14 14 0 0 0 16 2m0 26a12 12 0 1 1 12-12a12 12 0 0 1-12 12'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:redo { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 10h12.185l-3.587-3.586L22 5l6 6l-6 6l-1.402-1.415L24.182 12H12a6 6 0 0 0 0 12h8v2h-8a8 8 0 0 1 0-16'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:renew { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 10H6.78A11 11 0 0 1 27 16h2A13 13 0 0 0 6 7.68V4H4v8h8zm8 12h5.22A11 11 0 0 1 5 16H3a13 13 0 0 0 23 8.32V28h2v-8h-8z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:settings-adjust { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M30 8h-4.1c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2v2h14.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30zm-9 4c-1.7 0-3-1.3-3-3s1.3-3 3-3s3 1.3 3 3s-1.3 3-3 3M2 24h4.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30v-2H15.9c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2zm9-4c1.7 0 3 1.3 3 3s-1.3 3-3 3s-3-1.3-3-3s1.3-3 3-3'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:stop-outline { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 4A12 12 0 1 1 4 16A12 12 0 0 1 16 4m0-2a14 14 0 1 0 14 14A14 14 0 0 0 16 2'/%3E%3Cpath fill='currentColor' d='M20 12v8h-8v-8zm0-2h-8a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-8a2 2 0 0 0-2-2'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:template { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M26 6v4H6V6zm0-2H6a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2M10 16v10H6V16zm0-2H6a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2V16a2 2 0 0 0-2-2m16 2v10H16V16zm0-2H16a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V16a2 2 0 0 0-2-2'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:text-annotation-toggle { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath d='M29.537 13.76l-3.297-3.297a1.586 1.586 0 0 0-2.24 0L10 24.467V30h5.533l14.004-14a1.586 1.586 0 0 0 0-2.24zM14.704 28H12v-2.704l9.44-9.441l2.705 2.704zM25.56 17.145l-2.704-2.704l2.267-2.267l2.704 2.704z' fill='currentColor'/%3E%3Cpath d='M11 17h2v-7h3V8H8v2h3v7z' fill='currentColor'/%3E%3Cpath d='M8 20H4V4h16v4h2V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4z' fill='currentColor'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:time { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 30a14 14 0 1 1 14-14a14 14 0 0 1-14 14m0-26a12 12 0 1 0 12 12A12 12 0 0 0 16 4'/%3E%3Cpath fill='currentColor' d='M20.59 22L15 16.41V7h2v8.58l5 5.01z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:timer { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M15 11h2v9h-2zm-2-9h6v2h-6z'/%3E%3Cpath fill='currentColor' d='m28 9l-1.42-1.41l-2.25 2.25a10.94 10.94 0 1 0 1.18 1.65ZM16 26a9 9 0 1 1 9-9a9 9 0 0 1-9 9'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:trash-can { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 12h2v12h-2zm6 0h2v12h-2z'/%3E%3Cpath fill='currentColor' d='M4 6v2h2v20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8h2V6zm4 22V8h16v20zm4-26h8v2h-8z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:undo { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M20 10H7.815l3.587-3.586L10 5l-6 6l6 6l1.402-1.415L7.818 12H20a6 6 0 0 1 0 12h-8v2h8a8 8 0 0 0 0-16'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:user-avatar { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 8a5 5 0 1 0 5 5a5 5 0 0 0-5-5m0 8a3 3 0 1 1 3-3a3.003 3.003 0 0 1-3 3'/%3E%3Cpath fill='currentColor' d='M16 2a14 14 0 1 0 14 14A14.016 14.016 0 0 0 16 2m-6 24.377V25a3.003 3.003 0 0 1 3-3h6a3.003 3.003 0 0 1 3 3v1.377a11.9 11.9 0 0 1-12 0m13.993-1.451A5 5 0 0 0 19 20h-6a5 5 0 0 0-4.992 4.926a12 12 0 1 1 15.985 0'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:user-speaker { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M29.415 19L27.7 17.285A3 3 0 0 0 28 16a3 3 0 1 0-3 3a3 3 0 0 0 1.286-.3L28 20.414V28h-6v-3a7.01 7.01 0 0 0-7-7H9a7.01 7.01 0 0 0-7 7v5h28v-9.586A2 2 0 0 0 29.415 19M4 25a5.006 5.006 0 0 1 5-5h6a5.006 5.006 0 0 1 5 5v3H4Z'/%3E%3Cpath fill='currentColor' d='M12 4a5 5 0 1 1-5 5a5 5 0 0 1 5-5m0-2a7 7 0 1 0 7 7a7 7 0 0 0-7-7'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:video { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M21 26H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h17a2 2 0 0 1 2 2v4.06l5.42-3.87A1 1 0 0 1 30 9v14a1 1 0 0 1-1.58.81L23 19.94V24a2 2 0 0 1-2 2M4 8v16h17v-6a1 1 0 0 1 1.58-.81L28 21.06V10.94l-5.42 3.87A1 1 0 0 1 21 14V8Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:zoom-in { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M18 12h-4V8h-2v4H8v2h4v4h2v-4h4z'/%3E%3Cpath fill='currentColor' d='M21.448 20A10.86 10.86 0 0 0 24 13a11 11 0 1 0-11 11a10.86 10.86 0 0 0 7-2.552L27.586 29L29 27.586ZM13 22a9 9 0 1 1 9-9a9.01 9.01 0 0 1-9 9'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-carbon\:zoom-out { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M8 12h10v2H8z'/%3E%3Cpath fill='currentColor' d='M21.448 20A10.86 10.86 0 0 0 24 13a11 11 0 1 0-11 11a10.86 10.86 0 0 0 7-2.552L27.586 29L29 27.586ZM13 22a9 9 0 1 1 9-9a9.01 9.01 0 0 1-9 9'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-ph\:arrow-down-bold { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m208.49 152.49l-72 72a12 12 0 0 1-17 0l-72-72a12 12 0 0 1 17-17L116 187V40a12 12 0 0 1 24 0v147l51.51-51.52a12 12 0 0 1 17 17Z'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-ph\:arrow-up-bold { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 256 256' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M208.49 120.49a12 12 0 0 1-17 0L140 69v147a12 12 0 0 1-24 0V69l-51.51 51.49a12 12 0 0 1-17-17l72-72a12 12 0 0 1 17 0l72 72a12 12 0 0 1 0 17'/%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .i-svg-spinners-90-ring-with-bg { --un-icon: url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z' opacity='.25'/%3E%3Cpath fill='currentColor' d='M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z'%3E%3CanimateTransform attributeName='transform' dur='0.75s' repeatCount='indefinite' type='rotate' values='0 12 12;360 12 12'/%3E%3C/path%3E%3C/svg%3E"); mask-image: ; -webkit-mask-position-x: ; -webkit-mask-position-y: ; mask-repeat: ; mask-origin: ; mask-clip: ; mask-composite: ; mask-mode: ; mask-size: 100% 100%; background-color: currentcolor; color: inherit; width: 1em; height: 1em; }
+.deck-read .sr-only { position: absolute; width: 1px; height: 1px; padding: 0px; margin: -1px; overflow: hidden; clip: rect(0px, 0px, 0px, 0px); white-space: nowrap; border-width: 0px; }
+.deck-read .pointer-events-auto { pointer-events: auto; }
+.deck-read .pointer-events-none,.deck-read [pointer-events-none=""] { pointer-events: none; }
+.deck-read .visible { visibility: visible; }
+.deck-read .absolute,.deck-read [absolute=""] { position: absolute; }
+.deck-read .fixed,.deck-read [fixed=""] { position: fixed; }
+.deck-read .relative,.deck-read [relative=""] { position: relative; }
+.deck-read .inset-0,.deck-read [inset-0=""] { inset: 0px; }
+.deck-read .-bottom-8 { bottom: -2rem; }
+.deck-read .-top-15px { top: -15px; }
+.deck-read .-top-20 { top: -5rem; }
+.deck-read .bottom-0,.deck-read [bottom-0=""] { bottom: 0px; }
+.deck-read .bottom-1,.deck-read [bottom-1=""] { bottom: 0.25rem; }
+.deck-read .bottom-10 { bottom: 2.5rem; }
+.deck-read .bottom-4 { bottom: 1rem; }
+.deck-read .bottom-5 { bottom: 1.25rem; }
+.deck-read .left-0,.deck-read [left-0=""] { left: 0px; }
+.deck-read .left-1 { left: 0.25rem; }
+.deck-read .left-1\/2 { left: 50%; }
+.deck-read .left-110\% { left: 110%; }
+.deck-read .right--2,.deck-read [right--2=""] { right: -0.5rem; }
+.deck-read .right-0,.deck-read [right-0=""] { right: 0px; }
+.deck-read .right-0\.5,.deck-read [right-0\.5=""] { right: 0.125rem; }
+.deck-read .right-1,.deck-read [right-1=""] { right: 0.25rem; }
+.deck-read .right-3 { right: 0.75rem; }
+.deck-read .right-4 { right: 1rem; }
+.deck-read .right-5,.deck-read [right-5=""] { right: 1.25rem; }
+.deck-read .top-0,.deck-read [top-0=""] { top: 0px; }
+.deck-read .top-0\.5,.deck-read [top-0\.5=""] { top: 0.125rem; }
+.deck-read .top-1\/2,.deck-read .top-50\% { top: 50%; }
+.deck-read .top-10 { top: 2.5rem; }
+.deck-read .top-4 { top: 1rem; }
+.deck-read .top-5 { top: 1.25rem; }
+.deck-read .-z-1 { z-index: -1; }
+.deck-read .z-1,.deck-read [z-1=""] { z-index: 1; }
+.deck-read .z-10,.deck-read [z-10=""] { z-index: 10; }
+.deck-read .z-200 { z-index: 200; }
+.deck-read .grid { display: grid; }
+.deck-read .grid-cols-\[1fr_max-content\] { grid-template-columns: 1fr max-content; }
+.deck-read .grid-cols-\[35px_1fr\] { grid-template-columns: 35px 1fr; }
+.deck-read .grid-rows-\[1fr_max-content\] { grid-template-rows: 1fr max-content; }
+.deck-read .grid-rows-\[1fr_min-content\] { grid-template-rows: 1fr min-content; }
+.deck-read .grid-rows-\[auto_max-content\] { grid-template-rows: auto max-content; }
+.deck-read .grid-rows-\[max-content_1fr\] { grid-template-rows: max-content 1fr; }
+.deck-read .grid-cols-2 { grid-template-columns: repeat(2, minmax(0px, 1fr)); }
+.deck-read .grid-cols-3 { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
+.deck-read .m--1,.deck-read [m--1=""] { margin: -0.25rem; }
+.deck-read .m-0,.deck-read .m0,.deck-read [m0=""] { margin: 0px; }
+.deck-read .m-1 { margin: 0.25rem; }
+.deck-read .m-4 { margin: 1rem; }
+.deck-read .m-auto,.deck-read .ma { margin: auto; }
+.deck-read .children\:my-auto > *:not(:where([class*="gloss-"],[class*="deck-"])),.deck-read .my-auto,.deck-read .mya { margin-top: auto; margin-bottom: auto; }
+.deck-read .mx--1\.2 { margin-left: -0.3rem; margin-right: -0.3rem; }
+.deck-read .mx-auto { margin-left: auto; margin-right: auto; }
+.deck-read .my-1,.deck-read .my1 { margin-top: 0.25rem; margin-bottom: 0.25rem; }
+.deck-read .my2 { margin-top: 0.5rem; margin-bottom: 0.5rem; }
+.deck-read .my4 { margin-top: 1rem; margin-bottom: 1rem; }
+.deck-read .my5 { margin-top: 1.25rem; margin-bottom: 1.25rem; }
+.deck-read .-mt-0\.5 { margin-top: -0.125rem; }
+.deck-read .-mt-3 { margin-top: -0.75rem; }
+.deck-read .mb-10 { margin-bottom: 2.5rem; }
+.deck-read .mb-2,.deck-read .mb2 { margin-bottom: 0.5rem; }
+.deck-read .mb-3 { margin-bottom: 0.75rem; }
+.deck-read .mb-4 { margin-bottom: 1rem; }
+.deck-read .mb-8 { margin-bottom: 2rem; }
+.deck-read .me { margin-inline-end: 1rem; }
+.deck-read .ml--4 { margin-left: -1rem; }
+.deck-read .ml-1 { margin-left: 0.25rem; }
+.deck-read .mr--3,.deck-read [mr--3=""] { margin-right: -0.75rem; }
+.deck-read .mr--8 { margin-right: -2rem; }
+.deck-read .mr-2 { margin-right: 0.5rem; }
+.deck-read .mr1 { margin-right: 0.25rem; }
+.deck-read .ms { margin-inline-start: 1rem; }
+.deck-read .mt-0\.5 { margin-top: 0.125rem; }
+.deck-read .mt-1,.deck-read .mt1 { margin-top: 0.25rem; }
+.deck-read .mt-10 { margin-top: 2.5rem; }
+.deck-read .mt-2 { margin-top: 0.5rem; }
+.deck-read .mt-3 { margin-top: 0.75rem; }
+.deck-read .mt-4 { margin-top: 1rem; }
+.deck-read .mt-5 { margin-top: 1.25rem; }
+.deck-read .mt-6 { margin-top: 1.5rem; }
+.deck-read .mt-8 { margin-top: 2rem; }
+.deck-read .mt-px { margin-top: 1px; }
+.deck-read .block { display: block; }
+.deck-read .inline-block { display: inline-block; }
+.deck-read .\!hidden { display: none !important; }
+.deck-read .hidden,.deck-read [hidden=""],.deck-read .group:hover .group-hover\:hidden,.deck-read .group:not(:hover) .group-not-hover\:hidden { display: none; }
+.deck-read .aspect-initial,.deck-read .aspect-ratio-initial { aspect-ratio: initial; }
+.deck-read [aspect-initial~="default:"]:default { aspect-ratio: initial; }
+.deck-read .h-\[40px\] { height: 40px; }
+.deck-read .h-\[calc\(var\(--vh\,1vh\)\*100\)\] { height: calc(var(--vh,1vh) * 100); }
+.deck-read .h-0\.7 { height: 0.175rem; }
+.deck-read .h-1\.5,.deck-read [h-1\.5=""] { height: 0.375rem; }
+.deck-read .h-1px { height: 1px; }
+.deck-read .h-2,.deck-read .h2,.deck-read [h-2=""] { height: 0.5rem; }
+.deck-read .h-22px,.deck-read [h-22px=""] { height: 22px; }
+.deck-read .h-3\.5 { height: 0.875rem; }
+.deck-read .h-40 { height: 10rem; }
+.deck-read .h-4px { height: 4px; }
+.deck-read .h-5,.deck-read .h5,.deck-read [h-5=""],.deck-read [h5=""] { height: 1.25rem; }
+.deck-read .h-6 { height: 1.5rem; }
+.deck-read .h-8,.deck-read [h-8=""] { height: 2rem; }
+.deck-read .h-9,.deck-read [h-9=""] { height: 2.25rem; }
+.deck-read .h-auto { height: auto; }
+.deck-read .h-full,.deck-read [h-full=""] { height: 100%; }
+.deck-read .h-max { height: max-content; }
+.deck-read .h-screen { height: 100vh; }
+.deck-read .h1,.deck-read [h1=""] { height: 0.25rem; }
+.deck-read .max-h-full { max-height: 100%; }
+.deck-read .max-h-full\! { max-height: 100% !important; }
+.deck-read .max-w-150 { max-width: 37.5rem; }
+.deck-read .max-w-250,.deck-read [max-w-250=""] { max-width: 62.5rem; }
+.deck-read .max-w-2xl { max-width: 42rem; }
+.deck-read .max-w-90,.deck-read [max-w-90=""] { max-width: 22.5rem; }
+.deck-read .max-w-full { max-width: 100%; }
+.deck-read .max-w-full\! { max-width: 100% !important; }
+.deck-read .max-w-xs { max-width: 20rem; }
+.deck-read .min-h-50 { min-height: 12.5rem; }
+.deck-read .min-h-full { min-height: 100%; }
+.deck-read .min-h-full\! { min-height: 100% !important; }
+.deck-read .min-w-16 { min-width: 4rem; }
+.deck-read .min-w-30,.deck-read [min-w-30=""] { min-width: 7.5rem; }
+.deck-read .min-w-40 { min-width: 10rem; }
+.deck-read .min-w-90,.deck-read [min-w-90=""] { min-width: 22.5rem; }
+.deck-read .min-w-full { min-width: 100%; }
+.deck-read .min-w-full\! { min-width: 100% !important; }
+.deck-read .w-\[40px\] { width: 40px; }
+.deck-read .w-0 { width: 0px; }
+.deck-read .w-1\.5,.deck-read [w-1\.5=""] { width: 0.375rem; }
+.deck-read .w-13 { width: 3.25rem; }
+.deck-read .w-1px,.deck-read [w-1px=""] { width: 1px; }
+.deck-read .w-2,.deck-read [w-2=""] { width: 0.5rem; }
+.deck-read .w-20,.deck-read [w-20=""] { width: 5rem; }
+.deck-read .w-200 { width: 50rem; }
+.deck-read .w-22px { width: 22px; }
+.deck-read .w-250,.deck-read [w-250=""] { width: 62.5rem; }
+.deck-read .w-3\.5 { width: 0.875rem; }
+.deck-read .w-30,.deck-read [w-30=""] { width: 7.5rem; }
+.deck-read .w-40 { width: 10rem; }
+.deck-read .w-5,.deck-read [w-5=""] { width: 1.25rem; }
+.deck-read .w-6 { width: 1.5rem; }
+.deck-read .w-60,.deck-read [w-60=""] { width: 15rem; }
+.deck-read .w-7 { width: 1.75rem; }
+.deck-read .w-8 { width: 2rem; }
+.deck-read .w-80 { width: 20rem; }
+.deck-read .w-9,.deck-read [w-9=""] { width: 2.25rem; }
+.deck-read .w-90,.deck-read [w-90=""] { width: 22.5rem; }
+.deck-read .w-auto { width: auto; }
+.deck-read .w-full,.deck-read [w-full=""] { width: 100%; }
+.deck-read .w-full\! { width: 100% !important; }
+.deck-read .w-screen { width: 100vw; }
+.deck-read .w1,.deck-read [w1=""] { width: 0.25rem; }
+.deck-read .flex,.deck-read [flex=""],.deck-read [flex~="~"] { display: flex; }
+.deck-read .flex-1 { flex: 1 1 0%; }
+.deck-read .flex-auto,.deck-read [flex-auto=""] { flex: 1 1 auto; }
+.deck-read .flex-none { flex: 0 0 auto; }
+.deck-read [flex~="row"] { flex-direction: row; }
+.deck-read .flex-col,.deck-read [flex-col=""],.deck-read [flex~="col"] { flex-direction: column; }
+.deck-read .flex-wrap { flex-wrap: wrap; }
+.deck-read .flex-wrap-reverse { flex-wrap: wrap-reverse; }
+.deck-read .table,.deck-read [table=""] { display: table; }
+.deck-read .table-cell,.deck-read [table-cell=""] { display: table-cell; }
+.deck-read .table-row,.deck-read [table-row=""] { display: table-row; }
+.deck-read .border-collapse,.deck-read [border-collapse=""] { border-collapse: collapse; }
+.deck-read .translate-0 { --un-translate-x: 0; --un-translate-y: 0; transform: translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z)); }
+.deck-read .-translate-x-1\/2 { --un-translate-x: -50%; transform: translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z)); }
+.deck-read .-translate-y-1\/2,.deck-read .translate-y--50\% { --un-translate-y: -50%; transform: translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z)); }
+.deck-read .-rotate-45 { --un-rotate-x: 0; --un-rotate-y: 0; --un-rotate-z: 0; --un-rotate: -45deg; transform: translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z)); }
+.deck-read .scale-102 { --un-scale-x: 1.02; --un-scale-y: 1.02; transform: translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z)); }
+.deck-read .scale-85 { --un-scale-x: .85; --un-scale-y: .85; transform: translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z)); }
+.deck-read .scale-x-80 { --un-scale-x: .8; transform: translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z)); }
+.deck-read .transform { transform: translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z)); }
+@keyframes fade-in {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+.deck-read .animate-fade-in { animation: 1s linear 0s 1 normal none running fade-in; }
+.deck-read .animate-duration-100 { animation-duration: 0.1s; }
+.deck-read .cursor-default { cursor: default; }
+.deck-read .cursor-pointer,.deck-read [cursor-pointer=""] { cursor: pointer; }
+.deck-read .touch-none { touch-action: none; }
+.deck-read .important\:\[\&_\*\]\:select-none *:not(:where([class*="gloss-"],[class*="deck-"])) { user-select: none !important; }
+.deck-read .select-none,.deck-read [select-none=""] { user-select: none; }
+.deck-read [select-none~="default:"]:default { user-select: none; }
+.deck-read .resize { resize: both; }
+.deck-read .resize-none { resize: none; }
+.deck-read .break-inside-avoid-page { break-inside: avoid-page; }
+.deck-read .break-after-page { break-after: page; }
+.deck-read .place-content-center { place-content: center; }
+.deck-read .items-start { align-items: flex-start; }
+.deck-read .items-end { align-items: flex-end; }
+.deck-read .items-center,.deck-read [flex~="items-center"],.deck-read [items-center=""] { align-items: center; }
+.deck-read .justify-center,.deck-read [flex~="justify-center"],.deck-read [justify-center=""] { justify-content: center; }
+.deck-read .justify-items-start { justify-items: start; }
+.deck-read .gap-0\.2 { gap: 0.05rem; }
+.deck-read .gap-0\.5 { gap: 0.125rem; }
+.deck-read .gap-1,.deck-read [flex~="gap-1"] { gap: 0.25rem; }
+.deck-read .gap-2,.deck-read [flex~="gap-2"],.deck-read [gap-2=""] { gap: 0.5rem; }
+.deck-read .gap-3 { gap: 0.75rem; }
+.deck-read .gap-4,.deck-read [flex~="gap-4"] { gap: 1rem; }
+.deck-read .gap-5 { gap: 1.25rem; }
+.deck-read .gap-8 { gap: 2rem; }
+.deck-read .gap-px { gap: 1px; }
+.deck-read .gap-x-8 { column-gap: 2rem; }
+.deck-read .gap-y-4 { row-gap: 1rem; }
+.deck-read .space-y-2 > :not([hidden]) ~ :not([hidden]) { --un-space-y-reverse: 0; margin-top: calc(.5rem * calc(1 - var(--un-space-y-reverse))); margin-bottom: calc(.5rem * var(--un-space-y-reverse)); }
+.deck-read .space-y-3 > :not([hidden]) ~ :not([hidden]) { --un-space-y-reverse: 0; margin-top: calc(.75rem * calc(1 - var(--un-space-y-reverse))); margin-bottom: calc(.75rem * var(--un-space-y-reverse)); }
+.deck-read .space-y-4 > :not([hidden]) ~ :not([hidden]) { --un-space-y-reverse: 0; margin-top: calc(1rem * calc(1 - var(--un-space-y-reverse))); margin-bottom: calc(1rem * var(--un-space-y-reverse)); }
+.deck-read .space-y-6 > :not([hidden]) ~ :not([hidden]) { --un-space-y-reverse: 0; margin-top: calc(1.5rem * calc(1 - var(--un-space-y-reverse))); margin-bottom: calc(1.5rem * var(--un-space-y-reverse)); }
+.deck-read .of-auto,.deck-read .overflow-auto { overflow: auto; }
+.deck-read .of-hidden,.deck-read .overflow-hidden,.deck-read [of-hidden=""],.deck-read [overflow-hidden=""] { overflow: hidden; }
+.deck-read .of-x-visible { overflow-x: visible; }
+.deck-read .of-y-auto,.deck-read .overflow-y-auto { overflow-y: auto; }
+.deck-read .whitespace-nowrap,.deck-read .ws-nowrap,.deck-read [ws-nowrap=""] { white-space: nowrap; }
+.deck-read .b,.deck-read .border,.deck-read.dark .dark\:border,.deck-read.dark [dark\:border~="~"],.deck-read [b=""],.deck-read [border=""],.deck-read [border~="~"] { border-width: 1px; }
+.deck-read .border-2,.deck-read [b~="2"] { border-width: 2px; }
+.deck-read [b~="100%"] { }
+.deck-read [b~="16"] { border-width: 16px; }
+.deck-read [b~="50%"] { }
+.deck-read [b~="64"] { border-width: 64px; }
+.deck-read [border~="0"] { border-width: 0px; }
+.deck-read .border-x,.deck-read [b~="x"] { border-left-width: 1px; border-right-width: 1px; }
+.deck-read [b~="y"],.deck-read [border~="y"] { border-top-width: 1px; border-bottom-width: 1px; }
+.deck-read .border-b,.deck-read [b~="b"],.deck-read [border~="b"] { border-bottom-width: 1px; }
+.deck-read .border-l { border-left-width: 1px; }
+.deck-read .border-l-2 { border-left-width: 2px; }
+.deck-read .border-l-4 { border-left-width: 4px; }
+.deck-read .border-r,.deck-read [border~="r"] { border-right-width: 1px; }
+.deck-read .border-r-2 { border-right-width: 2px; }
+.deck-read .border-t,.deck-read [border-t=""],.deck-read [border~="t"] { border-top-width: 1px; }
+.deck-read .b-dark { --un-border-opacity: 1; border-color: rgb(34 34 34 / var(--un-border-opacity)); }
+.deck-read .border-blue-400 { --un-border-opacity: 1; border-color: rgb(96 165 250 / var(--un-border-opacity)); }
+.deck-read .border-gray,.deck-read.dark .dark\:b-gray-400,.deck-read [border-gray=""] { --un-border-opacity: 1; border-color: rgb(156 163 175 / var(--un-border-opacity)); }
+.deck-read .border-gray-300\/50 { border-color: rgba(209, 213, 219, 0.5); }
+.deck-read .border-gray-700 { --un-border-opacity: 1; border-color: rgb(55 65 81 / var(--un-border-opacity)); }
+.deck-read .border-green-400 { --un-border-opacity: 1; border-color: rgb(74 222 128 / var(--un-border-opacity)); }
+.deck-read .border-green-500 { --un-border-opacity: 1; border-color: rgb(34 197 94 / var(--un-border-opacity)); }
+.deck-read .border-orange-400 { --un-border-opacity: 1; border-color: rgb(251 146 60 / var(--un-border-opacity)); }
+.deck-read .border-orange-500 { --un-border-opacity: 1; border-color: rgb(249 115 22 / var(--un-border-opacity)); }
+.deck-read .border-purple-400 { --un-border-opacity: 1; border-color: rgb(192 132 252 / var(--un-border-opacity)); }
+.deck-read .border-red-500 { --un-border-opacity: 1; border-color: rgb(239 68 68 / var(--un-border-opacity)); }
+.deck-read .border-transparent,.deck-read [border~="transparent"] { border-color: transparent; }
+.deck-read .border-white { --un-border-opacity: 1; border-color: rgb(255 255 255 / var(--un-border-opacity)); }
+.deck-read .border-yellow-500 { --un-border-opacity: 1; border-color: rgb(234 179 8 / var(--un-border-opacity)); }
+.deck-read.dark .dark\:border-gray-500,.deck-read.dark [dark\:border-gray-500=""] { --un-border-opacity: 1; border-color: rgb(107 114 128 / var(--un-border-opacity)); }
+.deck-read.dark .dark\:border-true-gray-700 { --un-border-opacity: 1; border-color: rgb(64 64 64 / var(--un-border-opacity)); }
+.deck-read [b-dark~="1"] { --un-border-opacity: 1; border-color: rgb(60 60 60 / var(--un-border-opacity)); }
+.deck-read.dark [b~="dark:b-gray-400"] { --un-border-opacity: 1; --un-border-bottom-opacity: var(--un-border-opacity); border-bottom-color: rgb(156 163 175 / var(--un-border-bottom-opacity)); }
+.deck-read [b~="b-dark"] { --un-border-opacity: 1; --un-border-bottom-opacity: var(--un-border-opacity); border-bottom-color: rgb(34 34 34 / var(--un-border-bottom-opacity)); }
+.deck-read .rounded,.deck-read [border~="rounded"],.deck-read [rounded=""] { border-radius: 0.25rem; }
+.deck-read .rounded-1\/2 { border-radius: 50%; }
+.deck-read .rounded-full,.deck-read [rounded-full=""] { border-radius: 9999px; }
+.deck-read .rounded-lg { border-radius: 0.5rem; }
+.deck-read .rounded-md,.deck-read [border~="rounded-md"] { border-radius: 0.375rem; }
+.deck-read .rounded-l { border-top-left-radius: 0.25rem; border-bottom-left-radius: 0.25rem; }
+.deck-read .rounded-r { border-top-right-radius: 0.25rem; border-bottom-right-radius: 0.25rem; }
+.deck-read .rounded-lb { border-bottom-left-radius: 0.25rem; }
+.deck-read .rounded-tl { border-top-left-radius: 0.25rem; }
+.deck-read .\!border-none { border-style: none !important; }
+.deck-read .b-dashed { border-style: dashed; }
+.deck-read [b~="b-dashed"] { border-bottom-style: dashed; }
+.deck-read .bg-blue { --un-bg-opacity: 1; background-color: rgb(96 165 250 / var(--un-bg-opacity)); }
+.deck-read .bg-current { background-color: currentcolor; }
+.deck-read .bg-cyan\:10,.deck-read [bg-cyan\:10=""] { background-color: rgba(34, 211, 238, 0.1); }
+.deck-read .bg-gray,.deck-read .bg-gray-400,.deck-read [bg-gray=""] { --un-bg-opacity: 1; background-color: rgb(156 163 175 / var(--un-bg-opacity)); }
+.deck-read .bg-gray-900 { --un-bg-opacity: 1; background-color: rgb(17 24 39 / var(--un-bg-opacity)); }
+.deck-read .bg-gray\:10,.deck-read .bg-gray\/10 { background-color: rgba(156, 163, 175, 0.1); }
+.deck-read .bg-gray\:4,.deck-read [bg-gray\:4=""] { background-color: rgba(156, 163, 175, 0.04); }
+.deck-read .bg-gray\:5,.deck-read .bg-gray\/5,.deck-read [bg-gray\:5=""] { background-color: rgba(156, 163, 175, 0.05); }
+.deck-read .bg-gray\/20 { background-color: rgba(156, 163, 175, 0.2); }
+.deck-read .bg-green { --un-bg-opacity: 1; background-color: rgb(74 222 128 / var(--un-bg-opacity)); }
+.deck-read .bg-red { --un-bg-opacity: 1; background-color: rgb(248 113 113 / var(--un-bg-opacity)); }
+.deck-read .bg-transparent { background-color: transparent; }
+.deck-read .bg-yellow { --un-bg-opacity: 1; background-color: rgb(250 204 21 / var(--un-bg-opacity)); }
+.deck-read.dark .dark\:bg-gray-800,.deck-read.dark [dark\:bg-gray-800=""] { --un-bg-opacity: 1; background-color: rgb(31 41 55 / var(--un-bg-opacity)); }
+.deck-read [bg~="black"] { --un-bg-opacity: 1; background-color: rgb(0 0 0 / var(--un-bg-opacity)); }
+.deck-read .hover\:bg-gray-400:hover { --un-bg-opacity: 1; background-color: rgb(156 163 175 / var(--un-bg-opacity)); }
+.deck-read .hover\:bg-gray\/20:hover { background-color: rgba(156, 163, 175, 0.2); }
+.deck-read [bg-transparent~="placeholder:"]::placeholder { background-color: transparent; }
+.deck-read .\!bg-opacity-75 { --un-bg-opacity: .75 !important; }
+.deck-read .bg-opacity-10 { --un-bg-opacity: .1; }
+.deck-read .bg-opacity-30,.deck-read [bg-opacity-30=""] { --un-bg-opacity: .3; }
+.deck-read [bg~="opacity-80"] { --un-bg-opacity: .8; }
+.deck-read .hover\:bg-opacity-10:hover { --un-bg-opacity: .1; }
+.deck-read [stroke-width~="1"] { stroke-width: 1px; }
+.deck-read [stroke-width~="2"] { stroke-width: 2px; }
+.deck-read [stroke-width~="3"] { stroke-width: 3px; }
+.deck-read.dark .dark\:stroke-black { --un-stroke-opacity: 1; stroke: rgb(0 0 0 / var(--un-stroke-opacity)); }
+.deck-read .stroke-white { --un-stroke-opacity: 1; stroke: rgb(255 255 255 / var(--un-stroke-opacity)); }
+.deck-read .object-cover { object-fit: cover; }
+.deck-read .object-contain { object-fit: contain; }
+.deck-read .\!p-4 { padding: 1rem !important; }
+.deck-read .p-1,.deck-read .p1,.deck-read [p1=""] { padding: 0.25rem; }
+.deck-read .p-16 { padding: 4rem; }
+.deck-read .p-2,.deck-read .p2,.deck-read [p2=""] { padding: 0.5rem; }
+.deck-read .p-3,.deck-read .p3 { padding: 0.75rem; }
+.deck-read .p-4,.deck-read .p4 { padding: 1rem; }
+.deck-read .p0\.5,.deck-read [p0\.5=""] { padding: 0.125rem; }
+.deck-read .p5 { padding: 1.25rem; }
+.deck-read .\!px-0,.deck-read [\!px-0=""] { padding-left: 0px !important; padding-right: 0px !important; }
+.deck-read .px,.deck-read .px-4,.deck-read .px4,.deck-read [p~="x-4"],.deck-read [px=""],.deck-read [px4=""] { padding-left: 1rem; padding-right: 1rem; }
+.deck-read .px-1\.5 { padding-left: 0.375rem; padding-right: 0.375rem; }
+.deck-read .px-2,.deck-read .px2,.deck-read [px2=""] { padding-left: 0.5rem; padding-right: 0.5rem; }
+.deck-read .px-3,.deck-read .px3,.deck-read [px3=""] { padding-left: 0.75rem; padding-right: 0.75rem; }
+.deck-read .px-5 { padding-left: 1.25rem; padding-right: 1.25rem; }
+.deck-read .px-6 { padding-left: 1.5rem; padding-right: 1.5rem; }
+.deck-read .px1 { padding-left: 0.25rem; padding-right: 0.25rem; }
+.deck-read .py-1,.deck-read .py1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
+.deck-read .py-10 { padding-top: 2.5rem; padding-bottom: 2.5rem; }
+.deck-read .py-2,.deck-read .py2,.deck-read [p~="y-2"],.deck-read [py-2=""],.deck-read [py2=""] { padding-top: 0.5rem; padding-bottom: 0.5rem; }
+.deck-read .py-20 { padding-top: 5rem; padding-bottom: 5rem; }
+.deck-read .py-3,.deck-read .py3 { padding-top: 0.75rem; padding-bottom: 0.75rem; }
+.deck-read .py-4 { padding-top: 1rem; padding-bottom: 1rem; }
+.deck-read .py0\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; }
+.deck-read .py1\.5 { padding-top: 0.375rem; padding-bottom: 0.375rem; }
+.deck-read .pb-0 { padding-bottom: 0px; }
+.deck-read .pb2 { padding-bottom: 0.5rem; }
+.deck-read .pl-0 { padding-left: 0px; }
+.deck-read .pl-3 { padding-left: 0.75rem; }
+.deck-read .pl-4,.deck-read [pl-4=""] { padding-left: 1rem; }
+.deck-read .pl1,.deck-read [pl1=""] { padding-left: 0.25rem; }
+.deck-read .pl2,.deck-read [pl2=""] { padding-left: 0.5rem; }
+.deck-read .pr-12 { padding-right: 3rem; }
+.deck-read .pr-3,.deck-read [pr-3=""] { padding-right: 0.75rem; }
+.deck-read .pr-4,.deck-read [pr-4=""] { padding-right: 1rem; }
+.deck-read .pt-\.5 { padding-top: 0.125rem; }
+.deck-read .pt-15\% { padding-top: 15%; }
+.deck-read .pt-2 { padding-top: 0.5rem; }
+.deck-read .pt-6 { padding-top: 1.5rem; }
+.deck-read .pt5 { padding-top: 1.25rem; }
+.deck-read .text-center { text-align: center; }
+.deck-read .text-right,.deck-read [text-right=""] { text-align: right; }
+.deck-read .text-nowrap { text-wrap: nowrap; }
+.deck-read .align-middle,.deck-read .vertical-middle,.deck-read [vertical-middle=""] { vertical-align: middle; }
+.deck-read .align-top,.deck-read [align-top=""] { vertical-align: top; }
+.deck-read .\!text-sm,.deck-read [\!text-sm=""] { font-size: 0.875rem !important; line-height: 1.25rem !important; }
+.deck-read .text-1\.2em { font-size: 1.2em; }
+.deck-read .text-11px { font-size: 11px; }
+.deck-read .text-2xl { font-size: 1.5rem; line-height: 2rem; }
+.deck-read .text-3em { font-size: 3em; }
+.deck-read .text-3xl { font-size: 1.875rem; line-height: 2.25rem; }
+.deck-read .text-4xl { font-size: 2.25rem; line-height: 2.5rem; }
+.deck-read .text-9xl,.deck-read [text-9xl=""] { font-size: 8rem; line-height: 1; }
+.deck-read .text-base { font-size: 1rem; line-height: 1.5rem; }
+.deck-read .text-lg,.deck-read [text-lg=""] { font-size: 1.125rem; line-height: 1.75rem; }
+.deck-read .text-sm,.deck-read [text-sm=""] { font-size: 0.875rem; line-height: 1.25rem; }
+.deck-read .text-xl { font-size: 1.25rem; line-height: 1.75rem; }
+.deck-read .text-xs,.deck-read [text-xs=""] { font-size: 0.75rem; line-height: 1rem; }
+.deck-read [text-sm~="default:"]:default { font-size: 0.875rem; line-height: 1.25rem; }
+.deck-read .\!text-current { color: currentcolor !important; }
+.deck-read.dark .dark\:text-blue3,.deck-read .text-blue-300 { --un-text-opacity: 1; color: rgb(147 197 253 / var(--un-text-opacity)); }
+.deck-read.dark .dark\:text-green,.deck-read .text-green,.deck-read .text-green-400 { --un-text-opacity: 1; color: rgb(74 222 128 / var(--un-text-opacity)); }
+.deck-read.dark .dark\:text-green3,.deck-read .text-green-300 { --un-text-opacity: 1; color: rgb(134 239 172 / var(--un-text-opacity)); }
+.deck-read.dark .dark\:text-red-500,.deck-read .text-red-500 { --un-text-opacity: 1; color: rgb(239 68 68 / var(--un-text-opacity)); }
+.deck-read.dark .dark\:text-red3,.deck-read .text-red-300 { --un-text-opacity: 1; color: rgb(252 165 165 / var(--un-text-opacity)); }
+.deck-read.dark .dark\:text-yellow3,.deck-read .text-yellow-300 { --un-text-opacity: 1; color: rgb(253 224 71 / var(--un-text-opacity)); }
+.deck-read .text-\$slidev-controls-foreground { color: var(--slidev-controls-foreground); }
+.deck-read .text-black { --un-text-opacity: 1; color: rgb(0 0 0 / var(--un-text-opacity)); }
+.deck-read .text-blue { --un-text-opacity: 1; color: rgb(96 165 250 / var(--un-text-opacity)); }
+.deck-read .text-blue6 { --un-text-opacity: 1; color: rgb(37 99 235 / var(--un-text-opacity)); }
+.deck-read .text-current { color: currentcolor; }
+.deck-read .text-cyan { --un-text-opacity: 1; color: rgb(34 211 238 / var(--un-text-opacity)); }
+.deck-read .text-cyan\:75,.deck-read [text-cyan\:75=""] { color: rgba(34, 211, 238, 0.75); }
+.deck-read .text-gray,.deck-read .text-gray-400 { --un-text-opacity: 1; color: rgb(156 163 175 / var(--un-text-opacity)); }
+.deck-read .text-gray-100 { --un-text-opacity: 1; color: rgb(243 244 246 / var(--un-text-opacity)); }
+.deck-read .text-gray-200 { --un-text-opacity: 1; color: rgb(229 231 235 / var(--un-text-opacity)); }
+.deck-read .text-gray-300 { --un-text-opacity: 1; color: rgb(209 213 219 / var(--un-text-opacity)); }
+.deck-read .text-gray-500 { --un-text-opacity: 1; color: rgb(107 114 128 / var(--un-text-opacity)); }
+.deck-read .text-gray-600 { --un-text-opacity: 1; color: rgb(75 85 99 / var(--un-text-opacity)); }
+.deck-read .text-green-500 { --un-text-opacity: 1; color: rgb(34 197 94 / var(--un-text-opacity)); }
+.deck-read .text-green6 { --un-text-opacity: 1; color: rgb(22 163 74 / var(--un-text-opacity)); }
+.deck-read .text-indigo { --un-text-opacity: 1; color: rgb(129 140 248 / var(--un-text-opacity)); }
+.deck-read .text-lime { --un-text-opacity: 1; color: rgb(163 230 53 / var(--un-text-opacity)); }
+.deck-read .text-orange,.deck-read .text-orange-400 { --un-text-opacity: 1; color: rgb(251 146 60 / var(--un-text-opacity)); }
+.deck-read .text-orange-300 { --un-text-opacity: 1; color: rgb(253 186 116 / var(--un-text-opacity)); }
+.deck-read .text-pink { --un-text-opacity: 1; color: rgb(244 114 182 / var(--un-text-opacity)); }
+.deck-read .text-purple { --un-text-opacity: 1; color: rgb(192 132 252 / var(--un-text-opacity)); }
+.deck-read .text-purple-300 { --un-text-opacity: 1; color: rgb(216 180 254 / var(--un-text-opacity)); }
+.deck-read .text-red,.deck-read .text-red-400 { --un-text-opacity: 1; color: rgb(248 113 113 / var(--un-text-opacity)); }
+.deck-read .text-red-700 { --un-text-opacity: 1; color: rgb(185 28 28 / var(--un-text-opacity)); }
+.deck-read .text-red6 { --un-text-opacity: 1; color: rgb(220 38 38 / var(--un-text-opacity)); }
+.deck-read .text-teal { --un-text-opacity: 1; color: rgb(45 212 191 / var(--un-text-opacity)); }
+.deck-read .text-white { --un-text-opacity: 1; color: rgb(255 255 255 / var(--un-text-opacity)); }
+.deck-read .text-yellow { --un-text-opacity: 1; color: rgb(250 204 21 / var(--un-text-opacity)); }
+.deck-read .text-yellow6 { --un-text-opacity: 1; color: rgb(202 138 4 / var(--un-text-opacity)); }
+.deck-read [text-green-500~="default:"]:default { --un-text-opacity: 1; color: rgb(34 197 94 / var(--un-text-opacity)); }
+.deck-read .\!hover\:text-white:hover { --un-text-opacity: 1 !important; color: rgb(255 255 255 / var(--un-text-opacity)) !important; }
+.deck-read .important-text-op-50,.deck-read .text-opacity-50\! { --un-text-opacity: .5 !important; }
+.deck-read .font-bold,.deck-read [font-bold=""] { font-weight: 700; }
+.deck-read .font-light { font-weight: 300; }
+.deck-read .font-medium { font-weight: 500; }
+.deck-read .font-normal { font-weight: 400; }
+.deck-read .font-semibold { font-weight: 600; }
+.deck-read .leading-1\.6em { line-height: 1.6em; }
+.deck-read .leading-10 { line-height: 2.5rem; }
+.deck-read .leading-1em { line-height: 1em; }
+.deck-read .leading-5 { line-height: 1.25rem; }
+.deck-read .leading-8 { line-height: 2rem; }
+.deck-read .leading-tight { line-height: 1.25; }
+.deck-read .tracking-widest { letter-spacing: 0.1em; }
+.deck-read .font-mono,.deck-read [font-mono=""] { font-family: "Victor Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }
+.deck-read .uppercase { text-transform: uppercase; }
+.deck-read .italic { font-style: italic; }
+.deck-read .line-through { text-decoration-line: line-through; }
+.deck-read .underline { text-decoration-line: underline; }
+.deck-read .tab { tab-size: 4; }
+.deck-read [tab~="default:"]:default { tab-size: 4; }
+.deck-read .text-shadow-lg { --un-text-shadow: 3px 3px 6px var(--un-text-shadow-color, rgb(0 0 0 / .26)),0 0 5px var(--un-text-shadow-color, rgb(15 3 86 / .22)); text-shadow: var(--un-text-shadow); }
+.deck-read .\!opacity-0,.deck-read .important\:op0 { opacity: 0 !important; }
+.deck-read .\!opacity-100 { opacity: 1 !important; }
+.deck-read .op-60 { opacity: 0.6; }
+.deck-read .op-80,.deck-read .op80,.deck-read .opacity-80,.deck-read .group:hover .group-hover\:op80 { opacity: 0.8; }
+.deck-read .op0,.deck-read .opacity-0,.deck-read [op0=""] { opacity: 0; }
+.deck-read .op100,.deck-read [op100=""],.deck-read .group:hover .group-hover\:op100 { opacity: 1; }
+.deck-read .op15 { opacity: 0.15; }
+.deck-read .op20,.deck-read .group:hover .group-hover\:opacity-20 { opacity: 0.2; }
+.deck-read .op25,.deck-read .opacity-25,.deck-read [op25=""] { opacity: 0.25; }
+.deck-read .op30 { opacity: 0.3; }
+.deck-read .op35 { opacity: 0.35; }
+.deck-read .op40,.deck-read .opacity-40,.deck-read [op40=""] { opacity: 0.4; }
+.deck-read .op50,.deck-read .opacity-50,.deck-read [op50=""] { opacity: 0.5; }
+.deck-read .op75,.deck-read [op75=""] { opacity: 0.75; }
+.deck-read .opacity-10,.deck-read [opacity-10=""] { opacity: 0.1; }
+.deck-read .opacity-5 { opacity: 0.05; }
+.deck-read .focus-within\:opacity-100:focus-within { opacity: 1; }
+.deck-read .hover\:\!opacity-100:hover { opacity: 1 !important; }
+.deck-read .hover\:op-100:hover,.deck-read .hover\:op100:hover,.deck-read .hover\:opacity-100:hover { opacity: 1; }
+.deck-read .hover\:opacity-90:hover { opacity: 0.9; }
+.deck-read [hover~="op100"]:hover { opacity: 1; }
+.deck-read .focus-visible\:opacity-100:focus-visible { opacity: 1; }
+.deck-read .shadow,.deck-read [shadow~="~"] { --un-shadow: var(--un-shadow-inset) 0 1px 3px 0 var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 1px 2px -1px var(--un-shadow-color, rgb(0 0 0 / .1)); box-shadow: var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow); }
+.deck-read .shadow-lg { --un-shadow: var(--un-shadow-inset) 0 10px 15px -3px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 4px 6px -4px var(--un-shadow-color, rgb(0 0 0 / .1)); box-shadow: var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow); }
+.deck-read .shadow-xl,.deck-read .hover\:shadow-xl:hover { --un-shadow: var(--un-shadow-inset) 0 20px 25px -5px var(--un-shadow-color, rgb(0 0 0 / .1)),var(--un-shadow-inset) 0 8px 10px -6px var(--un-shadow-color, rgb(0 0 0 / .1)); box-shadow: var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow); }
+.deck-read .outline { outline-style: solid; }
+.deck-read .outline-none,.deck-read [outline-none=""] { outline: transparent solid 2px; outline-offset: 2px; }
+.deck-read .\!backdrop-blur-0px { --un-backdrop-blur: blur(0px) !important; backdrop-filter: var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia) !important; }
+.deck-read .backdrop-blur-5px { --un-backdrop-blur: blur(5px); backdrop-filter: var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia); }
+.deck-read .filter { filter: var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia); }
+.deck-read .transition { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 0.15s; }
+.deck-read .transition-all { transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 0.15s; }
+.deck-read .transition-opacity { transition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 0.15s; }
+.deck-read .transition-shadow { transition-property: box-shadow; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 0.15s; }
+.deck-read [transition-all~="0"] { transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 0s; }
+.deck-read [transition-all~="4"] { transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 4ms; }
+.deck-read .duration-150 { transition-duration: 0.15s; }
+.deck-read .duration-200 { transition-duration: 0.2s; }
+.deck-read .duration-300 { transition-duration: 0.3s; }
+.deck-read .duration-400 { transition-duration: 0.4s; }
+.deck-read .ease { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }
+.deck-read .ease-in { transition-timing-function: cubic-bezier(0.4, 0, 1, 1); }
+.deck-read .ease-out { transition-timing-function: cubic-bezier(0, 0, 0.2, 1); }
+.deck-read .view-transition-name { view-transition-name: name; }
+@media (max-width: 767.9px) {
+ .deck-read .\E7t&A{I# 9Lb#;kFte+fdGm6RjW&SP`*!R<8t9
zJIbRoRfIuQ7g}T`%Mb1@*w>mY7wGse5;p5R*Pbe@J9m0vPF;_OszfGAyIuZ-b&JRR
z?mTD{q+&!?bSZ5wtmr(!sip(NwVR1H$sc%fIobjSq`mt?msADk)jm!yUBzb_i3!PQ
z)|$=D=0P;Le`t(->_em8*v`AEe=sP=C9sdRihk_Y{hgh;tcM-O{=TjLDk$Wu8+|IxNmzgr^
zpl0cdn?3;_U0g?bUh--wIk!P+>S1H`fp?2EsPYIlR7S3(MoD5=dcuM#=jxm7;$n9C
z+ME7>!omeLi&-^N!V7{5n*)
z7Vb>D-%IomyNql5z~$#X*ln?iU+wRnw^9!v@U)xClVPcW4x(S+$0`$l6{fIA<{5Fw
zBpb`98M5Qp5bUZ}%;l6Eqx}WGB>0kTaGGNeDSYy*6Er=2nIkf
uA4wB`YW>j_$rnb9Fe#SBs
z+z{xvid(n^V0S9Nq8TV3HM;5_K!~$T{rFgFkR+}0B8gWJQ)9^MOf%=)*PXYEb3}24
zOgVw-xp0mE9gFE%JFf(}Vdo*u_;)PrW-`!w^Qcy*e0m5%yyI45WEDyoTwB>Cnx^(<
z#=AqGM>ATIX5Ics=#h1s5YlM|fV3XdPd$XbFN`o-gT26jIo`Oad5Zz*AyX)+znzdD
z)OC0HiZsl}G{IkLIg&*Qbw?B18q++{4`vv`1U6ek@u$0Q`k8R
zv!T4gAa{0@d^W3Wo)MQYrzpowE>Zhyap@jj7SKVHbmI(p=>fu
_?Fr-V=6R&LvSY=9!VErODVwPOPTUBNZB8eBm=QTIq&VZd9kosSB{)MG_l{$9F{L
zU_4FgQO?1;3RI^TmM%`UJ