/* La O que se escapa: chase layer. Everything here is inert until chase.js adds .chase-on. */
body.chase-on{position:relative}
.chase-layer{position:absolute;inset:0;z-index:10;pointer-events:none;overflow:hidden;overflow:clip;contain:layout style paint;user-select:none;-webkit-user-select:none}
.chase-ob{position:absolute;left:0;top:0;display:block;margin:0;padding:0;font-family:'Manrope',Arial,sans-serif;font-weight:500;color:#EE492B;line-height:1;letter-spacing:0;white-space:pre;visibility:hidden;will-change:transform;backface-visibility:hidden}
.chase-lucia{position:absolute;left:0;top:0;visibility:hidden;will-change:transform}
.chase-lucia svg{display:block;overflow:visible}
.home-page .intro h1.is-kinetic-moving .chase-o{will-change:transform}
@media screen{body.home-page .chase-o.is-away{color:transparent}}
@media print{.chase-layer{display:none!important}}
@media(prefers-reduced-motion:reduce){.chase-layer{display:none!important}}
/* === chase-page.js: moments 2, 3, 4 (letters are only split while they react) === */
.chase-on .cw-w{display:inline-block;white-space:nowrap}
.chase-on .cw-l{display:inline-block;white-space:pre;transform-origin:50% 78%}
.chase-on .cw-k{position:absolute;left:0;right:0;bottom:100%;display:block;transform-origin:50% 100%;clip-path:polygon(0 84%,100% 0,100% 100%,0 100%);pointer-events:none}
/* === end chase-page.js === */
/* === chase-portal.js: moments 1 and 5 === */
body.home-page .reel-stage.portal-on:not(.portal-open) :is(.reel-fallback,.reel-loop){pointer-events:none;will-change:transform}
body.home-page .reel-stage.portal-hidden :is(.reel-fallback,.reel-loop){visibility:hidden}
.portal-sheet,.portal-ring{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.portal-still{position:absolute;left:0;top:0;width:auto;height:100%;aspect-ratio:1;max-width:none;transform-origin:0 0;pointer-events:none}
.portal-sheet{background:#F5EEDF}
.portal-ring-a{background:#F5EEDF}
.portal-ring-b{background:#EE492B}
.reel-stage.portal-open .portal-sheet,.reel-stage.portal-open .portal-ring{display:none}
.award-metal.plata-on{position:relative;isolation:isolate}
.plata-cord{position:absolute;z-index:-1;overflow:visible;pointer-events:none;opacity:0;transition:opacity .25s ease}
.award-metal.is-swinging .plata-cord{opacity:1}
@media print{.portal-still,.portal-sheet,.portal-ring,.plata-cord{display:none!important}.reel-stage .reel-fallback,.reel-stage .reel-loop{transform:none!important;clip-path:none!important;visibility:visible!important}.reel-caption.is-waiting{visibility:visible!important;opacity:1!important}body.home-page .reel-stage{overflow:hidden!important}}
@media(prefers-reduced-motion:reduce){.portal-still,.portal-sheet,.portal-ring,.plata-cord{display:none!important}}
/* === end chase-portal.js === */
/* === chase-opening.js: the name holds still until the O has really gone, and the rule gives under it === */
body.chase-on .intro h1.o-hold .chase-o.is-away+.name-star{transform:none;transition:none}
body.chase-on .intro h1.o-gone .chase-o.is-away+.name-star{transition-delay:0s}
/* Closing up it must not overshoot: past its place it is on top of the r. It only bounces on the way back. */
body.chase-on .chase-o.is-away+.name-star{transition-timing-function:cubic-bezier(.3,.8,.25,1)}
@media screen{body.home-page .stage-floor.is-flexing{background:transparent}}
.chase-rule{position:absolute;left:0;top:0;overflow:visible;visibility:hidden;pointer-events:none}
.chase-rule path{fill:none;stroke:#1B1A17;stroke-width:1}
.chase-rule .chase-crack{stroke:#EE492B;stroke-width:2.5;stroke-linecap:round}
/* === end chase-opening.js === */
/* === chase-play.js: moments 6 to 11 === */
.chase-hat{position:absolute;left:0;top:0;display:block;overflow:visible;visibility:hidden;pointer-events:none;will-change:transform}
.chase-hit-o{position:absolute;left:0;top:0;border-radius:50%;pointer-events:auto;cursor:grab;touch-action:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
.chase-hit-o.is-held{cursor:grabbing}
/* The big O on a phone covers most of the screen: a vertical swipe on it has to scroll the page. */
.chase-hit-o.is-big{touch-action:pan-y}
.chase-home{position:absolute;z-index:11;display:block;margin:0;padding:0;border:0;border-radius:50%;background:none;color:inherit;cursor:pointer;touch-action:manipulation;pointer-events:none;-webkit-tap-highlight-color:transparent}
.chase-home.is-live{pointer-events:auto}
.chase-home.is-rolling{pointer-events:none}
.chase-home:focus-visible{outline:2px solid #C8321A;outline-offset:3px}
.chase-closing{position:absolute;margin:0;font-size:.8125rem;line-height:1.3;font-weight:400;white-space:nowrap;color:#1B1A17;visibility:hidden;pointer-events:none;transition:visibility 0s linear .3s}
.chase-closing span{display:inline-block;opacity:0;transform:translateY(.7em);transition:opacity .18s ease,transform .18s ease}
.chase-closing b{display:inline-block;font-weight:inherit;color:#C8321A}
.chase-closing.is-on{visibility:visible;transition-delay:0s}
.chase-closing.is-on span{opacity:1;transform:none;transition:opacity .34s ease calc(.32s + var(--i)*45ms),transform .46s cubic-bezier(.2,1.5,.4,1) calc(.32s + var(--i)*45ms)}
.chase-closing.is-on b{animation:chase-closing-o .62s cubic-bezier(.3,0,.3,1) 1.15s both}
@keyframes chase-closing-o{0%,100%{transform:none}30%{transform:translateY(-.62em) rotate(-30deg)}62%{transform:translateY(.05em) scale(1.25,.75)}80%{transform:translateY(-.15em)}}
@media print{.chase-hat,.chase-hit-o,.chase-home,.chase-closing{display:none!important}}
@media(prefers-reduced-motion:reduce){.chase-hat,.chase-hit-o,.chase-home,.chase-closing{display:none!important}}
/* === end chase-play.js === */
