@import url('/styles.css');
@import url('/brand.css');
:root { --rv-paper:#f0ece3; --rv-green:#b9d7b0; --rv-dark:#17231d; }
html { scroll-behavior:smooth; scroll-padding-top:90px; }
body[data-site-area="public"][data-page="ravet"] { background:var(--rv-paper); color:var(--rv-dark); --ink:var(--rv-dark); }
a { text-underline-offset:4px; }
:focus-visible { outline:3px solid #42714d; outline-offset:5px; }
.skip { position:absolute; top:-100px; left:20px; z-index:110; background:white; padding:12px; }.skip:focus { top:10px; }
.rv-subnav { border-bottom:1px solid var(--docs-rule,#17231d30); }
.rv-subnav-inner { display:flex; justify-content:flex-end; align-items:center; gap:26px; max-width:var(--max); margin:0 auto; padding:14px var(--gutter); font-size:13px; }
.rv-subnav a:hover,.rv-footer a:hover { text-decoration:underline; }
.rv-wrap { width:min(1280px,90%); margin:auto; }.eyebrow { font:11px var(--mono); letter-spacing:1.5px; text-transform:uppercase; }
.rv-hero { padding:66px 0 60px; }.rv-topline { display:flex; justify-content:space-between; gap:24px; }.status { display:inline-flex; gap:9px; align-items:center; }.status:before { content:''; width:7px; height:7px; background:#47744e; border-radius:50%; }
.rv-logo { width:75%; height:auto; margin:38px 0 22px; }
.rv-hero-brand { position:relative; margin:38px 0 22px; }
.rv-hero-brand .rv-logo { display:block; margin:0; }
.rv-preview-sticker {
 --rv-sticker-size:clamp(100px,13vw,160px);
 position:absolute; top:50%; right:3%; display:grid; place-items:center;
 width:var(--rv-sticker-size); aspect-ratio:1; border-radius:50%;
 background:#d7372e; color:#fffaf3; border:1px solid #b82520;
 font:600 calc(var(--rv-sticker-size) * .2)/1 var(--sans); letter-spacing:-.02em;
 box-shadow:0 5px 14px #801c1426; pointer-events:none;
 transform:translateY(-50%) rotate(-13deg);
 animation:rv-preview-pulse 2.6s ease-in-out infinite;
}
@keyframes rv-preview-pulse {
 0%,100% { transform:translateY(-50%) rotate(-13deg) scale(1); }
 50% { transform:translateY(-50%) rotate(-13deg) scale(1.06); }
}
@media(max-width:760px) {
 .rv-hero-brand { margin:28px 0; }
 .rv-hero-brand .rv-logo { width:70%; }
 .rv-preview-sticker { --rv-sticker-size:clamp(76px,22vw,124px); right:0; }
}
@media(prefers-reduced-motion:reduce) { .rv-preview-sticker { animation:none; } }
.hero-bottom { display:grid; grid-template-columns:1.2fr 1fr; gap:80px; align-items:end; }
h1,h2,h3 { font-weight:400; letter-spacing:-.035em; }h1 { font:clamp(38px,4.6vw,66px)/1.06 var(--serif); max-width:760px; }h2 { font:clamp(34px,4vw,52px)/1.1 var(--serif); }h3 { font-size:23px; }
p { line-height:1.7; }.hero-copy { font-size:16px; max-width:480px; }.rv-actions { display:flex; gap:12px; flex-wrap:wrap; margin-top:24px; }
.rv-button { display:inline-flex; justify-content:center; align-items:center; padding:13px 20px; background:var(--rv-dark); color:var(--rv-paper); border:1px solid var(--rv-dark); font-size:13px; border-radius:2px; }.rv-button:hover { background:#304c39; }.rv-button.secondary { background:transparent; color:var(--rv-dark); }.rv-button:disabled { opacity:.55; cursor:not-allowed; }
.rv-band { background:var(--rv-dark); color:var(--rv-paper); padding:20px 0; }.rv-band .rv-wrap { display:flex; flex-wrap:wrap; justify-content:space-between; gap:20px; font:11px var(--mono); letter-spacing:1px; }
.rv-section { padding:70px 0; border-bottom:1px solid var(--docs-rule,#17231d30); }.section-intro { display:grid; grid-template-columns:1fr 1fr; gap:70px; margin:16px 0 36px; }.section-intro p { max-width:520px; color:#4f5d53; }
.feature-grid { display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--docs-rule,#17231d30); }.feature { padding:30px; border-right:1px solid var(--docs-rule,#17231d30); }.feature:last-child { border:0; }.feature .eyebrow { display:block; margin-bottom:28px; }.feature p { color:#4f5d53; font-size:14px; margin-top:15px; }
.rv-code { background:var(--rv-dark); color:#d2ebc9; padding:24px; overflow:auto; font:13px/1.8 var(--mono); margin-top:20px; border-radius:3px; }.rv-note { font-size:13px; color:var(--docs-muted,#546258); margin-top:18px; }.rv-note a,.prose a { text-decoration:underline; }
.portal-links { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }.portal-link { border-top:1px solid #17231d60; padding:24px 0; }.portal-link p { font-size:14px; color:var(--docs-muted,#546258); margin:12px 0; }.portal-link:hover h3 { text-decoration:underline; }
.pricing { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }.tier { padding:30px; border:1px solid #17231d40; }.tier.featured { background:var(--rv-green); }.price { font-size:48px; letter-spacing:-2px; margin:18px 0 0; }.price small { font-size:12px; letter-spacing:0; }.tier p { font-size:14px; }.tier ul { padding:22px 0 22px 18px; font-size:13px; line-height:2; }.tier .rv-button { width:100%; }.notice { border-left:3px solid var(--docs-accent,#557a50); background:var(--docs-surface,#e1e7d9); padding:20px 24px; margin:28px 0; font-size:14px; }
body[data-page="ravet"] .rv-footer { padding:32px 5%; display:flex; justify-content:space-between; flex-wrap:wrap; gap:20px; font-size:12px; }.rv-footer nav { display:flex; gap:20px; }
.page-intro { padding:65px 0 25px; }.page-intro h1 { margin:16px 0; }.page-intro p { max-width:700px; }
.calculator { padding:24px; border:1px solid #17231d40; margin:28px 0; display:flex; gap:22px; align-items:end; flex-wrap:wrap; }.calculator label { display:grid; gap:8px; font-size:13px; }.calculator input,.doc-search { padding:12px; border:1px solid #17231d60; border-radius:2px; background:var(--docs-surface,#faf8f2); color:var(--rv-dark); font:14px var(--sans); max-width:100%; }.calculator output { padding:12px 0; }
.docs-layout { display:grid; grid-template-columns:245px minmax(0,1fr); gap:60px; padding:35px 0 70px; }.docs-sidebar { font-size:13px; }.docs-sidebar nav { display:grid; gap:10px; margin-top:22px; }.docs-sidebar a[aria-current] { font-weight:600; text-decoration:underline; }.docs-sidebar details { margin-top:15px; }.docs-sidebar summary { cursor:pointer; font-weight:600; }.docs-sidebar details nav { margin:12px 0; padding-left:12px; }.doc-search { width:100%; }.doc-results { display:grid; gap:8px; margin-top:14px; }.doc-results a { padding:10px; background:var(--docs-surface,#e1e7d9); }.doc-results small { display:block; color:var(--docs-muted,#546258); }.prose { max-width:860px; min-width:0; }.prose h1 { font-size:48px; margin:15px 0 25px; }.prose h2 { font:30px var(--serif); margin:38px 0 16px; }.prose h3 { margin:25px 0 12px; }.prose p,.prose ul,.prose ol { margin:16px 0; }.prose ul,.prose ol { padding-left:24px; }.prose pre { background:#17231d; color:#d2ebc9; padding:20px; overflow:auto; font:12px/1.8 var(--mono); }.prose code { font-family:var(--mono); font-size:.85em; overflow-wrap:anywhere; }.prose table { display:block; overflow:auto; border-collapse:collapse; font-size:13px; }.prose th,.prose td { border:1px solid var(--docs-rule,#17231d30); padding:12px; text-align:left; min-width:120px; }.prose img { max-width:100%; }.prose .headerlink { font-size:.65em; margin-left:8px; opacity:.5; }.prose blockquote { border-left:3px solid var(--docs-accent,#557a50); padding-left:20px; }.doc-meta { font:11px var(--mono); color:var(--docs-muted,#546258); }
@media(max-width:760px) { .rv-subnav-inner { gap:20px; justify-content:flex-start; flex-wrap:wrap; }.rv-logo { width:100%; margin:28px 0; }.rv-topline { flex-wrap:wrap; gap:12px; }.hero-bottom,.section-intro { grid-template-columns:1fr; gap:24px; }.rv-hero { padding:40px 0; }.rv-section { padding:45px 0; }.feature-grid,.portal-links,.pricing { grid-template-columns:1fr; }.feature { border-right:0; border-bottom:1px solid var(--docs-rule,#17231d30); }.docs-layout { grid-template-columns:1fr; gap:30px; }.docs-sidebar nav { display:flex; flex-wrap:wrap; }.docs-sidebar details nav { display:grid; }.prose h1 { font-size:38px; } }
.tier { display:flex; flex-direction:column; }.tier .rv-button { margin-top:auto; }
@media(min-width:761px) { .docs-sidebar { position:sticky; top:100px; align-self:start; max-height:calc(100vh - 124px); overflow:auto; padding-right:12px; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }
/* Framework guides, API reference and numbered teaching sources. */
.docs-layout { grid-template-columns:270px minmax(0,1fr); gap:44px; }
.docs-sidebar .guide-nav { margin-top:16px; }
.docs-sidebar .guide-nav > summary { padding-bottom:8px; border-bottom:1px solid var(--docs-rule,#17231d30); }
.docs-sidebar nav,.docs-sidebar .nav-branch { display:grid; gap:3px; }
.docs-sidebar details { margin-top:0; }
.docs-sidebar details nav { margin:8px 0 0; padding-left:10px; }
.docs-sidebar .nav-branch { padding:4px 0 6px 10px; border-left:1px solid var(--docs-rule,#17231d30); margin-left:3px; }
.docs-sidebar a { display:block; padding:2px 0; line-height:1.4; overflow-wrap:anywhere; }
.docs-sidebar summary { padding:2px 0; line-height:1.4; }
.docs-sidebar summary > a { display:inline; padding:0; }
.docs-sidebar .nav-symbol { font:12px/1.5 var(--mono); }
.docs-sidebar .nav-symbol:hover { color:var(--label-orange); text-decoration:underline; }
.docs-sidebar a[aria-current="page"] { color:var(--docs-accent,#2a663d); }
.doc-results span { overflow-wrap:anywhere; }
.doc-outline { border:1px solid var(--docs-rule,#17231d30); padding:16px 20px; margin:24px 0; }
.doc-outline summary { cursor:pointer; font-size:14px; font-weight:500; }
.doc-outline li { margin:8px 0; }
.doc-outline small { color:var(--docs-muted,#546258); white-space:nowrap; }
.doc-breadcrumb { font-size:13px; overflow-wrap:anywhere; }
.doc-file { font-size:13px; }
.api-reference { overflow-wrap:anywhere; }
.api-reference .main-heading h1 { font-size:36px; }
.api-reference .main-heading h1 .sub-heading { display:block; font:12px var(--mono); letter-spacing:0; margin-top:8px; }
.api-reference .main-heading h1 button,.api-reference .docblock a.test-arrow { display:none; }
.api-reference .item-decl { margin:24px 0; }
.api-reference .code-header { font:13px/1.7 var(--mono); letter-spacing:0; white-space:pre-wrap; }
.api-reference h2 { font-size:29px; padding-bottom:8px; border-bottom:1px solid var(--docs-rule,#17231d30); }
.api-reference .item-table { display:grid; gap:16px; }
.api-reference .item-table > li { display:grid; grid-template-columns:minmax(100px,1fr) minmax(0,2fr); gap:20px; padding-bottom:12px; border-bottom:1px solid var(--docs-rule,#17231d18); }
.api-reference .item-table .item-name { font:13px/1.7 var(--mono); }
.api-reference .item-table .desc { font-size:14px; }
.api-reference details { margin:22px 0; }
.api-reference details summary { cursor:pointer; }
.api-reference .docblock { font-size:15px; }
.api-reference .docblock p:first-child { margin-top:12px; }
.api-reference .docblock ul li { margin:8px 0; }
.api-reference .impl-items { padding-left:20px; border-left:1px solid var(--docs-rule,#17231d30); }
.api-reference .impl-items section.method { margin-top:28px; }
.api-reference .where { font-size:12px; }
.api-reference .item-info,.api-reference .stab { font-size:12px; color:var(--docs-muted,#546258); }
.api-reference .item-info { border-left:2px solid var(--docs-accent,#557a50); padding-left:16px; }
.api-crates { list-style:none; padding-left:0 !important; }
.api-crates li { border-bottom:1px solid var(--docs-rule,#17231d30); padding:12px 0; }
.api-crates p { font-size:14px; margin:5px 0; }
.line-guide { border:1px solid var(--docs-rule,#17231d30); border-radius:3px; overflow:hidden; margin:20px 0 34px; }
.source-line { margin:0; scroll-margin-top:100px; }
.source-line > summary { display:grid; grid-template-columns:48px minmax(0,1fr); cursor:pointer; list-style:none; padding:3px 12px 3px 0; background:var(--docs-surface,#faf8f2); }
.source-line > summary::-webkit-details-marker { display:none; }
.source-line:nth-child(even) > summary { background:#eeeee5; }
.source-line > summary:hover,.source-line[open] > summary { background:#dce8d5; }
.source-line:target > summary { background:#c6ddbc; }
.source-line .line-number { font:11px/1.8 var(--mono); text-align:right; padding-right:12px; color:#617168; user-select:none; }
.source-line summary code { white-space:pre-wrap; overflow-wrap:anywhere; font:11px/1.8 var(--mono); }
.line-note { padding:6px 20px 14px 48px; border-left:3px solid var(--docs-accent,#557a50); font-size:14px; background:var(--docs-surface,#e4eadd); }
.line-note p { margin:8px 0; }
.line-note a { font:11px var(--mono); }
.tutorial-chapter h2 { scroll-margin-top:100px; }
@media(max-width:760px) {
 .docs-layout { grid-template-columns:1fr; gap:28px; }
 .docs-sidebar { max-height:none; overflow:visible; }
 .api-reference .item-table > li { grid-template-columns:1fr; gap:6px; }
 .api-reference .impl-items { padding-left:12px; }
 .api-reference .main-heading h1 { font-size:30px; }
 .source-line > summary { grid-template-columns:36px minmax(0,1fr); padding-right:6px; }
 .line-note { padding-left:20px; }
 .doc-outline { padding:12px; }
}
.tutorial-actions { display:flex; flex-wrap:wrap; gap:10px; margin:24px 0; }
.api-reference [id] { scroll-margin-top:100px; }
.api-reference .anchor { display:inline-block; font:13px var(--sans); opacity:.45; margin-left:8px; }
.api-reference .impl > .anchor { margin-left:0; }
.api-reference details > summary { display:grid; grid-template-columns:16px minmax(0,1fr); gap:5px; list-style:none; align-items:start; }
.api-reference details > summary::-webkit-details-marker { display:none; }
.api-reference details > summary::before { content:'›'; font:18px/1.3 var(--sans); }
.api-reference details[open] > summary::before { content:'⌄'; }
.api-reference details > summary .code-header,.api-reference details > summary section.method { margin:0; }
.api-reference .impl > .anchor { float:right; }
.source-line summary code { font-size:12px; line-height:1.9; }
@media(max-width:760px) { .source-line summary code { font-size:11px; } }
/* Ayu Dark: https://github.com/ayu-theme/ayu-colors/blob/master/themes/dark.yaml */
:root {
 --ayu-bg:#10141c; --ayu-fg:#bfbdb6; --ayu-line:#161a24; --ayu-border:#1b1f29;
 --ayu-keyword:#ff8f40; --ayu-string:#aad94c; --ayu-function:#ffb454;
 --ayu-type:#59c2ff; --ayu-constant:#d2a6ff; --ayu-operator:#f29668;
 --ayu-comment:#acb6bf; --ayu-tag:#39bae6; --ayu-special:#e6c08a;
}
.rv-code,.prose pre,.api-reference .code-header { background:var(--ayu-bg); color:var(--ayu-fg); border-radius:3px; }
.prose pre code { color:inherit; }
.api-reference .code-header { padding:12px; }
.api-reference .code-header a,.prose pre a { color:var(--ayu-type); }
.line-guide { background:var(--ayu-bg); border-color:var(--ayu-border); }
.source-line > summary,.source-line:nth-child(even) > summary { background:var(--ayu-bg); color:var(--ayu-fg); }
.source-line > summary:hover,.source-line[open] > summary { background:var(--ayu-line); }
.source-line:target > summary { background:#242c3a; box-shadow:inset 3px 0 #e6b450; }
.source-line .line-number { color:#6c7587; }
.source-line[open] .line-number,.source-line:target .line-number { color:#bfbdb6; }
.prose .syntax-comment,.prose pre .comment,.prose pre .doccomment { color:var(--ayu-comment); font-style:italic; }
.prose .syntax-keyword,.prose pre .kw,.prose pre .kw-2,.prose pre .self { color:var(--ayu-keyword); }
.prose .syntax-string,.prose pre .string { color:var(--ayu-string); }
.prose .syntax-number,.prose .syntax-constant,.prose pre .number,.prose pre .bool-val { color:var(--ayu-constant); }
.prose .syntax-function,.api-reference .code-header a.fn { color:var(--ayu-function); }
.prose .syntax-type,.prose pre .prelude-ty,.prose pre .prelude-val { color:var(--ayu-type); }
.prose .syntax-operator { color:var(--ayu-operator); }
.prose .syntax-tag,.prose pre .macro { color:var(--ayu-tag); }
.prose .syntax-attribute { color:var(--ayu-special); }
.prose pre ::selection,.source-line code ::selection { background:#3388ff40; }
/* Rustdoc module catalogues use paired definition terms and descriptions. */
.api-reference h2.section-header { border-bottom:2px solid var(--teal); padding-bottom:12px; }
.api-reference dl.item-table {
 display:grid; grid-template-columns:minmax(180px, .8fr) minmax(0, 2fr);
 gap:0; padding:0; margin:20px 0 36px; border-top:1px solid var(--docs-rule,#17231d35);
 background:var(--docs-surface,#faf7f0); border-radius:3px; overflow:hidden;
}
.api-reference dl.item-table > dt,.api-reference dl.item-table > dd {
 margin:0; padding:20px; border-bottom:1px solid var(--docs-rule,#17231d35);
}
.api-reference dl.item-table > dt { grid-column:1; border-left:3px solid var(--teal); }
.api-reference dl.item-table > dd { grid-column:2; font-size:14px; line-height:1.75; color:var(--docs-muted,#46564b); }
.api-reference dl.item-table > dt a {
 display:inline-block; max-width:100%; padding:5px 9px; border-radius:2px;
 background:var(--label-black); color:var(--teal); font:500 13px/1.7 var(--mono);
 text-decoration:none; overflow-wrap:anywhere;
}
.api-reference dl.item-table > dt a:hover { background:#3a332d; text-decoration:underline; }
.api-reference dl.item-table > dd p { margin:0; }
.api-reference dl.item-table > dd p + p { margin-top:10px; }
@media(max-width:760px) {
 .api-reference dl.item-table { grid-template-columns:minmax(0,1fr); }
 .api-reference dl.item-table > dt { grid-column:1; padding:18px 16px 10px; border-bottom:0; }
 .api-reference dl.item-table > dd { grid-column:1; padding:0 16px 18px; border-left:3px solid var(--teal); }
}
/* Documentation uses a dark reading surface within the shared site shell. */
html:has(body[data-page="ravet"] .docs-layout) { color-scheme:dark; scrollbar-color:#56606f #171a20; }
body[data-site-area="public"][data-page="ravet"]:has(.docs-layout) {
 --docs-bg:#171a20; --docs-surface:#20252d; --docs-rule:#39414d;
 --docs-text:#e7e3da; --docs-muted:#aab2bf; --docs-accent:var(--teal);
 --ink:var(--docs-text); --ink-dim:var(--docs-muted);
 background:var(--docs-bg); color:var(--docs-text); color-scheme:dark;
 scrollbar-color:#56606f var(--docs-bg);
}
.docs-layout :where(.prose) a { color:var(--docs-accent); }
.docs-layout :where(.prose) a:hover { color:#ffc4a9; }
.docs-layout .doc-search { background:var(--docs-surface); color:var(--docs-text); border-color:var(--docs-rule); }
.docs-layout .doc-search::placeholder { color:var(--docs-muted); opacity:1; }
.docs-layout .doc-results a { color:var(--docs-text); border:1px solid var(--docs-rule); border-radius:3px; }
.docs-layout .doc-results a:hover { border-color:var(--docs-accent); }
.docs-layout .doc-outline { background:var(--docs-surface); }
.docs-layout .doc-breadcrumb { color:var(--docs-muted); }
.docs-layout .docs-sidebar a:hover { color:var(--docs-accent); }
.docs-layout .docs-sidebar a[aria-current="page"] { color:var(--docs-accent); }
.docs-layout .prose th { background:var(--docs-surface); }
.docs-layout .prose hr { border:0; border-top:1px solid var(--docs-rule); }
.docs-layout .api-reference dl.item-table > dt a { background:#161a20; }
.docs-layout .api-reference dl.item-table > dt a:hover { background:#302820; }
.docs-layout .tutorial-actions .rv-button { background:var(--docs-surface); color:var(--docs-text); border-color:var(--docs-rule); }
.docs-layout .tutorial-actions .rv-button:hover { border-color:var(--docs-accent); color:var(--docs-accent); }
body[data-page="ravet"]:has(.docs-layout) :focus-visible { outline-color:var(--docs-accent); }
body[data-page="ravet"]:has(.docs-layout) .rv-subnav { color:var(--docs-muted); }
body[data-page="ravet"]:has(.docs-layout) .rv-subnav a:hover { color:var(--docs-accent); }
body[data-page="ravet"]:has(.docs-layout) .rv-footer { color:var(--docs-muted); border-top:1px solid var(--docs-rule); }
body[data-page="ravet"]:has(.docs-layout) .skip { background:var(--docs-surface); color:var(--docs-text); }
