/*! Generated by scripts/build.mjs — do not edit. Source: src/ */
/*!
 * motion.css — global motion policy.
 *
 * Components gate their own animation in JS (src/runtime/motion.js). This is
 * the backstop for CSS transitions written by hand in Designer, which no JS
 * gate can reach.
 */@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}:where(:has(>[data-rc-part=shine])){position:relative;isolation:isolate}:where(:has(>[data-rc-part=shine]))>:not([data-rc-part=shine]){position:relative;z-index:1}[data-rc-part=shine]{position:absolute;inset:0;z-index:0;overflow:hidden;border-radius:inherit;pointer-events:none}[data-rc-part=shine]:before{content:"";position:absolute;inset:-10% auto -10% 0;width:45%;background:linear-gradient(100deg,transparent,var(--rc-shine, rgb(255 255 255 / .35)),transparent);translate:-120% 0}:hover>[data-rc-part=shine]:before,:focus-visible>[data-rc-part=shine]:before,:focus-within>[data-rc-part=shine]:before{translate:340% 0;transition:translate .6s cubic-bezier(.62,.05,.01,.99)}@media(prefers-reduced-motion:reduce){[data-rc-part=shine]{display:none}}/*!
 * scroll.css — what Lenis (runtime/scroll.js) needs from the page.
 *
 * Lenis's recommended stylesheet, minus one rule: the original also turns
 * pointer events off on iframes so wheel-scrolling stays smooth over embeds,
 * which makes every embed unclickable. Clickable embeds matter more here.
 */html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-autoToggle{transition-property:overflow;transition-duration:1ms;transition-behavior:allow-discrete}.rc-scrollbar{position:fixed;inset:0 0 0 auto;z-index:9998;width:14px;opacity:0;pointer-events:none;transition:opacity .4s ease}.rc-scrollbar[data-rc-state] .rc-scrollbar__thumb{pointer-events:auto}.rc-scrollbar[data-rc-state]{opacity:1}.rc-scrollbar__thumb{position:absolute;pointer-events:none;top:0;right:4px;left:4px;border-radius:999px;background-color:var(--rc-scrollbar-thumb, rgb(0 0 0 / .35));cursor:grab;transition:background-color .2s ease}.rc-scrollbar__thumb:hover,.rc-scrollbar[data-rc-state=dragging] .rc-scrollbar__thumb{background-color:var(--rc-scrollbar-thumb-hover, currentColor)}.rc-scrollbar[data-rc-state=dragging] .rc-scrollbar__thumb{cursor:grabbing}/*!
 * site.css — site-wide CSS that deliberately lives in the repo instead of
 * Designer.
 *
 * Designer owns appearance. This file is the documented exception, for what
 * Designer cannot express: pseudo-elements, @supports, :has(), element-type
 * defaults, custom properties, print and forced-colors modes.
 *
 * ONE RULE, and it is what keeps this file from turning into a junk drawer:
 * every block carries a one-line comment saying why it is not in Designer.
 * A block without that comment belongs in Designer.
 *
 * Boundary and reasoning: docs/css-ownership.md
 */:root{--rc-brand: var(--brand-primary--500, oklch(57.1% .236 260.3));--rc-focus-ring: var(--rc-brand);--rc-selection-background: var(--rc-brand);--rc-selection-color: var(--neutral--0, #fff);--rc-scrollbar-thumb: color-mix( in oklch, var(--neutral--500, oklch(60% .015 260)) 55%, transparent );--rc-scrollbar-thumb-hover: var(--rc-brand);--rc-anchor-offset: 5rem;interpolate-size:allow-keywords}::selection{background-color:var(--rc-selection-background);color:var(--rc-selection-color)}*{-webkit-tap-highlight-color:transparent}::placeholder{color:inherit;opacity:.5}:where(button,[role=button],label[for],select,summary){cursor:pointer}:where(a){text-underline-offset:.15em}:where([id]){scroll-margin-top:var(--rc-anchor-offset)}.rc-align-middle{vertical-align:middle}.rc-grain{position:absolute;inset:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:var(--rc-grain-size, 80px);mix-blend-mode:overlay;opacity:var(--rc-grain-opacity, .5)}/*!
 * prose.css — the .rc-prose helper class: long-form rich text (a blog post's
 * body, its TL;DR, takeaways, FAQ and sources) set the way Designer cannot
 * reach. Put rc-prose on the Rich Text element, next to its own class.
 *
 * Designer keeps what it already styles on the rich text (heading sizes,
 * paragraph margins, link colour, the quote's border and type); nothing here
 * sets those. This file takes what Designer has no handle on inside a CMS
 * rich text: Webflow's own figure rules (images at 60% width, a table-caption
 * layout), :first-child / :last-child, ::marker, :not(), text-wrap,
 * tables, code, rules and footnote markers. Values come from the site's
 * variables (Webflow › Variables) and each one is a --rc-prose-* hook.
 *
 * Specificity: enough to beat Webflow's element defaults (ul padding,
 * blockquote padding, figure margin); the figure rules go above Webflow's
 * rich-text figure classes without naming them (see Images below).
 *
 * Not in Designer: pseudo-classes and pseudo-elements on the children of a
 * CMS rich text, and Webflow's internal figure styles.
 */.rc-prose{overflow-wrap:break-word}.rc-prose>:first-child{margin-top:0}.rc-prose>:last-child{margin-bottom:0}.rc-prose :is(blockquote,li,figure,td,th)>:first-child{margin-top:0}.rc-prose :is(blockquote,li,figure,td,th)>:last-child{margin-bottom:0}.rc-prose :is(h1,h2){margin-top:var(--rc-prose-h2-space, var(--spacing--12, 2.5rem));margin-bottom:var(--rc-prose-h2-after, var(--spacing--4, 1rem))}.rc-prose h3{margin-top:var(--rc-prose-h3-space, var(--spacing--8, 1.75rem));margin-bottom:var(--rc-prose-h3-after, var(--spacing--3, .75rem))}.rc-prose :is(h4,h5,h6){margin-top:var(--rc-prose-h4-space, var(--spacing--6, 1.25rem));margin-bottom:var(--rc-prose-h4-after, var(--spacing--2, .5rem))}.rc-prose :is(h1,h2,h3,h4,h5,h6){text-wrap:balance}.rc-prose :is(p,li,blockquote,figcaption){text-wrap:pretty}.rc-prose figure:not(#_){display:block;float:none;width:100%!important;max-width:100%!important;margin:var(--rc-prose-media-space, var(--spacing--8, 1.75rem)) 0}.rc-prose figure:not(#_)>div{display:block;width:100%;max-width:100%}.rc-prose img{border-radius:var(--rc-prose-radius, var(--radius--lg, .5rem))}.rc-prose figure img{display:block;width:100%;height:auto}.rc-prose figure:not(#_)>figcaption,.rc-prose figcaption{display:block;margin-top:var(--spacing--3, .75rem);color:var(--color-text--muted, currentColor);font-size:var(--text--sm, .875rem);line-height:1.5;text-align:var(--rc-prose-caption-align, center)}.rc-prose figure:has(iframe):not(#_){overflow:hidden;border-radius:var(--rc-prose-radius, var(--radius--lg, .5rem))}.rc-prose iframe{max-width:100%;border:0}.rc-prose :is(ul,ol){margin-top:var(--spacing--4, 1rem);margin-bottom:var(--spacing--4, 1rem);padding-left:var(--rc-prose-list-indent, 1.5em)}.rc-prose ul>li+li{margin-top:var(--rc-prose-item-space, var(--spacing--2, .5rem))}.rc-prose li>:is(ul,ol){margin-top:var(--spacing--2, .5rem);margin-bottom:0}.rc-prose li::marker{color:var(--rc-prose-marker, var(--color-text--muted, currentColor))}.rc-prose ol>li::marker{font-variant-numeric:tabular-nums;font-weight:600}.rc-prose blockquote{margin:var(--spacing--8, 1.75rem) 0;padding:var(--spacing--1, .25rem) 0 var(--spacing--1, .25rem) var(--spacing--5, 1rem)}.rc-prose sup{line-height:0}.rc-prose sup a{padding-inline:.125em;font-weight:600;text-decoration:none}.rc-prose table{display:block;width:fit-content;max-width:100%;margin:var(--spacing--8, 1.75rem) 0;overflow-x:auto;border:1px solid var(--border--muted, rgb(0 0 0 / .12));border-radius:var(--rc-prose-radius, var(--radius--lg, .5rem));border-collapse:collapse;font-size:var(--text--sm, .875rem);line-height:1.5;font-variant-numeric:tabular-nums}.rc-prose :is(th,td){padding:var(--spacing--3, .75rem) var(--spacing--4, 1rem);text-align:start;vertical-align:top}.rc-prose tr+tr>:is(th,td){border-top:1px solid var(--border--muted, rgb(0 0 0 / .12))}.rc-prose thead th,.rc-prose tr:first-child>th{background:var(--surface--muted, rgb(0 0 0 / .04));font-weight:600;white-space:nowrap}.rc-prose :not(pre)>code{padding:.125em .375em;border-radius:var(--radius--md, .375rem);background:var(--surface--muted, rgb(0 0 0 / .05));font-family:var( --rc-prose-code-font, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace );font-size:.875em}.rc-prose pre{margin:var(--spacing--8, 1.75rem) 0;padding:var(--spacing--5, 1rem);overflow-x:auto;border-radius:var(--rc-prose-radius, var(--radius--lg, .5rem));background:var(--surface--muted, rgb(0 0 0 / .05));font-family:var( --rc-prose-code-font, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace );font-size:var(--text--sm, .875rem);line-height:1.6}.rc-prose hr{height:0;margin:var(--spacing--12, 2.5rem) 0;border:0;border-top:1px solid var(--border--muted, rgb(0 0 0 / .12))}/*!
 * card-slider.css — the row scrolls natively and snaps card by card, with or
 * without JS. The code stamps where the row stands on the root (`start`,
 * `middle`, `end`, `static`) and the edges fade from that: only the side
 * with more cards behind it fades.
 *
 * Card look, heading and buttons come from Designer. The card widths below
 * are defaults at zero specificity: a width on the Item's class wins.
 *
 * `data-rc-bleed`: the row runs out to both edges of the viewport while its
 * first card still starts where the container starts — the container is
 * only the starting line.
 */:where([data-rc~=card-slider]){--rc-card-slider-per-view: 1.15;--rc-card-slider-gap: 1rem;--rc-card-slider-fade: min(10%, 7rem)}@media(min-width:768px){:where([data-rc~=card-slider]){--rc-card-slider-per-view: 2.15;--rc-card-slider-gap: 1.25rem}}@media(min-width:992px){:where([data-rc~=card-slider]){--rc-card-slider-per-view: 3;--rc-card-slider-gap: 1.5rem}}:where([data-rc~=card-slider][data-rc-per-view="1"]){--rc-card-slider-per-view: 1}:where([data-rc~=card-slider] [data-rc-part=track]){gap:var(--rc-card-slider-gap)}:where([data-rc~=card-slider] [data-rc-part=track]>*){width:calc((100% - var(--rc-card-slider-gap) * (var(--rc-card-slider-per-view) - 1)) / var(--rc-card-slider-per-view))}[data-rc~=card-slider] [data-rc-part=track]{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none}:where([data-rc~=card-slider] [data-rc-part=track] img){width:100%}[data-rc~=card-slider][data-rc-bleed]{overflow-x:clip}[data-rc~=card-slider][data-rc-bleed] :has(>[data-rc-part=track]){container-type:inline-size}[data-rc~=card-slider][data-rc-bleed] [data-rc-part=track]{--rc-card-slider-inset: calc((100vw - 100cqw)/2) ;margin-inline:calc(-1 * var(--rc-card-slider-inset));padding-inline:var(--rc-card-slider-inset);scroll-padding-inline:var(--rc-card-slider-inset)}:where([data-rc~=card-slider][data-rc-bleed]:not([data-rc-fade])) [data-rc-part=track]{--rc-card-slider-fade: clamp(1.5rem, var(--rc-card-slider-inset), 7rem)}.rc-js [data-rc~=card-slider][data-rc-state=empty]{display:none}[data-rc~=card-slider] [data-rc-part=track]>[hidden]{display:none}[data-rc~=card-slider] [data-rc-part=track]::-webkit-scrollbar{display:none}[data-rc~=card-slider] [data-rc-part=track]>*{flex:none;scroll-snap-align:start}@property --rc-card-slider-fade-start{syntax: "<length-percentage>"; inherits: false; initial-value: 0%;}@property --rc-card-slider-fade-end{syntax: "<length-percentage>"; inherits: false; initial-value: 0%;}[data-rc~=card-slider][data-rc-state] [data-rc-part=track]{-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--rc-card-slider-fade-start),#000 calc(100% - var(--rc-card-slider-fade-end)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--rc-card-slider-fade-start),#000 calc(100% - var(--rc-card-slider-fade-end)),transparent);transition:--rc-card-slider-fade-start .35s ease,--rc-card-slider-fade-end .35s ease}[data-rc~=card-slider]:is([data-rc-state=middle],[data-rc-state=end]) [data-rc-part=track]{--rc-card-slider-fade-start: var(--rc-card-slider-fade)}[data-rc~=card-slider]:is([data-rc-state=middle],[data-rc-state=start]) [data-rc-part=track]{--rc-card-slider-fade-end: var(--rc-card-slider-fade)}[data-rc~=card-slider] [data-rc-part=track]:is([data-rc-state=dragging],[data-rc-state=wheeling],[data-rc-state=settling]){scroll-snap-type:none}[data-rc~=card-slider] [data-rc-part=track][data-rc-state=dragging]{cursor:grabbing;user-select:none;-webkit-user-select:none}@media(hover:hover)and (pointer:fine){:where([data-rc~=card-slider][data-rc-state] [data-rc-part=track]){cursor:grab}}[data-rc~=card-slider]:is(:not([data-rc-state]),[data-rc-state=static]) :is([data-rc-part=previous],[data-rc-part=next]){visibility:hidden}:where([data-rc~=card-slider] :is([data-rc-part=previous],[data-rc-part=next])[aria-disabled=true]){opacity:.35;cursor:default;pointer-events:none}[data-rc~=card-slider] [data-rc-part=progress]{position:relative;overflow:hidden}[data-rc~=card-slider] [data-rc-part=progress]:before{content:"";position:absolute;inset-block:0;left:0;width:calc(var(--rc-card-slider-visible, 1) * 100%);translate:calc(var(--rc-card-slider-progress, 0) * (1 / var(--rc-card-slider-visible, 1) - 1) * 100%) 0;background:currentColor;border-radius:inherit}[data-rc~=card-slider]:is(:not([data-rc-state]),[data-rc-state=static]) [data-rc-part=progress]{visibility:hidden}:where([data-rc~=card-slider] [data-rc-part=progress]){height:2px;border-radius:2px;background:color-mix(in srgb,currentColor 15%,transparent)}:where([data-rc~=card-slider][data-rc-spotlight][data-rc-state]) [data-rc-part=track]>*{transition:opacity .3s ease}:where([data-rc~=card-slider][data-rc-spotlight][data-rc-state]) [data-rc-part=track]>:not([data-rc-state=active]){opacity:.2}@media(prefers-reduced-motion:reduce){:where([data-rc~=card-slider][data-rc-spotlight]) [data-rc-part=track] *,:where([data-rc~=card-slider][data-rc-spotlight]) [data-rc-part=track]>*{transition:none}}[data-rc~=card-slider] [data-rc-part=segments]>*{position:relative}[data-rc~=card-slider] [data-rc-part=segments]>*:before,[data-rc~=card-slider] [data-rc-part=segments]>*:after{content:"";position:absolute;top:0;left:0;right:0;height:var(--rc-card-slider-line, 1px);pointer-events:none}[data-rc~=card-slider] [data-rc-part=segments]>*:after{transform:scaleX(var(--rc-card-slider-fill, 0));transform-origin:left}:where([data-rc~=card-slider] [data-rc-part=segments]>*){padding-top:.875rem;transition:opacity .3s ease}:where([data-rc~=card-slider] [data-rc-part=segments]>*):before{background:color-mix(in srgb,currentColor 18%,transparent)}:where([data-rc~=card-slider] [data-rc-part=segments]>*):after{background:currentColor}:where([data-rc~=card-slider][data-rc-state] [data-rc-part=segments]>:not([data-rc-state=active])){opacity:.55}[data-rc~=card-slider] [data-rc-part=toggle][aria-pressed=true] [data-rc-part=icon-pause],[data-rc~=card-slider] [data-rc-part=toggle]:not([aria-pressed=true]) [data-rc-part=icon-play]{display:none}[data-rc~=card-slider] [data-rc-part=toggle][hidden]{display:none}/*!
 * card-stack.css — behavioural styles only. The cards' layout (the grid,
 * the picture column, padding, borders), their opaque background — which
 * is what hides a passed card's body under the next card — and every
 * colour come from Designer.
 *
 * One mechanic. While the stack is on (root state `stacking`, stamped by
 * card-stack.js on wide screens only) the list's wrapper sticks at
 * --rc-card-stack-top and clips, its parent carries the scroll distance as
 * height, and the cards' places are written by the code every frame. A
 * later card paints over an earlier one because every card is positioned,
 * in DOM order. Without JavaScript, on narrow screens and with reduced
 * motion nothing here applies: the column is Designer's plain list.
 */:where(.rc-js [data-rc~=card-stack] [data-rc-part=card]){position:relative}.rc-js [data-rc~=card-stack][data-rc-state=stacking] [data-rc-part=stack]{position:sticky;top:var(--rc-card-stack-top, 0px);overflow:clip}.rc-js [data-rc~=card-stack][data-rc-state=stacking] [data-rc-part=card]{will-change:translate}:where(.rc-js [data-rc~=card-stack][data-rc-state=stacking] [data-rc-part=visual]){transition:opacity .3s ease}.rc-js [data-rc~=card-stack] [data-rc-part=card][data-rc-state=stacked] [data-rc-part=visual]{opacity:0}/*!
 * carousel.css — behavioural styles only. Card width, gap, alignment and
 * every look come from the Designer classes on the Collection List.
 */[data-rc~=carousel]:not([data-rc-state]){overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none}[data-rc~=carousel]:not([data-rc-state])::-webkit-scrollbar{display:none}[data-rc~=carousel]:not([data-rc-state])>[data-rc-part=track]>*{scroll-snap-align:center}[data-rc~=carousel][data-rc-state]{overflow:clip;touch-action:pan-y}[data-rc~=carousel][data-rc-state]>[data-rc-part=track]{flex-wrap:nowrap}[data-rc~=carousel][data-rc-state]>[data-rc-part=track]>*{flex:none}:where([data-rc~=carousel][data-rc-state]){cursor:grab}[data-rc~=carousel][data-rc-state=dragging]{cursor:grabbing;user-select:none;-webkit-user-select:none}:where([data-rc~=carousel][data-rc-bleed]){width:100vw;margin-inline:calc(50% - 50vw)}/*!
 * case-switcher.css — behavioural styles only. The two-column layout, the
 * logo grid, tile sizes, colours, the figures' type and the arrow badge come
 * from Designer.
 *
 * Two mechanics. The logo tile's cover (the white logo over a picture) waits
 * invisible and comes up on hover, keyboard focus or the active state — pure
 * CSS, it works without JavaScript. The panels stack in one grid cell and
 * one shows at a time; that stacking is gated on .rc-js so that without
 * JavaScript every panel is in normal flow, one under the other, and before
 * the chunk arrives the first panel is the one on show.
 */:where([data-rc~=case-switcher] [data-rc-part=logo]){position:relative;display:block}[data-rc~=case-switcher] [data-rc-part=cover]{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .3s}[data-rc~=case-switcher] [data-rc-part=logo]:is(:hover,:focus-visible,[data-rc-state=active]) [data-rc-part=cover]{opacity:1}.rc-js [data-rc~=case-switcher] [data-rc-part=panels]{display:grid;grid-template-areas:"stack"}:where(.rc-js [data-rc~=case-switcher] [data-rc-part=panels]){align-items:start}.rc-js [data-rc~=case-switcher] [data-rc-part=panels]>*{grid-area:stack;opacity:0;visibility:hidden;pointer-events:none;translate:0 1rem;transition:opacity .25s,translate .25s,visibility 0s .25s}.rc-js [data-rc~=case-switcher] [data-rc-part=panels]>[data-rc-state=active],.rc-js [data-rc~=case-switcher] [data-rc-part=panels]:not([data-rc-panel-active])>:first-child{opacity:1;visibility:visible;pointer-events:auto;translate:0 0;transition:opacity .35s .25s,translate .35s .25s,visibility 0s}/*!
 * dock.css — behavioural styles only. The bar's look (background, radius,
 * padding, the logo strip, the buttons, the avatars) comes from Designer.
 *
 * Everything that positions or hides the bar is gated on .rc-js: without
 * JavaScript it stays a normal block where Designer put it. The bar is
 * hidden with visibility, never display: none, so it keeps a box in the
 * viewport — the runtime mounts a component when its box nears the screen.
 */[data-rc~=dock]{--rc-dock-offset: 1rem;--rc-dock-layer: 900;--rc-dock-pulse-color: rgb(193 175 145 / .5);--rc-dock-pulse-duration: 2.4s;--rc-dock-pulse-count: 2}.rc-js [data-rc~=dock]{position:fixed;z-index:var(--rc-dock-layer);bottom:var(--rc-dock-offset);inset-inline:0;margin-inline:auto;transition:opacity .4s,translate .5s cubic-bezier(.22,1,.36,1),visibility 0s}:where(.rc-js [data-rc~=dock]){width:fit-content;max-width:calc(100% - 2 * var(--rc-dock-offset))}.rc-js [data-rc~=dock]:not([data-rc-state=shown]):not(:focus-within){visibility:hidden;opacity:0;translate:0 min(100% + var(--rc-dock-offset),6rem);pointer-events:none;transition:opacity .25s,translate .25s ease-in,visibility 0s .25s}html[data-rc-dock-shown]{scroll-padding-bottom:var(--rc-dock-clearance, 6rem)}:where([data-rc~=dock] [data-rc-part=pulse]){position:relative}[data-rc~=dock] [data-rc-part=pulse]:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none}@media(prefers-reduced-motion:no-preference){[data-rc~=dock][data-rc-state=shown] [data-rc-part=pulse],[data-rc~=dock][data-rc-state=shown] [data-rc-part=pulse]:after{animation:var(--rc-dock-pulse-duration) ease-in-out .5s var(--rc-dock-pulse-count)}[data-rc~=dock][data-rc-state=shown] [data-rc-part=pulse]{animation-name:rc-dock-pulse}[data-rc~=dock][data-rc-state=shown] [data-rc-part=pulse]:after{animation-name:rc-dock-pulse-ring}}@keyframes rc-dock-pulse{50%{scale:1.02}}@keyframes rc-dock-pulse-ring{0%,to{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 4px var(--rc-dock-pulse-color)}}/*!
 * drift.css — no behavioural styles: the site sets the root's height, the
 * sticky stage and the still layout for [data-rc-state="static"] (Tailwind).
 *//*!
 * dropdown.css — the list stays shut until the button opens it, and opens
 * under the button. The button's and the list's look are Designer's; the
 * defaults below are at zero specificity.
 */:where(.rc-js [data-rc~=dropdown] [data-rc-part=menu]){padding:.25rem;border:1px solid color-mix(in srgb,currentColor 12%,transparent);border-radius:.5rem;background:#fff;box-shadow:0 8px 24px #00000014}:where(.rc-js [data-rc~=dropdown]){display:flex}:where([data-rc~=dropdown] [data-rc-part=trigger]){white-space:nowrap}:where([data-rc~=dropdown] [data-rc-part=menu]) a{display:flex;justify-content:space-between;gap:1rem;padding:.5rem .75rem;border-radius:.375rem;color:color-mix(in srgb,currentColor 60%,transparent);text-decoration:none;white-space:nowrap}:where([data-rc~=dropdown] [data-rc-part=menu]) a:hover,:where([data-rc~=dropdown] [data-rc-part=menu]) a:focus-visible{background:color-mix(in srgb,currentColor 6%,transparent);color:inherit;text-decoration:none;outline:none}:where([data-rc~=dropdown] [data-rc-part=menu]) a[aria-current=page]{color:inherit;pointer-events:none}:where([data-rc~=dropdown] [data-rc-part=caret]){transition:rotate .2s ease}:where([data-rc~=dropdown][data-rc-state=open] [data-rc-part=caret]){rotate:180deg}[data-rc~=flip-board] [data-rc-part=cell]{position:relative}[data-rc~=flip-board] [data-rc-part=top]{z-index:1}[data-rc~=flip-board] [data-rc-part=bottom]{z-index:2}[data-rc~=flip-board] [data-rc-flap]{z-index:3;backface-visibility:hidden;transform-origin:50% 50%;will-change:transform}[data-rc~=flip-board] [data-rc-part=bottom]+[data-rc-flap]{z-index:4}/*!
 * header.css — the header's scroll states (header.js). The morph between
 * "top" and "scrolled" is the site's own CSS; this file only holds what
 * the states must do whatever the look.
 */[data-rc~=header][data-rc-state~=settling],[data-rc~=header][data-rc-state~=settling] *{transition:none!important}:where([data-rc~=header]){transition:translate var(--rc-header-duration, .6s) var(--rc-header-ease, cubic-bezier(.22, 1, .36, 1))}[data-rc~=header][data-rc-state~=hidden]:not(:focus-within):not([data-rc-open-within]){translate:0 calc(-100% - var(--rc-header-hide-gap, 0px))}/*!
 * hero.css — behavioural styles that may arrive after first paint.
 * Layout of the tile grid, typography and spacing are Designer's; see README.
 */[data-rc~=hero]{--rc-hero-brightness: .75;--rc-hero-grain-opacity: .5;--rc-hero-grain-size: 80px}:where([data-rc~=hero] [data-rc-part=media]){overflow:hidden;background:#000}:where([data-rc~=hero] [data-rc-part=tile]),:where([data-rc~=hero] [data-rc-part=tile-center]){border-radius:var(--rc-hero-tile-radius, 1rem);overflow:clip}[data-rc~=hero] [data-rc-part=shade]{background:rgb(0 0 0 / calc(1 - var(--rc-hero-brightness)))}[data-rc~=hero] [data-rc-part=grain]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:var(--rc-hero-grain-size);mix-blend-mode:overlay;opacity:var(--rc-hero-grain-opacity)}[data-rc~=hero] .rc-line{clip-path:inset(-.5em)}[data-rc~=hero][data-rc-state=armed] [data-rc-part=media],[data-rc~=hero][data-rc-state=armed] [data-rc-part=grain]{pointer-events:none}/*!
 * hero-video-scroll.css — behavioural styles that may arrive after first
 * paint. Everything the scene needs before that (heights, the sticky
 * stage, the layers, the start states) is in hero-video-scroll.critical.css;
 * the frame's size, the words' typography and offsets and every colour are
 * Designer's (README).
 */[data-rc~=hero-video-scroll][data-rc-state=armed] [data-rc-part=frame],[data-rc~=hero-video-scroll][data-rc-state=armed] :is([data-rc-part=heading-back],[data-rc-part=heading-front]){will-change:transform}[data-rc~=hero-video-scroll] .rc-char{display:inline-block}/*!
 * horizontal-scroll.css — behavioural styles only. Card size, gap, the
 * stage's inner layout and every look come from Designer.
 */[data-rc~=horizontal-scroll]:not([data-rc-state]) [data-rc-part=track],[data-rc~=horizontal-scroll][data-rc-state=static] [data-rc-part=track]{overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none}[data-rc~=horizontal-scroll]:not([data-rc-state]) [data-rc-part=track]::-webkit-scrollbar,[data-rc~=horizontal-scroll][data-rc-state=static] [data-rc-part=track]::-webkit-scrollbar{display:none}[data-rc~=horizontal-scroll]:not([data-rc-state]) [data-rc-part=track]>*,[data-rc~=horizontal-scroll][data-rc-state=static] [data-rc-part=track]>*{scroll-snap-align:start}[data-rc~=horizontal-scroll][data-rc-state=pinned] [data-rc-part=stage]{height:calc(100svh - var(--rc-horizontal-scroll-top, 0px));box-sizing:border-box;overflow-x:clip}[data-rc~=horizontal-scroll][data-rc-state=pinned] [data-rc-part=track]{flex-wrap:nowrap;will-change:transform}[data-rc~=horizontal-scroll][data-rc-state=pinned] [data-rc-part=track]>*{flex:none}/*!
 * hover-reveal.css — behavioural styles only. The card's size, radius,
 * background and everything drawn on top of the picture come from Designer.
 */[data-rc~=hover-reveal]{position:relative;isolation:isolate;overflow:clip}[data-rc~=hover-reveal] [data-rc-part=media]{position:absolute;inset:0;z-index:-1;width:100%;height:100%;object-fit:cover;pointer-events:none}[data-rc~=hover-reveal] [data-rc-part=media]>img,[data-rc~=hover-reveal] [data-rc-part=media]>video{display:block;width:100%;height:100%;object-fit:cover}.rc-js [data-rc~=hover-reveal] [data-rc-part=media]{clip-path:inset(var(--rc-hover-reveal-inset, 100% 0 0 0));transform:scale(var(--rc-hover-reveal-zoom, 1.12));transition:clip-path var(--rc-hover-reveal-duration, .6s) var(--rc-hover-reveal-easing, cubic-bezier(.22, 1, .36, 1)),transform var(--rc-hover-reveal-duration, .6s) var(--rc-hover-reveal-easing, cubic-bezier(.22, 1, .36, 1)),opacity var(--rc-hover-reveal-duration, .6s) var(--rc-hover-reveal-easing, cubic-bezier(.22, 1, .36, 1))}.rc-js [data-rc~=hover-reveal][data-rc-state=active] [data-rc-part=media]{clip-path:inset(0);transform:scale(1)}.rc-js [data-rc~=hover-reveal][data-rc-effect=fade] [data-rc-part=media]{clip-path:none;opacity:0}.rc-js [data-rc~=hover-reveal][data-rc-effect=fade][data-rc-state=active] [data-rc-part=media]{opacity:1}/*!
 * image-trail.css — behavioural styles only. Card size, radius, shadow and
 * the picture's fit come from Designer.
 */:where([data-rc~=image-trail]){position:relative}[data-rc~=image-trail] [data-rc-part=trail]{position:absolute;inset:0;overflow:clip;isolation:isolate;pointer-events:none}[data-rc~=image-trail] [data-rc-part=item]{position:absolute;top:0;left:0;pointer-events:none;user-select:none}.rc-js [data-rc~=image-trail]:not([data-rc-state=active]):not([data-rc-state=static]) [data-rc-part=item]{scale:.5;clip-path:inset(50%)}.rc-js [data-rc~=image-trail]:is([data-rc-state=idle],[data-rc-state=active]) [data-rc-part=item]{transition:scale .8s cubic-bezier(.87,0,.13,1),clip-path .8s cubic-bezier(.87,0,.13,1);will-change:transform}.rc-js [data-rc~=image-trail][data-rc-state=active] [data-rc-part=item]{scale:1;clip-path:inset(0)}[data-rc~=image-trail]:not([data-rc-state=idle]):not([data-rc-state=active]) [data-rc-part=item]{transform:translate(-50%,-50%)}[data-rc~=image-trail]:not([data-rc-state=idle]):not([data-rc-state=active]) [data-rc-part=item]:nth-child(1){left:14%;top:30%}[data-rc~=image-trail]:not([data-rc-state=idle]):not([data-rc-state=active]) [data-rc-part=item]:nth-child(2){left:86%;top:24%}[data-rc~=image-trail]:not([data-rc-state=idle]):not([data-rc-state=active]) [data-rc-part=item]:nth-child(3){left:20%;top:78%}[data-rc~=image-trail]:not([data-rc-state=idle]):not([data-rc-state=active]) [data-rc-part=item]:nth-child(4){left:80%;top:80%}[data-rc~=image-trail]:not([data-rc-state=idle]):not([data-rc-state=active]) [data-rc-part=item]:nth-child(n+5){left:50%;top:88%}/*!
 * line-draw.css — armed and drawing (line-draw.js). Dash and gap are the
 * stroke's measured length; the offset runs from that length to 0 in
 * 0.6 s, ease-in-out-quart (BRIEF §2.7), after the stroke's own
 * --rc-draw-delay. Once a stroke is "done" none of this applies.
 */[data-rc~=line-draw] [data-draw][data-rc-state=waiting],[data-rc~=line-draw] [data-draw][data-rc-state=drawn]{stroke-dasharray:var(--rc-draw-length, 64) var(--rc-draw-length, 64);stroke-dashoffset:var(--rc-draw-length, 64)}[data-rc~=line-draw] [data-draw][data-rc-state=drawn]{stroke-dashoffset:0;transition:stroke-dashoffset var(--rc-draw-duration, .6s) var(--rc-draw-ease, cubic-bezier(.62, .05, .01, .99)) var(--rc-draw-delay, 0s)}/*!
 * marquee.css — behavioural styles only. Item size, gap and colour come from
 * the Designer classes on the Collection List.
 *
 * Every rule is gated on data-rc-state, which only the JS stamps: a list
 * without JS (or with reduced motion) keeps whatever layout Designer gave it.
 * Play state (pause on hover, focus, drag) is not here — marquee.js drives it
 * through the Web Animations API, and a CSS animation-play-state would be
 * ignored once that API has touched the animation.
 */[data-rc~=marquee][data-rc-state]{display:flex;overflow:hidden;touch-action:pan-y}:where([data-rc~=marquee][data-rc-state]){-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--rc-marquee-fade, 10%),#000 calc(100% - var(--rc-marquee-fade, 10%)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--rc-marquee-fade, 10%),#000 calc(100% - var(--rc-marquee-fade, 10%)),transparent)}:where([data-rc~=marquee][data-rc-state]:not([data-rc-drag=false])){cursor:grab}[data-rc~=marquee][data-rc-state=dragging]{cursor:grabbing;user-select:none;-webkit-user-select:none}[data-rc~=marquee][data-rc-state]>[data-rc-part=track],[data-rc~=marquee][data-rc-state]>[aria-hidden=true]{flex:none;animation:rc-marquee var(--rc-marquee-duration, 20s) linear infinite}[data-rc~=marquee][data-rc-direction=right][data-rc-state]>*{animation-direction:reverse}@keyframes rc-marquee{to{transform:translate(calc(-1 * var(--rc-marquee-distance, 100%)))}}/*!
 * masthead.css — no behavioural styles: the site draws the list, the
 * picture stack and the crossfade on [data-rc-active] (Tailwind).
 *//*!
 * media-reveal.css — parallax room. With data-rc-parallax the image is
 * taller than its frame by the travel (30 % by default) and centred, so it
 * can move ±travel/2 without showing an edge; the code writes
 * --rc-media-shift (−travel/2…+travel/2) as the page scrolls.
 */[data-rc~=media-reveal][data-rc-parallax]:not([data-rc-state=static]) [data-rc-part=media]{position:relative}[data-rc~=media-reveal][data-rc-parallax]:not([data-rc-state=static]) :is([data-rc-part=media]>:is(img,video,picture),[data-rc-part=image]){position:absolute;inset:calc(var(--rc-media-travel, .3) * -50%) 0;width:100%;height:calc(100% * (1 + var(--rc-media-travel, .3)));object-fit:cover;translate:0 calc(var(--rc-media-shift, 0) * 100% / (1 + var(--rc-media-travel, .3)));will-change:translate}/*!
 * paged-list.css — the list dims while the next page is on its way. Layout,
 * cards and the pagination's look come from Designer.
 */:where([data-rc~=paged-list]){transition:opacity .2s ease}:where([data-rc~=paged-list][data-rc-state=loading]){opacity:.5}[data-rc~=paged-list][data-rc-state=loading]{pointer-events:none}[data-rc~=paged-list]:has([data-rc-part=pages]) [data-rc-part=count]{display:none}[data-rc~=paged-list] [data-rc-part=pagination]:has([data-rc-part=pages]){display:grid;grid-template-columns:1fr auto 1fr;align-items:center}[data-rc~=paged-list] [data-rc-part=pagination]>[data-rc-part=previous]{grid-column:1;justify-self:end}[data-rc~=paged-list] [data-rc-part=pagination]>[data-rc-part=pages]{grid-column:2}[data-rc~=paged-list] [data-rc-part=pagination]>[data-rc-part=next]{grid-column:3;justify-self:start}[data-rc~=paged-list] [data-rc-part=pages]{display:flex;align-items:center;gap:var(--rc-paged-list-gap, .25rem);margin:0;padding:0;list-style:none}[data-rc~=paged-list] [data-rc-part=pages]>li{display:flex;align-items:center;justify-content:center;min-width:var(--rc-paged-list-size, 2rem);margin:0;padding:0;font-size:var(--rc-paged-list-font-size, .875rem);line-height:1}[data-rc~=paged-list] [data-rc-part=pages]>li::marker{content:none}[data-rc~=paged-list] [data-rc-part=pages] a{display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:var(--rc-paged-list-size, 2rem);height:var(--rc-paged-list-size, 2rem);padding:0 .375rem;border-radius:999px;background-color:transparent;color:inherit;font:inherit;text-decoration:none;transition:background-color .2s ease}[data-rc~=paged-list] [data-rc-part=pages] a:hover,[data-rc~=paged-list] [data-rc-part=pages] a:focus-visible{background-color:color-mix(in srgb,currentColor 8%,transparent);color:inherit;text-decoration:none}[data-rc~=paged-list] [data-rc-part=pages] a[aria-current=page]{background-color:var( --rc-paged-list-active-background, var(--neutral--900, #111) );color:var(--rc-paged-list-active-color, var(--neutral--0, #fff));pointer-events:none}[data-rc~=paged-list] [data-rc-part=pages]>[data-rc-state=gap]{opacity:.5}/*!
 * post.css — behavioural styles for a blog post's rich text. The look of
 * its tables, quotes, images and lists is the .rc-prose helper's
 * (base/prose.css).
 */[data-rc~=post] [data-rc-part=body] table{display:block;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain}[data-rc~=post] [data-rc-part=sources] li{scroll-margin-top:var(--rc-toc-offset, 6rem)}[data-rc~=post] [data-rc-part=sources] li:target{border-radius:var(--radius--md, .375rem);background:color-mix(in oklch,var(--rc-brand) 10%,transparent);box-shadow:0 0 0 .375rem color-mix(in oklch,var(--rc-brand) 10%,transparent)}/*!
 * reading-progress.css — behavioural styles only. The bar's height, colour
 * and place (fixed to the top of the screen, say) come from Designer; its
 * start state is in reading-progress.critical.css.
 */@supports (animation-timeline: view()){[data-rc~=reading-progress]{timeline-scope:--rc-reading}[data-rc~=reading-progress] [data-rc-part=body]{view-timeline:--rc-reading block}[data-rc~=reading-progress] [data-rc-part=bar]{animation:rc-reading-progress linear both;animation-timeline:--rc-reading;animation-range:contain 0% contain 100%}@keyframes rc-reading-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}}/*!
 * reel.css — behavioural styles only. Row layout, type, borders, the
 * strip's height, the photo's size, corner radius and every colour come
 * from Designer.
 *
 * Three mechanics. The strip: while the reel rolls it is a clipped column
 * with the track and its copies stacked inside, sliding up by one track
 * height per loop — gated on the root's state, which only reel.js stamps,
 * so a list without JS (or with reduced motion) keeps Designer's layout.
 * The rows: once one is current the others rest at reduced opacity. The
 * photos: under .rc-js their Wrapper is a fixed layer over the page that
 * takes no clicks, the list inside stacks every photo in one cell and is
 * moved by the code, and only the current photo shows.
 */[data-rc~=reel]:is([data-rc-state=running],[data-rc-state=paused]) [data-rc-part=strip]{display:flex;flex-direction:column;overflow:hidden}[data-rc~=reel]:is([data-rc-state=running],[data-rc-state=paused]) [data-rc-part=strip]>:is([data-rc-part=track],[aria-hidden=true]){flex:none;animation:rc-reel var(--rc-reel-duration, 20s) linear infinite}[data-rc~=reel][data-rc-direction=down]:is([data-rc-state=running],[data-rc-state=paused]) [data-rc-part=strip]>*{animation-direction:reverse}@keyframes rc-reel{to{transform:translateY(calc(-1 * var(--rc-reel-distance, 100%)))}}:where([data-rc~=reel]:is([data-rc-state=running],[data-rc-state=paused]) [data-rc-part=strip]){-webkit-mask-image:linear-gradient(to bottom,transparent,#000 var(--rc-reel-fade, 10%),#000 calc(100% - var(--rc-reel-fade, 10%)),transparent);mask-image:linear-gradient(to bottom,transparent,#000 var(--rc-reel-fade, 10%),#000 calc(100% - var(--rc-reel-fade, 10%)),transparent)}:where([data-rc~=reel] [data-rc-part=row]){transition:opacity .3s}:where([data-rc~=reel] [data-rc-part=strip][data-rc-row-active] [data-rc-part=row]:not([data-rc-state=active])){opacity:var(--rc-reel-rest, .2)}.rc-js [data-rc~=reel] [data-rc-part=photos]{position:fixed;inset:0;pointer-events:none;z-index:var(--rc-reel-layer, 50)}.rc-js [data-rc~=reel] [data-rc-part=cursor]{position:absolute;top:0;left:0;display:grid;grid-template-areas:"stack";will-change:translate}.rc-js [data-rc~=reel] [data-rc-part=cursor]>*{grid-area:stack;opacity:0;scale:.95;transition:opacity .4s,scale .4s}.rc-js [data-rc~=reel] [data-rc-part=cursor]>[data-rc-state=active]{opacity:1;scale:1}[data-rc~=reel] [data-rc-part=cursor] :is(img,video){display:block;width:100%;height:100%;object-fit:cover}:where(html:not(.rc-js) [data-rc~=reel] [data-rc-part=cursor]){display:flex;flex-wrap:wrap;gap:1rem}/*!
 * reveal.css — behavioural styles only: the start states of what reveal.js
 * animates, and the media frame's mechanics. Layout, typography, the media
 * layer's position and every look come from Designer.
 */:where([data-rc~=reveal]){position:relative}:where([data-rc~=reveal] [data-rc-part=media]){position:absolute;inset:0}[data-rc~=reveal] [data-rc-part=media]{overflow:clip}[data-rc~=reveal] [data-rc-part=media]>*{display:block;width:100%;height:100%}[data-rc~=reveal] [data-rc-part=media] video{display:block;width:100%;height:100%;object-fit:cover}[data-rc~=reveal] .rc-line{clip-path:inset(-.5em)}@media(prefers-reduced-motion:no-preference){.rc-js [data-rc~=reveal]:not([data-rc-state]) [data-rc-part=text],.rc-js [data-rc~=reveal]:not([data-rc-state]) [data-rc-part=rise]{opacity:.2;transform:translateY(24px);animation:rc-reveal-fallback .6s 3s both}.rc-js [data-rc~=reveal]:not([data-rc-state]) [data-rc-part=media]{opacity:0;visibility:hidden;clip-path:inset(25%);animation:rc-reveal-fallback .6s 3s both}.rc-js [data-rc~=reveal]:not([data-rc-state]) [data-rc-part=media]>*{transform:scale(1.2);animation:rc-reveal-fallback .6s 3s both}html.rc-runtime [data-rc~=reveal]:not([data-rc-state]) :is([data-rc-part=text],[data-rc-part=rise],[data-rc-part=media],[data-rc-part=media]>*){animation-play-state:paused}@keyframes rc-reveal-fallback{to{opacity:1;visibility:visible;transform:none;clip-path:inset(0)}}}/*!
 * rise.css — armed and rising (rise.js). 24px, 0.9 s, power3.out, each
 * element after its own --rc-rise-delay (BRIEF §0.9 "Yükselme"). Once the
 * state is "done" none of this applies.
 */[data-rc~=rise][data-rc-state=waiting]:not(:has([data-rc-part=item])),[data-rc~=rise][data-rc-state=waiting] [data-rc-part=item]{opacity:0;translate:0 24px}[data-rc~=rise][data-rc-state=risen]:not(:has([data-rc-part=item])),[data-rc~=rise][data-rc-state=risen] [data-rc-part=item]{transition:opacity var(--rc-rise-duration, .9s) var(--rc-rise-ease, cubic-bezier(.215, .61, .355, 1)) var(--rc-rise-delay, 0s),translate var(--rc-rise-duration, .9s) var(--rc-rise-ease, cubic-bezier(.215, .61, .355, 1)) var(--rc-rise-delay, 0s)}/*!
 * search.css — what the dialog shows in each state, the page's scroll lock
 * while it is open, and a few defaults Designer can override. The dialog's
 * box, the groups and the result cards are styled in Designer.
 *
 * States on the root (code): idle (no query: recent searches, popular
 * topics), loading, results, empty. Closed: no state.
 */[data-rc~=search]:not([data-rc-state=idle]) [data-rc-part=idle],[data-rc~=search]:not([data-rc-state=loading]) [data-rc-part=loader],[data-rc~=search]:not([data-rc-state=results]) [data-rc-part=results],[data-rc~=search]:not([data-rc-state=empty]) [data-rc-part=empty]{display:none}[data-rc~=search] [hidden]{display:none}html:has([data-rc~=search] [data-rc-part=dialog][open]){overflow:hidden}[data-rc~=search]:not([data-rc-platform=other]) [data-rc-part=shortcut-other],[data-rc~=search][data-rc-platform=other] [data-rc-part=shortcut-mac]{display:none}[data-rc~=search][data-rc-platform=other] [data-rc-part=shortcut-other]{display:block}:where([data-rc~=search] [data-rc-part=dialog]){width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;border:0;background:transparent;overflow-y:auto;overscroll-behavior:contain}[data-rc~=search] [data-rc-part=dialog]::backdrop{background:#00000014;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}@media(prefers-reduced-motion:no-preference){[data-rc~=search] [data-rc-part=dialog][open]{animation:rc-search-in .2s ease}[data-rc~=search] [data-rc-part=dialog][open]::backdrop{animation:rc-search-fade .2s ease}:where([data-rc~=search] [data-rc-part=loader]){animation:rc-search-spin .7s linear infinite}}@keyframes rc-search-in{0%{opacity:0;translate:0 -.5rem}}@keyframes rc-search-fade{0%{opacity:0}}@keyframes rc-search-spin{to{rotate:1turn}}:where([data-rc~=search] [data-rc-part=result-title] strong){font-weight:600}/*!
 * share.css — behavioural styles only. The links' look comes from Designer.
 */html:not(.rc-js) [data-rc~=share]{display:none}[data-rc~=signal-path]:not([data-rc-state=running]) [data-rc-part=dot],[data-rc~=signal-path]:not([data-rc-state=running]) [data-rc-part=trail]{opacity:0}/*!
 * skew-slider.css — two layouts and a full-screen view.
 *
 * The plain row (no JS, reduced motion, state "static"): a horizontal
 * scroll-snap strip of flat cards. The deck (state "active", skew-slider.js):
 * cards absolutely placed at --rc-skew-x, sheared by --rc-skew-angle,
 * overlapping, the right one on top. The card's size is
 * --rc-skew-card-width (default clamp(15rem, 26vw, 24rem)) and its image
 * ratio --rc-skew-card-ratio (16 / 10); colours, radius, caption type are
 * Designer's.
 */[data-rc~=skew-slider]{--rc-skew-card-width: clamp(15rem, 26vw, 24rem);--rc-skew-card-ratio: 16 / 10;--rc-skew-angle: 30deg;position:relative}[data-rc~=skew-slider] [data-rc-part=track]{display:flex;gap:1rem;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none}[data-rc~=skew-slider] [data-rc-part=card]{position:relative;flex:0 0 var(--rc-skew-card-width);scroll-snap-align:start}[data-rc~=skew-slider] [data-rc-part=card] img{display:block;width:100%;aspect-ratio:var(--rc-skew-card-ratio);object-fit:cover;object-position:top}[data-rc~=skew-slider][data-rc-state~=active] [data-rc-part=track]{display:block;position:relative;overflow:clip visible;height:calc(var(--rc-skew-card-width) * (10 / 16 + tan(var(--rc-skew-angle))) + 2rem);padding-top:1.5rem;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none}[data-rc~=skew-slider][data-rc-state~=dragging] [data-rc-part=track]{cursor:grabbing}[data-rc~=skew-slider][data-rc-state~=active] [data-rc-part=card]{position:absolute;top:1.5rem;left:0;width:var(--rc-skew-card-width);transform:translate3d(var(--rc-skew-x, 0px),0,0) skewY(var(--rc-skew-angle));transform-origin:0 0;will-change:transform;transition:translate .25s cubic-bezier(.22,1,.36,1),filter .25s cubic-bezier(.22,1,.36,1)}[data-rc~=skew-slider][data-rc-state~=active] [data-rc-part=card] a{-webkit-user-drag:none}[data-rc~=skew-slider][data-rc-state~=hovering] [data-rc-part=card]:not([data-rc-state=lifted]){filter:brightness(var(--rc-skew-dim, .45))}[data-rc~=skew-slider] [data-rc-part=card][data-rc-state=lifted]{translate:0 -.75rem}[data-rc~=skew-slider][data-rc-state~=active] [data-rc-part=caption]{position:absolute;top:calc(100% + .75rem);left:0;transform:skewY(calc(-1 * var(--rc-skew-angle)));transform-origin:0 0;opacity:0;pointer-events:none;white-space:nowrap;transition:opacity .25s cubic-bezier(.22,1,.36,1)}[data-rc~=skew-slider][data-rc-state~=active] [data-rc-part=card]:is([data-rc-state=lifted],:focus-within) [data-rc-part=caption]{opacity:1}[data-rc~=skew-slider] [data-rc-part=card] [data-rc-part=visit-label]{display:none}[data-rc~=skew-slider] [data-rc-part=dialog]{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:clamp(1rem,6vw,7.5rem);border:0;background:transparent;overflow:hidden}[data-rc~=skew-slider] [data-rc-part=dialog]::backdrop{background:var(--rc-skew-backdrop, rgb(0 0 0 / .85))}[data-rc~=skew-slider] [data-rc-part=view]{position:relative;width:100%;height:100%}[data-rc~=skew-slider] [data-rc-part=visit]{display:block;width:100%;height:100%}[data-rc~=skew-slider] [data-rc-part=visit] img{display:block;width:100%;height:100%;object-fit:cover;object-position:top;border-radius:var(--rc-skew-radius, .75rem)}[data-rc~=skew-slider] [data-rc-part=view] [data-rc-part=caption]{position:absolute;right:0;bottom:0;translate:1rem 1rem}[data-rc~=skew-slider] [data-rc-part=view] [data-rc-part=visit-label]{display:revert}[data-rc~=skew-slider] [data-rc-part=close]{position:absolute;top:calc(clamp(1rem,6vw,7.5rem) - 1.25rem);left:calc(clamp(1rem,6vw,7.5rem) - 1.25rem);z-index:1;display:grid;place-items:center;width:2.5rem;height:2.5rem;border:0;border-radius:999px;background:var(--rc-skew-close, #fff);color:var(--rc-skew-close-ink, #000);cursor:pointer}[data-rc~=skew-slider] [data-rc-part=close] svg{width:1.25rem;height:1.25rem}[data-rc~=skew-slider] [data-rc-part=dialog][open] [data-rc-part=view]{transition:opacity .6s cubic-bezier(.22,1,.36,1),scale .6s cubic-bezier(.22,1,.36,1)}@starting-style{[data-rc~=skew-slider] [data-rc-part=dialog][open] [data-rc-part=view]{opacity:0;scale:.94}}/*!
 * slider.css — behavioural styles of the shared slider. Card look, gaps and
 * widths come from the template (Tailwind on the parts) or Designer; the
 * widths below are zero-specificity defaults.
 *
 * No JS: the track is a wrapped row — every card visible, nothing clipped.
 * JS on (html.rc-js): one row inside a clipping viewport, moved by
 * transforms (slider.js). Never a native horizontal scroller.
 * `fallback` (GSAP did not arrive) returns to the wrapped row.
 */:where([data-rc~=slider]){--rc-slider-per-view: 1.15;--rc-slider-gap: 1rem;--rc-slider-fade: 6%}@media(min-width:768px){:where([data-rc~=slider]){--rc-slider-per-view: 2.2;--rc-slider-gap: 1.25rem}}@media(min-width:1200px){:where([data-rc~=slider]){--rc-slider-per-view: 3.2;--rc-slider-gap: 1.5rem}}@media(min-width:1800px){:where([data-rc~=slider]){--rc-slider-per-view: 4.2}}:where([data-rc~=slider][data-rc-mode=carousel]){--rc-slider-per-view: 1.3}@media(min-width:768px){:where([data-rc~=slider][data-rc-mode=carousel]){--rc-slider-per-view: 2.4}}@media(min-width:1200px){:where([data-rc~=slider][data-rc-mode=carousel]){--rc-slider-per-view: 3.4}}:where([data-rc~=slider] [data-rc-part=track]){display:flex;flex-wrap:wrap;gap:var(--rc-slider-gap);margin:0;padding:0;list-style:none}:where([data-rc~=slider]:not([data-rc-mode=marquee]) [data-rc-part=track]>*){width:calc((100% - var(--rc-slider-gap) * (var(--rc-slider-per-view) - 1)) / var(--rc-slider-per-view))}.rc-js [data-rc~=slider]:not([data-rc-state=fallback]) [data-rc-part=viewport]{position:relative;overflow:hidden;overflow:clip}.rc-js [data-rc~=slider]:not([data-rc-state=fallback]) [data-rc-part=track]{position:relative;flex-wrap:nowrap;touch-action:pan-y}.rc-js [data-rc~=slider]:not([data-rc-state=fallback]) [data-rc-part=track]>*{flex:none;will-change:transform}:where([data-rc~=slider][data-rc-state]:not([data-rc-state=fallback],[data-rc-state=static]) [data-rc-part=viewport]){cursor:grab}[data-rc~=slider] [data-rc-part=track][data-rc-state=dragging]{cursor:grabbing;user-select:none;-webkit-user-select:none}[data-rc~=slider][data-rc-state] [data-rc-part=track] img{-webkit-user-drag:none}[data-rc~=slider] [data-rc-part=viewport][data-rc-state=fade-both]{-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--rc-slider-fade),#000 calc(100% - var(--rc-slider-fade)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--rc-slider-fade),#000 calc(100% - var(--rc-slider-fade)),transparent)}[data-rc~=slider] [data-rc-part=viewport][data-rc-state=fade-end]{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - var(--rc-slider-fade)),transparent);mask-image:linear-gradient(to right,#000 calc(100% - var(--rc-slider-fade)),transparent)}[data-rc~=slider] [data-rc-part=viewport][data-rc-state=fade-start]{-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--rc-slider-fade));mask-image:linear-gradient(to right,transparent,#000 var(--rc-slider-fade))}:where([data-rc~=slider] [data-rc-part=media]){transform-origin:center}:where([data-rc~=slider][data-rc-mode=showcase] [data-rc-part=track]>*>*){transition:translate .25s cubic-bezier(.22,1,.36,1)}@media(hover:hover){:where([data-rc~=slider][data-rc-mode=showcase] [data-rc-part=track]>:hover>*){translate:0 -8px}}:where([data-rc~=slider] [aria-disabled=true]){opacity:.35;cursor:default}html:not(.rc-js) [data-rc~=slider] [data-rc-part=controls],[data-rc~=slider][data-rc-state=fallback] [data-rc-part=controls],[data-rc~=slider][data-rc-state=static] [data-rc-part=controls]{visibility:hidden}[data-rc~=slider] [data-rc-part=pause][aria-pressed=true] [data-rc-part=icon-pause],[data-rc~=slider] [data-rc-part=pause]:not([aria-pressed=true]) [data-rc-part=icon-play]{display:none}[data-rc~=slider] [data-rc-part=pause].rc-sr-only:focus-visible{position:absolute;z-index:2;inset:auto auto .5rem .5rem;width:auto;height:auto;margin:0;padding:.5rem .75rem;overflow:visible;clip-path:none;background:Canvas;color:CanvasText}:where([data-rc~=slider]:has(>[data-rc-part=pause].rc-sr-only)){position:relative}:where([data-rc~=slider] [data-rc-part=progress]){display:block;position:relative;height:2px;background:color-mix(in srgb,currentColor 15%,transparent);overflow:hidden}:where([data-rc~=slider] [data-rc-part=progress]):after{content:"";position:absolute;inset:0;background:currentColor;transform-origin:left;transform:scaleX(var(--rc-slider-progress, 0));transition:transform .25s cubic-bezier(.22,1,.36,1)}/*!
 * slideshow.css — behavioural styles only. The frame's size and radius, the
 * shade, the thumbnail strip's look and position and the thumbnail button
 * itself come from Designer.
 */[data-rc~=slideshow]{position:relative;overflow:clip;isolation:isolate}[data-rc~=slideshow] [data-rc-part=slides]{position:absolute;inset:0;z-index:0}[data-rc~=slideshow] [data-rc-part=slides]>*{position:absolute;inset:0;overflow:hidden}[data-rc~=slideshow] [data-rc-part=slides]>* :is(img,video){display:block;width:100%;height:100%;object-fit:cover}[data-rc~=slideshow]:not([data-rc-state]) [data-rc-part=slides]>:first-child{z-index:1}[data-rc~=slideshow][data-rc-state] [data-rc-part=slides]>:not([data-rc-state]){visibility:hidden}[data-rc~=slideshow] [data-rc-part=shade]{position:absolute;inset:0;z-index:1;pointer-events:none}[data-rc~=slideshow] [data-rc-part=thumbnails]{z-index:2}[data-rc~=slideshow]:not([data-rc-state]) [data-rc-part=thumbnails]{visibility:hidden}[data-rc~=slideshow] [data-rc-part=thumbnail] img{display:block;width:100%;height:100%;object-fit:cover}[data-rc~=slideshow] [data-rc-part=thumbnail][aria-pressed=true]{border-color:var( --rc-slideshow-active-border, var(--rc-brand, currentColor) )}[data-rc~=slideshow] [data-rc-part=thumbnail][aria-pressed=true] [data-rc-part=thumbnail-shade]{opacity:0}[data-rc~=slideshow][data-rc-state]:not([data-rc-swipe=false]){touch-action:pan-y;user-select:none;-webkit-user-select:none}/*!
 * statistics.css — behavioural styles only. The row of cards, their borders
 * and padding, the figure's type, the caption, the photo's size and corner
 * radius, the progress bar's height and colours come from Designer.
 *
 * Four mechanics. The odometer: a figure's characters become slots one
 * character tall, each clipping a column that waits pushed down, blurred and
 * invisible until the figure is counted, then rises to its character. The
 * strip: on a narrow screen Designer lets the track scroll sideways; here it
 * snaps card by card and hides its scrollbar. The progress bar: a line that
 * fills as the strip is scrolled, driven by the scroll position alone (a
 * scroll timeline), full where the strip does not scroll, absent where the
 * browser cannot do it. The photos: under .rc-js their box is a fixed layer
 * over the page that takes no clicks, stacks every photo in one cell and is
 * moved by the code; only the current photo shows.
 */[data-rc~=statistics] [data-rc-part=reels]{display:inline-flex;align-items:flex-start;vertical-align:top}[data-rc~=statistics] [data-rc-part=slot]{position:relative;display:block;overflow:hidden;height:1em;line-height:1;white-space:pre}[data-rc~=statistics] [data-rc-part=placeholder]{display:block;visibility:hidden}[data-rc~=statistics] [data-rc-part=column]{position:absolute;top:0;left:0;display:flex;flex-direction:column;align-items:flex-start;opacity:0;filter:blur(8px);translate:0 .4em;transition:translate var(--rc-statistics-duration, 1.1s) var(--rc-statistics-ease, cubic-bezier(.16, 1, .3, 1)) var(--rc-statistics-delay, 0s),opacity .5s ease var(--rc-statistics-delay, 0s),filter .8s ease var(--rc-statistics-delay, 0s)}[data-rc~=statistics] [data-rc-part=column]>*{display:block;height:1em;line-height:1}[data-rc~=statistics] [data-rc-part=figure][data-rc-state=counted] [data-rc-part=column]{opacity:1;filter:blur(0);translate:0 calc(var(--rc-statistics-offset, 0) * -1em)}:where([data-rc~=statistics] [data-rc-part=track]){scroll-snap-type:x mandatory;scrollbar-width:none}:where([data-rc~=statistics] [data-rc-part=track])::-webkit-scrollbar{display:none}:where([data-rc~=statistics] [data-rc-part=card]){scroll-snap-align:start}[data-rc~=statistics]{timeline-scope:--rc-statistics-track}[data-rc~=statistics] [data-rc-part=track]{scroll-timeline:--rc-statistics-track inline}[data-rc~=statistics] [data-rc-part=progress]{position:relative;overflow:hidden}[data-rc~=statistics] [data-rc-part=progress]:before{content:"";position:absolute;inset:0;background:currentColor;transform-origin:0 50%;animation:rc-statistics-progress linear both;animation-timeline:--rc-statistics-track}@keyframes rc-statistics-progress{0%{scale:var(--rc-statistics-progress-start, .25) 1}to{scale:1 1}}@supports not (animation-timeline: scroll()){[data-rc~=statistics] [data-rc-part=progress]{display:none}}.rc-js [data-rc~=statistics] [data-rc-part=photos]{position:fixed;inset:0;pointer-events:none;z-index:var(--rc-statistics-layer, 50)}.rc-js [data-rc~=statistics] [data-rc-part=cursor]{position:absolute;top:0;left:0;display:grid;grid-template-areas:"stack";will-change:translate}.rc-js [data-rc~=statistics] [data-rc-part=cursor]>*{grid-area:stack;opacity:0;scale:.95;transition:opacity .4s,scale .4s}.rc-js [data-rc~=statistics] [data-rc-part=cursor]>[data-rc-state=active]{opacity:1;scale:1}[data-rc~=statistics] [data-rc-part=cursor] :is(img,video){display:block;width:100%;height:100%;object-fit:cover}:where(html:not(.rc-js) [data-rc~=statistics] [data-rc-part=cursor]){display:flex;flex-wrap:wrap;gap:1rem}/*!
 * step-stack.css — behavioural styles only. The steps' own layout (the row
 * grid, the empty middle column, borders, type), the frame's width, aspect
 * ratio and radius, and every colour come from Designer.
 *
 * The pin is `position: sticky`, gated on .rc-js so that without JavaScript
 * nothing sticks and the frame is a small gallery of every picture, and on
 * Webflow's tablet breakpoint:
 *
 *   ≥ 992px  the stage is a full-height rail over the steps (absolute,
 *            clicks go through it) and the frame inside it sticks at
 *            --rc-step-stack-top, centred in the rail — Designer's row grid
 *            leaves the middle column empty for it.
 *   ≤ 991px  nothing sticks: the stage sits first in the flow, static, and
 *            the frame shows the first picture; the steps follow below.
 *
 * Pictures stack in the frame: the current one on top, the ones passed
 * dimmed and slightly smaller underneath, the ones ahead hidden. Their
 * places (slide, parallax, dimming) are written by step-stack.js from the
 * scroll position every frame; nothing here transitions.
 */[data-rc~=step-stack] [data-rc-part=media] :is(img,video){display:block;width:100%;height:100%;object-fit:cover}:where(html:not(.rc-js) [data-rc~=step-stack] [data-rc-part=frame]){display:grid;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.5rem}:where(.rc-js [data-rc~=step-stack] [data-rc-part=body]){position:relative}.rc-js [data-rc~=step-stack] [data-rc-part=frame]{position:relative;overflow:clip}.rc-js [data-rc~=step-stack] [data-rc-part=media]{position:absolute;inset:0}.rc-js [data-rc~=step-stack] [data-rc-part=media]:not([data-rc-state]){visibility:hidden}.rc-js [data-rc~=step-stack] [data-rc-part=frame]:not([data-rc-staged])>:first-child{visibility:visible}.rc-js [data-rc~=step-stack] [data-rc-part=media]:after{content:"";position:absolute;inset:0;background:#000;opacity:calc(var(--rc-step-stack-cover, 0) * (1 - var(--rc-step-stack-dim, .6)));pointer-events:none}@media(min-width:992px){.rc-js [data-rc~=step-stack] [data-rc-part=stage]{position:absolute;inset:0;z-index:1;pointer-events:none}.rc-js [data-rc~=step-stack] [data-rc-part=frame]{position:sticky;top:var(--rc-step-stack-top, 120px);pointer-events:auto}:where(.rc-js [data-rc~=step-stack] [data-rc-part=frame]){margin-inline:auto}.rc-js [data-rc~=step-stack] [data-rc-part=media],.rc-js [data-rc~=step-stack] [data-rc-part=media] :is(img,video){will-change:translate}}:where([data-rc~=step-stack] [data-rc-part=step]){transition:opacity .4s}:where(.rc-js [data-rc~=step-stack] [data-rc-part=body][data-rc-step-active] [data-rc-part=step]:not([data-rc-state=active])){opacity:var(--rc-step-stack-rest, .5)}/*!
 * sticky-stack.css — the stick and the depth (sticky-stack.js). Cards stick
 * at --rc-sticky-top + index × --rc-sticky-step; a covered card shrinks to
 * 0.96 and dims to 0.6 with --rc-stack-cover (0…1, linear to scroll). The
 * cards' look (opaque background, radius, padding) is Designer's — an
 * opaque card is what hides the one behind it.
 */[data-rc~=sticky-stack][data-rc-state=stacking] [data-rc-part=card]{position:sticky;top:calc(var(--rc-sticky-top, 0px) + var(--rc-stack-index, 0) * var(--rc-sticky-step, 12px));transform-origin:50% 0;scale:calc(1 - .04 * var(--rc-stack-cover, 0));filter:brightness(calc(1 - .4 * var(--rc-stack-cover, 0)))}/*!
 * tabs.css — behavioural styles only. The two-column layout, the tab list's
 * card, the tabs' type and colours, the panel's own grid, the picture, the
 * badge and the case tiles come from Designer.
 *
 * The panels stack in one grid cell and one shows at a time; that stacking
 * is gated on .rc-js so that without JavaScript every panel is in normal
 * flow, one under the other, and before the chunk arrives the first panel
 * is the one on show. A panel's cards, when it has them, rise one after
 * another. A tab's description is open on the current tab and folded on the
 * rest, and folded on all of them while the tabs sit side by side. A panel's
 * preview shows the picture of the card under the pointer, and the other
 * cards' rows rest. An arrow's glyph runs out and back in when its link is
 * hovered. The tabs rest at reduced opacity until one is current, hovered
 * or focused; a tab's icon shows only on the current tab. No content is
 * hidden with display: none.
 */.rc-js [data-rc~=tabs] [data-rc-part=panels]{display:grid;grid-template-areas:"stack"}:where(.rc-js [data-rc~=tabs] [data-rc-part=panels]){align-items:start}.rc-js [data-rc~=tabs] [data-rc-part=panels]>*{grid-area:stack;opacity:0;visibility:hidden;pointer-events:none;translate:0 1rem;transition:opacity .3s,translate .3s,visibility 0s .3s}.rc-js [data-rc~=tabs] [data-rc-part=panels]>[data-rc-state=active],.rc-js [data-rc~=tabs] [data-rc-part=panels]:not([data-rc-panel-active])>:first-child{opacity:1;visibility:visible;pointer-events:auto;translate:0 0;transition:opacity var(--rc-tabs-duration, .7s) var(--rc-tabs-ease, cubic-bezier(.22, 1, .36, 1)),translate var(--rc-tabs-duration, .7s) var(--rc-tabs-ease, cubic-bezier(.22, 1, .36, 1)),visibility 0s}.rc-js [data-rc~=tabs] [data-rc-part=panels]>:has([data-rc-part=card]){translate:none}.rc-js [data-rc~=tabs] [data-rc-part=panels]>* [data-rc-part=card]{opacity:0;translate:0 1rem;transition:opacity .3s,translate .3s}.rc-js [data-rc~=tabs] [data-rc-part=panels]>[data-rc-state=active] [data-rc-part=card],.rc-js [data-rc~=tabs] [data-rc-part=panels]:not([data-rc-panel-active])>:first-child [data-rc-part=card]{opacity:1;translate:0 0;transition:opacity var(--rc-tabs-duration, .7s) var(--rc-tabs-ease, cubic-bezier(.22, 1, .36, 1)) calc(var(--rc-tabs-order, 0) * var(--rc-tabs-stagger, .05s)),translate var(--rc-tabs-duration, .7s) var(--rc-tabs-ease, cubic-bezier(.22, 1, .36, 1)) calc(var(--rc-tabs-order, 0) * var(--rc-tabs-stagger, .05s))}@media(prefers-reduced-motion:reduce){.rc-js [data-rc~=tabs] [data-rc-part=panels]>[data-rc-state=active] [data-rc-part=card],.rc-js [data-rc~=tabs] [data-rc-part=panels]:not([data-rc-panel-active])>:first-child [data-rc-part=card]{transition-delay:0s}}.rc-js [data-rc~=tabs] [data-rc-part=description]{display:grid;grid-template-rows:0fr;margin-top:0;opacity:0;transition:grid-template-rows .3s,margin-top .3s,opacity .25s}.rc-js [data-rc~=tabs] [data-rc-part=description]>*{min-height:0;margin-block:0;overflow:hidden}.rc-js [data-rc~=tabs] [data-rc-part=tablist]:not([data-rc-state=strip])>[data-rc-current-tab] [data-rc-part=description],.rc-js [data-rc~=tabs] [data-rc-part=tablist]:not([data-rc-state=strip]):not([data-rc-tab-current])>:first-child [data-rc-part=description]{grid-template-rows:1fr;margin-top:var(--rc-tabs-description-gap, 6px);opacity:1}[data-rc~=tabs] [data-rc-part=tablist][data-rc-state=strip]{scrollbar-width:none}[data-rc~=tabs] [data-rc-part=tablist][data-rc-state=strip]::-webkit-scrollbar{display:none}[data-rc~=tabs] [data-rc-part=description]{contain:inline-size}.rc-js [data-rc~=tabs] [data-rc-part=preview]{position:relative;overflow:clip;isolation:isolate}.rc-js [data-rc~=tabs] [data-rc-part=preview]>[data-rc-part=frame]{position:absolute;inset:0;overflow:hidden}.rc-js [data-rc~=tabs] [data-rc-part=preview]>[data-rc-part=frame]:not([data-rc-state]){visibility:hidden}.rc-js [data-rc~=tabs] [data-rc-part=frame]>[data-rc-part=image]{display:block;width:100%;height:100%;max-width:none;object-fit:cover}.rc-js [data-rc~=tabs] [data-rc-part=panels]>:has([data-rc-part=preview]) [data-rc-part=card] [data-rc-part=image]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}html:not(.rc-js) [data-rc~=tabs] [data-rc-part=preview]{display:none}:where(.rc-js [data-rc~=tabs] [data-rc-part=panels]>[data-rc-preview-ready] [data-rc-part=card]>*){transition:opacity .3s}:where(.rc-js [data-rc~=tabs] [data-rc-part=panels]>[data-rc-preview-ready] [data-rc-part=card]:not([data-rc-state=active])>*){opacity:var(--rc-tabs-card-rest, .4)}[data-rc~=tabs] [data-rc-part=arrow]{overflow:clip}[data-rc~=tabs] [data-rc-part=arrow]>*{display:inline-block}:where([data-rc~=tabs] [data-rc-part=arrow]){transition:translate .4s cubic-bezier(.34,1.56,.64,1)}:where([data-rc~=tabs] [data-rc-part=card][data-rc-state=active] [data-rc-part=arrow]){translate:var(--rc-tabs-arrow-shift, .25rem) 0}[data-rc~=tabs] a:is(:hover,:focus-visible) [data-rc-part=arrow]>*{animation:rc-tabs-arrow var(--rc-tabs-arrow-duration, .6s) cubic-bezier(.65,0,.35,1)}@keyframes rc-tabs-arrow{0%{transform:translate(0)}45%{transform:translate(var(--rc-tabs-arrow-travel, 2em))}45.01%{transform:translate(calc(-1 * var(--rc-tabs-arrow-travel, 2em)))}to{transform:translate(0)}}:where(.rc-js [data-rc~=tabs] [data-rc-part=tab]){transition:opacity .3s}:where(.rc-js [data-rc~=tabs] [data-rc-part=tab]:not([data-rc-state=active],:hover,:focus-visible)){opacity:var(--rc-tabs-rest, .5)}:where([data-rc~=tabs] [data-rc-part=icon]){transition:opacity .3s}:where(.rc-js [data-rc~=tabs] [data-rc-part=tab]:not([data-rc-state=active]) [data-rc-part=icon]){opacity:0}[data-rc~=tabs][data-rc-state~=scrolling]>[data-rc-part=stage],[data-rc~=tabs][data-rc-state~=scrolling]:not(:has(>[data-rc-part=stage]))>:first-child{position:sticky;top:var(--rc-tabs-top, 0px)}[data-rc~=tabs] [data-rc-part=scroll-room]{pointer-events:none}/*!
 * toc.css — the table of contents' behaviour and, by the owner's decision,
 * its look: the list as a line with a marker on the section being read, the
 * side column's sticky offset, and on narrow screens the floating bar's
 * surface and toggle. The bar's position and fold are in toc.critical.css.
 *
 * The look is set with enough specificity to beat Webflow's tag defaults
 * (ul padding, li type) and the utility classes on these elements; tune it
 * through the --rc-toc-* variables (README.md), not in Designer.
 */[data-rc~=toc] [data-rc-part=body] h2{scroll-margin-top:var(--rc-toc-offset, 6rem)}@media(min-width:992px){[data-rc~=toc] [data-rc-part=navigation]{top:var(--rc-toc-offset, 6rem)}.rc-js [data-rc~=toc][data-rc-state] [data-rc-part=list]{max-height:var(--rc-toc-collapsed-height, 22rem);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;transition:max-height .4s cubic-bezier(.22,1,.36,1)}.rc-js [data-rc~=toc][data-rc-state~=expanded] [data-rc-part=list]{max-height:max(var(--rc-toc-collapsed-height, 22rem),calc(100svh - var(--rc-toc-offset, 6rem) - 8rem))}.rc-js [data-rc~=toc][data-rc-state~=long] [data-rc-part=list]{--rc-toc-fade-top: var(--rc-toc-fade, 2.5rem);--rc-toc-fade-bottom: var(--rc-toc-fade, 2.5rem);mask-image:linear-gradient(to bottom,transparent,#000 var(--rc-toc-fade-top),#000 calc(100% - var(--rc-toc-fade-bottom)),transparent)}.rc-js [data-rc~=toc][data-rc-state~=long] [data-rc-part=list][data-rc-state~=start]{--rc-toc-fade-top: 0px}.rc-js [data-rc~=toc][data-rc-state~=long] [data-rc-part=list][data-rc-state~=end]{--rc-toc-fade-bottom: 0px}[data-rc~=toc] [data-rc-part=more]:not([hidden]){display:flex;align-items:center;width:100%;padding:.5rem 0 .5rem 1rem;opacity:var(--rc-toc-rest, .55);transition:opacity .3s}[data-rc~=toc] [data-rc-part=more]:is(:hover,:focus-visible){opacity:1}[data-rc~=toc] [data-rc-part=more]:after{content:"";width:.5rem;height:.5rem;margin-top:-.25rem;border-right:2px solid;border-bottom:2px solid;rotate:45deg;transition:rotate .35s cubic-bezier(.22,1,.36,1),margin .35s}.rc-js [data-rc~=toc][data-rc-state~=expanded] [data-rc-part=more]:after{margin-top:.25rem;rotate:225deg}}[data-rc~=toc] [data-rc-part=more][hidden]{display:none}[data-rc~=toc] [data-rc-part=list] :is(ul,ol){margin:0;padding:0;list-style:none;border-left:1px solid var(--rc-toc-line, color-mix(in srgb, currentColor 14%, transparent))}[data-rc~=toc] [data-rc-part=list] li{margin:0;padding:0;font-size:inherit;line-height:inherit}[data-rc~=toc] [data-rc-part=list] a{display:block;margin-left:-1px;padding:var(--rc-toc-item-padding, .4375rem 0 .4375rem 1rem);border-left:2px solid transparent;color:inherit;line-height:var(--rc-toc-line-height, 1.4);text-decoration:none}.rc-js [data-rc~=toc] [data-rc-part=list] a{transition:opacity .3s,border-color .3s}.rc-js [data-rc~=toc][data-rc-state] [data-rc-part=list] a:not([data-rc-state=active],:hover,:focus-visible){opacity:var(--rc-toc-rest, .55)}.rc-js [data-rc~=toc] [data-rc-part=list] a[data-rc-state=active]{border-left-color:var( --rc-toc-indicator, var(--brand-primary--500, currentColor) )}@media(max-width:991px){html.rc-js:has([data-rc~=toc]) body:after{content:"";position:fixed;inset:0;z-index:calc(var(--rc-toc-layer, 90) - 1);background:var(--rc-toc-scrim, rgb(3 3 3 / .12));-webkit-backdrop-filter:blur(var(--rc-toc-blur, 6px));backdrop-filter:blur(var(--rc-toc-blur, 6px));opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s,visibility 0s .35s}html.rc-js[data-rc-toc-open] body:after{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .35s,visibility 0s}}@media(max-width:991px){.rc-js [data-rc~=toc] [data-rc-part=navigation]{gap:0;background:var(--rc-toc-surface, #fff);border-radius:var(--rc-toc-radius, 1rem);box-shadow:var( --rc-toc-shadow, 0 0 0 1px rgb(3 3 3 / .08), 0 8px 30px rgb(3 3 3 / .14) )}.rc-js [data-rc~=toc] [data-rc-part=panel]>*{padding:0 1rem;transition:padding .35s cubic-bezier(.22,1,.36,1)}.rc-js [data-rc~=toc][data-rc-state~=open] [data-rc-part=panel]>*{padding:1rem 1rem .5rem;border-bottom:1px solid var(--rc-toc-line, color-mix(in srgb, currentColor 14%, transparent))}.rc-js [data-rc~=toc] [data-rc-part=toggle]{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%;padding:.875rem 1rem;font-weight:600}.rc-js [data-rc~=toc] [data-rc-part=toggle]:focus-visible{outline-offset:-2px}.rc-js [data-rc~=toc] [data-rc-part=toggle]:after{content:"";flex:none;width:.5em;height:.5em;margin-top:.25em;border-top:2px solid;border-right:2px solid;rotate:-45deg;transition:rotate .35s cubic-bezier(.22,1,.36,1),margin .35s}.rc-js [data-rc~=toc][data-rc-state~=open] [data-rc-part=toggle]:after{margin-top:-.25em;rotate:135deg}}/*!
 * website-ring.css — behavioural styles only. The section's size and black
 * background, the scene's top and bottom gradients, the title's type, the
 * pill's white capsule and the fallback's picture all come from Designer.
 *
 * States on the root: `running` (the canvas is up), `static` (no canvas, the
 * list shows itself), `fallback` (no canvas, the fallback part shows). Until
 * one is stamped the list waits off screen, so nothing flashes before the
 * scene; without JavaScript the list and the fallback simply show.
 */[data-rc~=website-ring] [data-rc-part=scene]>canvas{display:block;width:100%;height:100%;opacity:0;transition:opacity 1s linear}[data-rc~=website-ring] [data-rc-part=scene][data-rc-state=visible]>canvas{opacity:1}[data-rc~=website-ring]:is([data-rc-state=static],[data-rc-state=fallback]) [data-rc-part=scene]{display:none}.rc-js [data-rc~=website-ring]:not([data-rc-state=fallback]) [data-rc-part=fallback]{display:none}[data-rc~=website-ring] [data-rc-part=title]{pointer-events:none}[data-rc~=website-ring] [data-rc-part=title] :is(a,button){pointer-events:auto}@media(min-width:1280px)and (prefers-reduced-motion:no-preference){[data-rc~=website-ring] [data-rc-part=title]{transform:rotateX(var(--rc-website-ring-rotate-x, 0deg)) rotateY(var(--rc-website-ring-rotate-y, 0deg))}}@media(prefers-reduced-motion:no-preference){.rc-js [data-rc~=website-ring] [data-rc-part=title]>*{transition:opacity .3s linear .15s,translate .6s cubic-bezier(.19,1,.22,1) .15s}.rc-js [data-rc~=website-ring] [data-rc-part=title]:not([data-rc-state=revealed])>*{opacity:0;translate:0 25px;animation:rc-website-ring-title-fallback 0s 3s forwards}}@keyframes rc-website-ring-title-fallback{to{opacity:1;translate:0 0}}.rc-js [data-rc~=website-ring]:not([data-rc-state=static]) [data-rc-part=list]:not(:focus-within){position:absolute;top:auto;left:-10000px;width:1px;height:1px;overflow:hidden}.rc-js [data-rc~=website-ring]:not([data-rc-state=static]) [data-rc-part=list]:focus-within{position:absolute;top:0;left:0;z-index:1000;height:100%;overflow:auto}.rc-js [data-rc~=website-ring]:not([data-rc-state=static]) [data-rc-part=list] img{display:none}:where(.rc-js [data-rc~=website-ring]:not([data-rc-state=static]) [data-rc-part=list]:focus-within){padding:12px;background-color:#000}[data-rc~=website-ring] [data-rc-part=pill]{position:fixed;top:0;left:0;z-index:1000;pointer-events:none}[data-rc~=website-ring] [data-rc-part=pill]:not([data-rc-state=active]){display:none}