/* Solo modo web: barra del visor, desplazamiento, ajuste a pantalla y animaciones de entrada. Se carga después de styles.css. */
@keyframes brochure-pop{0%{transform:var(--enter-transform,scale(.35));opacity:0}72%{transform:scale(1.08);opacity:1}100%{transform:var(--rest-transform,scale(1));opacity:1}}
@keyframes brochure-rise{0%{filter:blur(4px);opacity:0}100%{filter:blur(0);opacity:1}}
@keyframes gold-sheen{0%{transform:translateX(-120%) skewX(-14deg);opacity:0}35%{opacity:.5}100%{transform:translateX(220%) skewX(-14deg);opacity:0}}
@keyframes photo-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.025)}}
@keyframes rail-sweep{0%{transform:translateY(-120%) rotate(16deg);opacity:0}28%{opacity:.42}100%{transform:translateY(140%) rotate(16deg);opacity:0}}
@keyframes stage-pattern-drift{0%{background-position:center 0}100%{background-position:center 18cqw}}
@keyframes bottom-wave-pulse{0%,100%{filter:saturate(1) brightness(1)}50%{filter:saturate(1.18) brightness(1.05)}}
@keyframes figure-float{0%,100%{translate:0 0}50%{translate:0 -1.1cqw}}
@keyframes card-sweep{0%{transform:translateX(-130%) skewX(-18deg);opacity:0}35%{opacity:.36}100%{transform:translateX(220%) skewX(-18deg);opacity:0}}
@keyframes slide-focus{0%,100%{box-shadow:0 18px 50px #4c1b1b2b,0 0 0 3px #d99c4333}50%{box-shadow:0 22px 58px #4c1b1b36,0 0 0 3px #e4ad4f66}}
@keyframes level-path-draw{0%{clip-path:inset(0 100% 0 0);opacity:.2}100%{clip-path:inset(0 0 0 0);opacity:1}}
@keyframes level-card-lift{0%{filter:drop-shadow(0 2px 0 #0000)}50%{filter:drop-shadow(0 1.1cqw 1.2cqw #6b220f33)}100%{filter:drop-shadow(0 .45cqw .75cqw #6b220f22)}}
@keyframes level-title-snap{0%{clip-path:inset(0 100% 0 0);letter-spacing:.08em}100%{clip-path:inset(0 0 0 0);letter-spacing:0}}
@keyframes level-photo-reveal{0%{clip-path:inset(0 0 100% 0);scale:1.08;filter:saturate(.8)}100%{clip-path:inset(0 0 0 0);scale:1;filter:saturate(1)}}
@keyframes level-footer-fill{0%{background-position:100% center;color:#8b2533}100%{background-position:0 center;color:#7f071b}}
@keyframes saint-blessing{0%,100%{translate:0 0;filter:drop-shadow(0 .2cqw .25cqw #4b0a1522)}50%{translate:.35cqw -.85cqw;filter:drop-shadow(0 .75cqw .65cqw #4b0a1538)}}
@keyframes workshop-photo-open{0%{clip-path:inset(0 50% 0 50%);filter:saturate(.7) brightness(.92);scale:1.08}100%{clip-path:inset(0 0 0 0);filter:saturate(1) brightness(1);scale:1}}
@keyframes workshop-badge-pop{0%{scale:.25;rotate:-18deg;opacity:0}68%{scale:1.12;rotate:6deg;opacity:1}100%{scale:1;rotate:0deg;opacity:1}}
@keyframes workshop-card-settle{0%{transform:translateY(12px) scale(.96);filter:drop-shadow(0 0 0 #0000)}60%{transform:translateY(-3px) scale(1.015);filter:drop-shadow(0 .7cqw .8cqw #6b220f25)}100%{transform:translateY(0) scale(1);filter:drop-shadow(0 .35cqw .55cqw #6b220f18)}}
@keyframes title-shimmer{0%{background-position:-160% center}100%{background-position:180% center}}
@keyframes swish-draw{0%{clip-path:inset(0 100% 0 0);filter:brightness(.9)}55%{clip-path:inset(0 0 0 0);filter:brightness(1.25)}100%{clip-path:inset(0 0 0 0);filter:brightness(1)}}
@keyframes timeline-grow{0%{transform:scaleY(0);transform-origin:top;opacity:0}100%{transform:scaleY(1);transform-origin:top;opacity:1}}
@keyframes row-reveal{0%{clip-path:inset(0 100% 0 0);transform:translateX(-10px);opacity:.25}100%{clip-path:inset(0 0 0 0);transform:translateX(0);opacity:1}}
@keyframes cost-glow{0%,100%{box-shadow:inset 0 0 0 #fff0}50%{box-shadow:inset 0 0 22px #fff8}}
@keyframes logo-hover{0%,100%{translate:0 0;rotate:0deg}50%{translate:0 -.45cqw;rotate:-1.5deg}}
@keyframes cta-pulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 #d99c4340}50%{transform:scale(1.025);box-shadow:0 0 0 .45cqw #d99c4300}}
@keyframes cover-title-in{0%{letter-spacing:.08em;filter:blur(4px);opacity:.15;transform:translateY(18px) scale(.96)}100%{letter-spacing:0;filter:blur(0);opacity:1;transform:translateY(0) scale(1)}}
@keyframes active-ambient{0%,100%{opacity:.2;transform:translate3d(-6%,-8%,0) scale(.92)}50%{opacity:.34;transform:translate3d(5%,4%,0) scale(1.06)}}
@keyframes ink-focus{0%{filter:drop-shadow(0 0 0 #fff0)}45%{filter:drop-shadow(0 2px 8px #fff7)}100%{filter:drop-shadow(0 0 0 #fff0)}}
@keyframes cta-arrow-nudge{0%,100%{background-position:100% center}50%{background-position:92% center}}
@keyframes number-heartbeat{0%,100%{scale:1}45%{scale:1.08}70%{scale:.98}}
@keyframes slide-activate{0%{filter:saturate(.92) brightness(.98)}35%{filter:saturate(1.16) brightness(1.06)}100%{filter:saturate(1) brightness(1)}}
@keyframes completion-glow{0%{opacity:0;transform:translateX(-120%) skewX(-18deg)}35%{opacity:.26}100%{opacity:0;transform:translateX(220%) skewX(-18deg)}}
@keyframes panel-land{0%{transform:translateY(18px) scale(.985);filter:saturate(.86);opacity:.55}60%{transform:translateY(-2px) scale(1.006);filter:saturate(1.08);opacity:1}100%{transform:translateY(0) scale(1);filter:saturate(1);opacity:1}}
@keyframes fine-glow{0%,100%{box-shadow:0 0 0 #fff0}50%{box-shadow:0 0 1.1cqw #f6c15a55}}
@keyframes icon-spark{0%,100%{filter:drop-shadow(0 0 0 #fff0);scale:1}50%{filter:drop-shadow(0 0 .35cqw #ffd36d);scale:1.08}}
@keyframes editorial-highlight{0%,100%{box-shadow:inset 0 0 0 0 #e3a33d00}50%{box-shadow:inset .28cqw 0 0 #d69a3f88}}
@keyframes timeline-marker{0%,100%{box-shadow:0 0 0 .15cqw #ca9a4c,0 0 0 #d69a3f00}50%{box-shadow:0 0 0 .15cqw #ca9a4c,0 0 .7cqw #d69a3f77}}
@keyframes web-slide-enter{0%{opacity:0;transform:translate3d(0,42px,0) scale(.965);filter:blur(7px)}65%{opacity:1;transform:translate3d(0,-4px,0) scale(1.006);filter:blur(0)}100%{opacity:1;transform:var(--rest-transform,none);filter:none}}
.skip-link{position:fixed;top:-90px;left:10px;z-index:200;background:white;padding:10px;border-radius:6px}
.skip-link:focus{top:10px}
.viewer-bar{position:sticky;z-index:100;top:0;left:0;right:0;height:50px;padding:0 clamp(12px,3vw,42px);display:flex;align-items:center;justify-content:space-between;gap:12px;background:rgba(81,4,19,.97);color:white;box-shadow:0 5px 16px #28010a44;font-size:13px}
.viewer-bar:after{content:"";position:absolute;left:0;right:auto;bottom:0;height:3px;width:calc(var(--deck-progress,0) * 100%);background:linear-gradient(90deg,#ffd66e,#fff3c7,#d69a3f);box-shadow:0 -1px 8px #ffd66e88;transition:width .18s linear}
.viewer-name{font-family:var(--font-display);font-style:italic;color:#ffe3a9}
.viewer-name strong{font-style:normal;color:white}
.viewer-controls{display:flex;align-items:center;gap:8px}
.viewer-controls button{width:30px;height:30px;border:1px solid #dca748;border-radius:50%;color:white;background:transparent;cursor:pointer}
.viewer-controls button:hover{background:#b71b35}
.viewer-controls span{min-width:55px;text-align:center;font-weight:bold;letter-spacing:.08em}
.viewer-links{display:flex;align-items:center;justify-content:flex-end;gap:13px}
.viewer-pdf,.viewer-book{font-size:11px;color:#ffdf9a;text-decoration:none;font-weight:bold;text-transform:uppercase;letter-spacing:.07em}
.viewer-book{color:#fff4c9;padding:.36em .7em;border:1px solid #e5b54d;border-radius:2em;background:#ffffff12}
.viewer-pdf:hover,.viewer-book:hover{text-decoration:underline}
.deck{padding:72px 0 20px}
.site-footer{padding:15px 20px 30px;text-align:center;color:#63444b;font-size:12px}
.site-footer p{margin:0 0 8px}
.site-footer div{display:flex;justify-content:center;gap:20px;flex-wrap:wrap}
.site-footer a{color:#8e0c26}
.js .slide .rail>*,.js .slide .stage>*{transition:opacity .8s cubic-bezier(.19,.86,.32,1.05),transform .8s cubic-bezier(.19,.86,.32,1.05);transition-delay:calc(var(--i,0) * 110ms)}
.js .slide:not(.in-view) .stage>*{opacity:0;transform:translateY(30px)}
.js .slide.in-view .stage>*{opacity:1;transform:translateY(0)}
.js .slide:not(.in-view) .rail>*{opacity:0;transform:translateX(-18px)}
.js .slide.in-view .rail>*{opacity:1;transform:translateX(0)}
.js .slide .facility-grid>*,.js .slide .level-cards>*,.js .slide .criteria-cards>*,.js .slide .workshop-grid>*,.js .slide .phase-columns>*,.js .slide .procedure-steps>*,.js .slide .form-list>*,.js .slide .history-items>*{transition:opacity .6s ease,transform .6s ease;transition-delay:calc(.25s + var(--i,0) * 80ms)}
.js .slide:not(.in-view) .facility-grid>*,.js .slide:not(.in-view) .level-cards>*,.js .slide:not(.in-view) .criteria-cards>*,.js .slide:not(.in-view) .workshop-grid>*,.js .slide:not(.in-view) .phase-columns>*,.js .slide:not(.in-view) .procedure-steps>*,.js .slide:not(.in-view) .form-list>*,.js .slide:not(.in-view) .history-items>*{opacity:0;transform:translateY(16px) scale(.97)}
.js .slide.in-view .facility-grid>*,.js .slide.in-view .level-cards>*,.js .slide.in-view .criteria-cards>*,.js .slide.in-view .workshop-grid>*,.js .slide.in-view .phase-columns>*,.js .slide.in-view .procedure-steps>*,.js .slide.in-view .form-list>*,.js .slide.in-view .history-items>*{opacity:1;transform:translateY(0) scale(1)}
.js .slide:not(.in-view) .rail-title{transform:rotate(180deg) translateX(-18px)}
.js .slide.in-view .rail-title{transform:rotate(180deg) translateX(0)}
.js .slide:not(.in-view) .slide-motto{transform:rotate(-8deg) translateY(24px) scale(.92)}
.js .slide.in-view .slide-motto{transform:rotate(-8deg) translateY(0) scale(1)}
.js .slide:not(.in-view) .cover-copy{transform:translateX(-60px)}
.js .slide.in-view .cover-copy{transform:translateX(0)}
.js .slide:not(.in-view) .cover-photo{transform:scale(.92)}
.js .slide.in-view .cover-photo{transform:scale(1)}
.js .slide:not(.in-view) .cover-virgin{transform:translateY(60px) scale(.85)}
.js .slide.in-view .cover-virgin{transform:translateY(0) scale(1)}
.js .slide:not(.in-view) .welcome-photo,.js .slide:not(.in-view) .history-left,.js .slide:not(.in-view) .levels-saint,.js .slide:not(.in-view) .form-list,.js .slide:not(.in-view) .costs-panel{transform:translateX(-55px)}
.js .slide.in-view .welcome-photo,.js .slide.in-view .history-left,.js .slide.in-view .levels-saint,.js .slide.in-view .form-list,.js .slide.in-view .costs-panel{transform:translateX(0)}
.js .slide:not(.in-view) .welcome-saint,.js .slide:not(.in-view) .history-items,.js .slide:not(.in-view) .register-device{transform:translateX(55px)}
.js .slide.in-view .welcome-saint,.js .slide.in-view .history-items,.js .slide.in-view .register-device{transform:translateX(0)}
.js .slide:not(.in-view) .slide-heading,.js .slide:not(.in-view) .fee-banner,.js .slide:not(.in-view) .register-heading,.js .slide:not(.in-view) .phases-heading{transform:translateY(-40px)}
.js .slide.in-view .slide-heading,.js .slide.in-view .fee-banner,.js .slide.in-view .register-heading,.js .slide.in-view .phases-heading{transform:translateY(0)}
.js .slide:not(.in-view) .ribbon-title{transform:translateX(-40px)}
.js .slide.in-view .ribbon-title{transform:translateX(0)}
.js .slide:not(.in-view) .bank-account,.js .slide:not(.in-view) .vacancies-panel{transform:scale(.85)}
.js .slide.in-view .bank-account,.js .slide.in-view .vacancies-panel{transform:scale(1)}
.js .slide .procedure-top>*,.js .slide .calendar-top>*{transition:opacity .7s ease,transform .7s cubic-bezier(.19,.86,.32,1.05)}
.js .slide:not(.in-view) .procedure-top>*:first-child,.js .slide:not(.in-view) .calendar-top>*:first-child{opacity:0;transform:translateX(-55px)}
.js .slide:not(.in-view) .procedure-top>*:last-child,.js .slide:not(.in-view) .calendar-top>*:last-child{opacity:0;transform:translateX(55px)}
.js .slide.in-view .procedure-top>*,.js .slide.in-view .calendar-top>*{opacity:1;transform:translateX(0)}
.js .slide .cover-logos>*,.js .slide .rail-bottom>*{transition:opacity .6s ease,transform .6s cubic-bezier(.34,1.56,.64,1);transition-delay:calc(.15s + var(--i,0) * 100ms)}
.js .slide:not(.in-view) .cover-logos>*,.js .slide:not(.in-view) .rail-bottom>*{opacity:0;transform:scale(.4)}
.js .slide.in-view .cover-logos>*,.js .slide.in-view .rail-bottom>*{opacity:1;transform:scale(1)}
.js .slide .procedure-steps article>span,.js .slide .criteria-cards li>span,.js .slide .phase-columns article>span,.js .slide .history-items time,.js .slide .form-list li>span{transition:opacity .5s ease,transform .5s cubic-bezier(.34,1.56,.64,1);transition-delay:calc(.45s + var(--i,0) * 80ms)}
.js .slide:not(.in-view) .procedure-steps article>span,.js .slide:not(.in-view) .criteria-cards li>span,.js .slide:not(.in-view) .phase-columns article>span,.js .slide:not(.in-view) .history-items time,.js .slide:not(.in-view) .form-list li>span{opacity:0;transform:scale(.3) rotate(-15deg)}
.js .slide.in-view .procedure-steps article>span,.js .slide.in-view .criteria-cards li>span,.js .slide.in-view .phase-columns article>span,.js .slide.in-view .history-items time,.js .slide.in-view .form-list li>span{opacity:1;transform:scale(1) rotate(0deg)}
.js .slide .reveal-item{will-change:opacity,transform,filter;transition:opacity .78s ease,transform .86s cubic-bezier(.16,1,.3,1),filter .72s ease;transition-delay:calc(var(--i,0) * 30ms)}
.js .slide .reveal-item:not(.is-visible){opacity:0;transform:var(--enter-transform,translateY(28px))}
.js .slide .reveal-item.is-visible{opacity:1;filter:none;transform:var(--rest-transform,none)}
.js .slide .reveal-item.is-visible:not(.is-settled){filter:saturate(1.08) brightness(1.03)}
.js .slide.active-slide{box-shadow:0 18px 50px #4c1b1b2b,0 0 0 3px #d99c4333}
.viewer-controls button:disabled{opacity:.38;cursor:default}
.js .cover-logos>.is-visible,.js .rail-bottom>.is-visible,.js .procedure-steps article>span.is-visible,.js .criteria-cards li>span.is-visible,.js .phase-columns article>span.is-visible,.js .history-items time.is-visible,.js .form-list li>span.is-visible{animation:brochure-pop .82s cubic-bezier(.2,1.15,.35,1) both}
.js .slide-heading.is-visible,.js .register-heading.is-visible,.js .phases-heading.is-visible,.js .fee-banner.is-visible,.js .ribbon-title.is-visible{animation:brochure-rise .7s ease both}
.active-slide .fee-banner:after,.active-slide .register-heading h2:after,.active-slide .ribbon-title:after,.active-slide .procedure-steps article>span:after,.active-slide .form-list span:after{animation:gold-sheen 2.4s ease .35s 1}
.scrolling-up .slide .reveal-item:not(.is-visible){transition-duration:.52s}
.scrolling-down .slide .reveal-item.is-visible{transition-duration:.9s}
.active-slide .rail:after{animation:rail-sweep 2.6s ease .18s 1}
.active-slide .level-card.is-visible:after,.active-slide .facility-grid article.is-visible:after,.active-slide .workshop-card.is-visible:after,.active-slide .procedure-steps article.is-visible:after,.active-slide .criteria-cards li.is-visible:after,.active-slide .phase-columns article.is-visible:after,.active-slide .form-list li.is-visible:after,.active-slide .calendar-panel.is-visible:after,.active-slide .entry-panel.is-visible:after,.active-slide .vacancies-panel.is-visible:after,.active-slide .costs-panel.is-visible:after{animation:card-sweep 1.65s ease calc(var(--i,0) * 55ms) 1}
.active-slide .stage{transform:translateY(calc(var(--slide-offset,0) * -7px));transition:transform .32s ease-out}
.active-slide .rail{transform:translateY(calc(var(--slide-offset,0) * -4px));transition:transform .32s ease-out}
.slide-levels.active-slide .level-cards.is-visible:before{animation:level-path-draw 1s ease .15s both}
.slide-levels.active-slide .level-card.is-visible{animation:level-card-lift 1.1s cubic-bezier(.16,1,.3,1) both}
.slide-levels.active-slide .level-card>img.is-visible{animation:level-photo-reveal .78s cubic-bezier(.16,1,.3,1) both}
.slide-levels.active-slide .level-card>h3.is-visible{animation:level-title-snap .68s ease both,title-shimmer 2.4s ease .45s 1}
.slide-levels.active-slide .level-medal.is-visible{animation:brochure-pop .72s cubic-bezier(.2,1.15,.35,1) both,number-heartbeat 3.2s ease-in-out 1.2s infinite}
.slide-levels.active-slide .level-title-row>h3.is-visible{animation:level-title-snap .68s ease both,title-shimmer 2.4s ease .45s 1}
.slide-levels.active-slide .level-card>em.is-visible{animation:brochure-rise .58s ease both}
.slide-levels.active-slide .level-card>p.is-visible{animation:row-reveal .62s ease both}
.slide-levels.active-slide .level-card>footer.is-visible{background-image:linear-gradient(90deg,#fff3df,#ffe0a1,#fff3df);background-size:220% 100%;animation:level-footer-fill .8s ease both,cta-pulse 3s ease-in-out 1s infinite}
.slide-levels.active-slide .level-feature.is-visible{animation:brochure-pop .62s cubic-bezier(.2,1.15,.35,1) both}
.slide-levels.active-slide .levels-crest.is-visible{animation:brochure-pop .8s cubic-bezier(.2,1.15,.35,1) both}
.slide-levels.active-slide .levels-quote.is-visible{animation:row-reveal .8s ease both}
.slide-levels.active-slide .slide-heading small.is-visible{animation:row-reveal .65s ease both}
.slide-services.active-slide .workshop-card.is-visible{animation:workshop-card-settle .85s cubic-bezier(.16,1,.3,1) both}
.slide-services.active-slide .workshop-card.is-visible:before{animation:workshop-badge-pop .72s cubic-bezier(.2,1.25,.35,1) calc(var(--i,0) * 45ms + .1s) both}
.slide-services.active-slide .workshop-card>img.is-visible{animation:workshop-photo-open .75s cubic-bezier(.16,1,.3,1) both}
.slide-services.active-slide .workshop-card>strong.is-visible{animation:level-title-snap .55s ease both}
.slide-services.active-slide .workshop-card>span.is-visible{animation:row-reveal .6s ease both}
.active-slide .cover-copy h1,.active-slide .slide-heading h2,.active-slide .phases-heading h2{background-image:linear-gradient(90deg,currentColor 0%,#fff8 18%,currentColor 36%);background-size:240% 100%;background-clip:text;-webkit-background-clip:text;animation:title-shimmer 2.6s ease .35s 1}
.active-slide .cover-copy h1{animation:cover-title-in .9s cubic-bezier(.16,1,.3,1) both,title-shimmer 2.8s ease .7s 1}
.active-slide .gold-swish.is-visible{animation:swish-draw 1.15s cubic-bezier(.16,1,.3,1) both}
.active-slide .history-items.is-visible:before{animation:timeline-grow 1.25s ease .2s both}
.active-slide .schedule-table>div.is-visible{animation:row-reveal .72s ease both;animation-delay:calc(var(--row,0) * 130ms + .15s)}
.active-slide .costs-panel>div.is-visible{animation:row-reveal .68s ease both,cost-glow 2.4s ease-in-out infinite;animation-delay:calc(var(--cost-row,0) * 160ms + .18s),calc(var(--cost-row,0) * 180ms + 1.05s)}
.active-slide .rail-logo,.active-slide .cover-school-logo{animation:logo-hover 5.2s ease-in-out infinite}
.viewer-pdf{transition:transform .25s ease,filter .25s ease,box-shadow .25s ease}
.active-slide .register-device>a.is-visible{animation:cta-pulse 2.3s ease-in-out infinite}
.viewer-controls button{transition:transform .2s ease,background .2s ease,box-shadow .2s ease}
.viewer-controls button:not(:disabled):hover{transform:translateY(-2px) scale(1.08);box-shadow:0 0 0 4px #e7b65033}
.active-slide.is-complete:after{animation:completion-glow 1.5s ease .15s 1}
.active-slide .cover-copy h1 strong,.active-slide .script-heading strong,.active-slide .costs-panel b,.active-slide .fee-banner strong{animation:ink-focus 2.1s ease .25s 1}
.active-slide .register-device>a.is-visible{background-image:linear-gradient(90deg,#fff4e7,#fff,#fff4e7);background-size:220% 100%;animation:cta-pulse 2.3s ease-in-out infinite,cta-arrow-nudge 1.8s ease-in-out infinite}
.active-slide .procedure-steps article>span.is-visible,.active-slide .criteria-cards li>span.is-visible,.active-slide .phase-columns article>span.is-visible,.active-slide .form-list li>span.is-visible{animation:brochure-pop .82s cubic-bezier(.2,1.15,.35,1) both,number-heartbeat 2.8s ease-in-out 1.05s infinite}
.active-slide .vacancies-panel p.is-visible{animation:row-reveal .72s ease both,cost-glow 2.7s ease-in-out 1.1s infinite}
.active-slide .entry-panel>strong.is-visible{animation:row-reveal .72s ease .55s both,cta-pulse 2.4s ease-in-out 1.2s infinite}
.active-slide .payment-trust.is-visible:after{animation:card-sweep 1.5s ease .35s 1}
.active-slide .payment-bank.is-visible{animation:brochure-pop .76s cubic-bezier(.2,1.15,.35,1) both}
.active-slide .payment-card.is-visible{animation:row-reveal .68s ease both}
.active-slide .payment-trust strong.is-visible{animation:level-title-snap .6s ease both}
.active-slide .payment-trust span.is-visible{animation:row-reveal .58s ease both}
.active-slide .cover-photo,.active-slide .register-device,.active-slide .welcome-photo{translate:calc(var(--pointer-x,0) * .55cqw) calc(var(--pointer-y,0) * .35cqw);transition:translate .35s ease-out}
.active-slide .cover-virgin,.active-slide .welcome-saint,.active-slide .levels-saint{translate:calc(var(--pointer-x,0) * -.7cqw) calc(var(--pointer-y,0) * -.45cqw);transition:translate .35s ease-out}
@media(max-width:760px){.viewer-pdf{font-size:0}
.viewer-pdf:after{content:'PDF ↓';font-size:11px}
.site-footer{font-size:11px}}
@media(max-width:480px){.viewer-name{font-size:11px}
.viewer-controls{gap:4px}
.viewer-controls span{min-width:47px;font-size:11px}
.viewer-controls button{width:27px;height:27px}}
@media(prefers-reduced-motion:reduce){.js .slide:not(.in-view) .stage>*,.js .slide:not(.in-view) .rail>*,.js .slide:not(.in-view) .facility-grid>*,.js .slide:not(.in-view) .level-cards>*,.js .slide:not(.in-view) .criteria-cards>*,.js .slide:not(.in-view) .workshop-grid>*,.js .slide:not(.in-view) .phase-columns>*,.js .slide:not(.in-view) .procedure-steps>*,.js .slide:not(.in-view) .form-list>*,.js .slide:not(.in-view) .history-items>*,.js .slide:not(.in-view) .cover-logos>*,.js .slide:not(.in-view) .rail-bottom>*,.js .slide:not(.in-view) .procedure-top>*,.js .slide:not(.in-view) .calendar-top>*,.js .slide:not(.in-view) .procedure-steps article>span,.js .slide:not(.in-view) .criteria-cards li>span,.js .slide:not(.in-view) .phase-columns article>span,.js .slide:not(.in-view) .history-items time,.js .slide:not(.in-view) .form-list li>span,.js .slide:not(.in-view) .rail-title,.js .slide:not(.in-view) .slide-motto{opacity:1;transform:none}
.js .slide:not(.in-view) .rail-title{transform:rotate(180deg)}
.js .slide:not(.in-view) .slide-motto{transform:rotate(-8deg)}}
@media(min-width:761px){.deck{padding-top:68px}}
.deck{scroll-snap-type:y proximity}
.viewer-controls button:disabled{opacity:.45;cursor:not-allowed}
.active-slide .ribbon-title.is-visible,.active-slide .notice h2,.active-slide .fee-banner,.active-slide .phases-heading,.active-slide .calendar-panel h2,.active-slide .entry-panel h2{transform-origin:center;backface-visibility:hidden}
.active-slide .facility-grid article.is-visible,.active-slide .criteria-cards li.is-visible,.active-slide .phase-columns article.is-visible,.active-slide .procedure-steps article.is-visible,.active-slide .form-list li.is-visible,.active-slide .calendar-panel.is-visible,.active-slide .entry-panel.is-visible,.active-slide .vacancies-panel.is-visible,.active-slide .costs-panel.is-visible{animation:panel-land .72s cubic-bezier(.16,1,.3,1) both}
.active-slide .essence-symbol,.active-slide .level-feature:before,.active-slide .payment-card.is-visible{animation:icon-spark 3.2s ease-in-out 1.2s infinite}
.active-slide .payment-trust.is-visible,.active-slide .bank-account.is-visible,.active-slide .register-device.is-visible{animation:fine-glow 3.4s ease-in-out 1.1s infinite}
@media(min-width:761px) and (max-width:1180px){.deck{padding-top:64px}}
@media(max-width:760px){.deck{padding:62px 10px 22px}
.viewer-bar{height:auto;min-height:50px;padding:7px 10px;gap:8px}
.viewer-name{line-height:1.1}}
@media(max-width:620px){.viewer-bar{display:grid;grid-template-columns:1fr auto;align-items:center}
.viewer-controls{grid-column:2;grid-row:1 / span 2}
.viewer-links{grid-column:1;justify-self:start;gap:8px}}
@media(max-width:380px){.viewer-controls button{width:25px;height:25px}
.viewer-controls span{min-width:42px;font-size:10px}}
.viewer-bar{position:sticky;height:auto;min-height:50px}
.deck{padding-top:18px}
@media(min-width:761px){.deck{padding-top:20px}}
@media(max-width:760px){.deck{padding-top:12px}}
@media(prefers-reduced-motion:reduce){.active-slide,.active-slide *,.active-slide:before,.active-slide:after{animation:none!important;transition-duration:.01ms!important;translate:0 0!important}}
@media(prefers-reduced-motion:no-preference){.js.intro-build .slide.active-slide .reveal-item{opacity:0!important;filter:blur(2px) saturate(.9)!important;transform:var(--enter-transform,translateY(28px))!important}
.js.intro-build .slide.active-slide .reveal-item:nth-child(1){transition-delay:20ms}
.js.intro-build .slide.active-slide .reveal-item:nth-child(2){transition-delay:90ms}
.js.intro-build .slide.active-slide .reveal-item:nth-child(3){transition-delay:160ms}}
@media(prefers-reduced-motion:no-preference){
  /* Entrada inequívoca de cada lámina al abrirla o navegar hacia ella. */
  .js.motion-ready .slide.just-activated .stage>*{
    animation:web-slide-enter .82s cubic-bezier(.16,1,.3,1) calc(var(--i,0) * 70ms) both;
  }
  .js.motion-ready .slide.just-activated .stage>.slide-heading,
  .js.motion-ready .slide.just-activated .stage>.register-heading,
  .js.motion-ready .slide.just-activated .stage>.phases-heading,
  .js.motion-ready .slide.just-activated .stage>.fee-banner{
    animation-duration:.9s;
  }
}
@media(hover:hover) and (pointer:fine){.viewer-pdf:hover{filter:brightness(1.06);transform:translateY(-1px)}}
@media(max-width:760px){.active-slide .stage,.active-slide .rail{transform:none}
.active-slide{animation:none}
.active-slide .cover-photo,.active-slide .register-device,.active-slide .welcome-photo,.active-slide .cover-virgin,.active-slide .welcome-saint,.active-slide .levels-saint{translate:0 0}}
@media(min-width:761px){.history-items li.is-visible>div{animation:editorial-highlight 2.8s ease-in-out calc(var(--i,0) * 70ms + .5s) 1}
.history-items li.is-visible:before{animation:timeline-marker 2.7s ease-in-out calc(var(--i,0) * 70ms + .7s) 1}}
@media(min-width:921px) and (min-height:480px){.deck{--slide-w:min(100vw - 40px,1600px,(100svh - 50px - 24px) * 16 / 9);padding:0;display:grid;justify-items:center;scroll-snap-type:y mandatory}
.deck .slide{
    width:var(--slide-w);
    aspect-ratio:16/9;
    margin:max(12px,calc((100svh - 50px - var(--slide-w) * .5625) / 2)) auto;
    scroll-margin-top:0;
    scroll-snap-align:center;
    scroll-snap-stop:always;
    font-size:max(4px,calc(var(--slide-w) * .0125));
  }
  .deck .slide-levels{font-size:max(4px,calc(var(--slide-w) * .0106))}
  .deck .slide-cover{font-size:max(4px,calc(var(--slide-w) * .0102))}
.site-footer{scroll-snap-align:end}}

/* Lámina 2: el título y el texto quedan a la izquierda de la imagen de la santa. */
@media(min-width:921px){
  .deck .slide-welcome .welcome-main{width:48%;margin-left:30%}
  .deck .slide-welcome .welcome-main h2{font-size:2.7em}
  .deck .slide-welcome .welcome-panel{margin-left:2%;width:96%;font-size:.88em}
  .deck .slide-welcome .welcome-saint{z-index:1;top:9%;height:64%;right:-2%}
  .deck .slide-welcome .slide-motto{bottom:10%;right:3%;max-width:40%;font-size:1.05em;line-height:1.1;color:#a30b25;text-shadow:none;--rest-transform:rotate(-3deg);transform:rotate(-3deg)}
}

/* Lámina 3: el título no invade la línea de tiempo. */
@media(min-width:921px){
  .deck .slide-history .history-left h2{font-size:3.3em}
}

/* Columna roja: el título vertical se encoge en vez de empujar fuera los logos inferiores. */
@media(min-width:921px) and (min-height:480px){
  .deck .rail{gap:1.2cqw}
  .deck .rail-title{flex:1 1 0;min-height:0;font-size:2.35em}
  .deck .rail-logo,.deck .rail-bottom{flex:none}
}

/* Las lÃ¡minas densas mantienen todos sus elementos visibles en una sola pantalla. */
@media(min-width:921px) and (min-height:480px){

}

/* Lámina 5: fotos de instalaciones y talleres más altas, sin salirse de la pantalla. */
@media(min-width:921px) and (min-height:480px){
  .deck .slide-services{font-size:max(4px,calc(var(--slide-w) * .0108))}
  .deck .slide-services .facility-grid img{height:8.4cqw}
  .deck .slide-services .facility-grid article:nth-child(n+6) img{height:7.4cqw}
  .deck .slide-services .workshop-card{grid-template-rows:5.6cqw auto 1fr;min-height:10.05cqw}
  .deck .slide-services .workshop-card img{height:5.6cqw}
  .deck .slide-services .workshop-card:before{top:2.9cqw}
}

/* Lámina 10: el texto del pago de cuota de ingreso llena su panel. */
@media(min-width:921px) and (min-height:480px){
  .deck .slide-calendar .entry-panel p{font-size:.94em;line-height:1.3;margin:.5cqw .8cqw}
  .deck .slide-calendar .payment-bank{height:4cqw}
  .deck .slide-calendar .payment-card{height:4.2cqw}
  .deck .slide-calendar .payment-trust{margin:.9cqw .8cqw 0;padding:.6cqw .7cqw}
  .deck .slide-calendar .payment-trust strong{font-size:1.35em}
  .deck .slide-calendar .payment-trust span{font-size:1em}
}

/* ====== Efectos ligados al desplazamiento (solo escritorio y con movimiento permitido) ====== */
@media(min-width:921px) and (min-height:480px) and (prefers-reduced-motion:no-preference){
  /* Fondo de la página: del vino cálido al dorado crema conforme se avanza. */
  body{background:
    radial-gradient(ellipse at 50% calc(var(--deck-progress,0) * 100%),hsl(calc(350 + var(--deck-progress,0) * 50) 70% 88%) 0,transparent 55%),
    linear-gradient(180deg,hsl(calc(345 + var(--deck-progress,0) * 60) 35% 91%),hsl(calc(30 + var(--deck-progress,0) * 12) 45% 88%))}

  /* Láminas con profundidad: se inclinan, se alejan y se atenúan al entrar y salir; la velocidad las "estira". */
  .deck{perspective:2200px;perspective-origin:50% 50%}
  .deck .slide{
    --abs:0;
    transform-origin:50% 50%;
    transform:rotateX(calc(var(--slide-offset,0) * -9deg)) translateZ(calc(var(--abs) * -160px)) skewY(calc(var(--vel,0) * -.035deg));
    filter:brightness(calc(1 - var(--abs) * .28)) saturate(calc(1 - var(--abs) * .35));
    will-change:transform,filter;
  }

  /* Parallax por capas: figuras y fotos se desplazan a distinta velocidad que el fondo. */
  .deck .cover-virgin,.deck .welcome-saint,.deck .levels-saint{
    translate:calc(var(--pointer-x,0) * -.7cqw) calc(var(--pointer-y,0) * -.45cqw + var(--slide-offset,0) * -7cqw);transition:none}
  .deck .cover-photo,.deck .welcome-photo,.deck .register-device{
    translate:calc(var(--pointer-x,0) * .55cqw) calc(var(--pointer-y,0) * .35cqw + var(--slide-offset,0) * 3cqw);transition:none}
  .deck .levels-crest,.deck .levels-quote{translate:0 calc(var(--slide-offset,0) * -4cqw)}
  .deck .history-left img,.deck .laptop-screen img{translate:0 calc(var(--slide-offset,0) * 1.6cqw)}
  .deck .cover-photo img,.deck .welcome-photo img,.deck .level-card>img,.deck .facility-grid img{
    object-position:var(--focus-x,50%) calc(50% + var(--slide-offset,0) * 32%)}
  .deck .welcome-photo img{--focus-x:10%}

  /* Los bloques de contenido flotan a distinta profundidad según su columna. */
  .deck .level-cards>*:nth-child(odd),.deck .facility-grid>*:nth-child(odd),.deck .criteria-cards>*:nth-child(odd),
  .deck .phase-columns>*:nth-child(odd),.deck .procedure-steps>*:nth-child(odd){translate:0 calc(var(--slide-offset,0) * 1.4cqw)}
  .deck .level-cards>*:nth-child(even),.deck .facility-grid>*:nth-child(even),.deck .criteria-cards>*:nth-child(even),
  .deck .phase-columns>*:nth-child(even),.deck .procedure-steps>*:nth-child(even){translate:0 calc(var(--slide-offset,0) * -1.4cqw)}

  /* Barrido de luz que recorre la lámina siguiendo el scroll. */
  .deck .slide:after{
    opacity:calc(.32 - var(--abs) * .3);
    left:calc(var(--slide-offset,0) * 140% - 30%);
    width:34%;transform:skewX(-18deg);animation:none;
    background:linear-gradient(90deg,transparent,#fff9,#ffe6a866,transparent)}

  /* Puntos de navegación laterales. */
  .scroll-dots{position:fixed;z-index:90;right:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:11px;padding:12px 8px;border-radius:20px;background:#3d0511b0;backdrop-filter:blur(8px);box-shadow:0 8px 24px #1d020a55}
  .scroll-dots button{position:relative;width:11px;height:11px;padding:0;border:2px solid #ffd66e;border-radius:50%;background:transparent;cursor:pointer;transition:transform .35s cubic-bezier(.34,1.56,.64,1),background .3s,box-shadow .3s}
  .scroll-dots button:hover{transform:scale(1.35)}
  .scroll-dots button.is-active{background:#ffd66e;transform:scale(1.5);box-shadow:0 0 0 4px #ffd66e33,0 0 14px #ffd66eaa}
  .scroll-dots button:after{content:attr(data-title);position:absolute;right:calc(100% + 12px);top:50%;transform:translate(8px,-50%);padding:5px 10px;border-radius:8px;background:#3d0511;color:#ffe9b0;font:600 12px/1 Arial,sans-serif;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}
  .scroll-dots button:hover:after{opacity:1;transform:translate(0,-50%)}
}
@media(max-width:920px),(max-height:479px),(prefers-reduced-motion:reduce){.scroll-dots{display:none}}

/* ====== Animaciones de entrada más expresivas (escritorio): cada tipo de elemento entra a su manera al desplazarse ====== */
@media(min-width:921px) and (min-height:480px) and (prefers-reduced-motion:no-preference){
  .js .slide .reveal-item{transition:opacity .85s ease,transform 1.05s cubic-bezier(.22,1.3,.36,1),filter .85s ease,clip-path 1s cubic-bezier(.16,1,.3,1)}
  .js .slide .reveal-item:not(.is-visible){filter:var(--enter-filter,none)}
  .js .slide .reveal-item.is-visible:not(.is-settled){filter:none}

  /* Títulos: se abaten como una tapa que gira hacia adelante, desenfocados. */
  .deck .slide-heading>h2,.deck .register-heading,.deck .phases-heading,.deck .fee-banner{
    transform-origin:50% 0;--enter-transform:perspective(900px) rotateX(-80deg) translateY(-30px);--enter-filter:blur(10px)}
  .deck .slide-heading>p,.deck .slide-heading>small,.deck .register-intro,.deck .criteria-explain,.deck .phase-footer,.deck .register-footnote{
    --enter-transform:translateY(34px) scale(.96);--enter-filter:blur(8px)}

  /* Cintas de sección: se despliegan de izquierda a derecha. */
  .deck .ribbon-title{--enter-transform:translateX(-60px);clip-path:inset(0 100% 0 0)}
  .deck .ribbon-title.is-visible{clip-path:inset(0 0 0 0)}

  /* Tarjetas: giran en 3D desde lados alternos y se asientan con un pequeño rebote. */
  .deck .level-cards>*,.deck .facility-grid>*,.deck .workshop-grid>*,.deck .procedure-steps>*,.deck .criteria-cards>*,.deck .phase-columns>*,.deck .history-items>*,.deck .form-list>*{
    transform-origin:50% 100%;--enter-filter:blur(7px)}
  .deck .level-cards>*:nth-child(odd),.deck .facility-grid>*:nth-child(odd),.deck .workshop-grid>*:nth-child(odd),.deck .procedure-steps>*:nth-child(odd),.deck .criteria-cards>*:nth-child(odd),.deck .phase-columns>*:nth-child(odd){
    --enter-transform:perspective(1000px) translate3d(-46px,60px,-140px) rotateY(-28deg) rotateX(18deg) scale(.86)}
  .deck .level-cards>*:nth-child(even),.deck .facility-grid>*:nth-child(even),.deck .workshop-grid>*:nth-child(even),.deck .procedure-steps>*:nth-child(even),.deck .criteria-cards>*:nth-child(even),.deck .phase-columns>*:nth-child(even){
    --enter-transform:perspective(1000px) translate3d(46px,60px,-140px) rotateY(28deg) rotateX(18deg) scale(.86)}
  .deck .history-items>*{--enter-transform:translateX(90px) skewX(-8deg) scale(.94);--enter-filter:blur(6px)}
  .deck .form-list>*{--enter-transform:translateX(-90px) skewX(8deg) scale(.94);--enter-filter:blur(6px)}

  /* Números e insignias: aparecen girando y con rebote. */
  .deck .procedure-steps article>span,.deck .criteria-cards li>span,.deck .phase-columns article>span,.deck .history-items time,.deck .form-list li>span,.deck .level-medal{
    --enter-transform:scale(.1) rotate(-220deg);--enter-filter:blur(4px)}

  /* Fotos grandes: se descubren con zoom y se enfocan. */
  .deck .cover-photo,.deck .welcome-photo,.deck .history-left{--enter-transform:scale(1.18);--enter-filter:blur(14px) saturate(.6)}
  .deck .laptop,.deck .register-device{--enter-transform:perspective(1000px) rotateY(-32deg) translateX(70px) scale(.9);--enter-filter:blur(8px)}

  /* Figuras: suben desde abajo con giro suave. */
  .deck .cover-virgin,.deck .welcome-saint,.deck .levels-saint{--enter-transform:translateY(90px) rotate(-5deg) scale(.86);--enter-filter:blur(10px)}
  .deck .levels-crest,.deck .levels-quote{--enter-transform:scale(.4) rotate(-12deg);--enter-filter:blur(6px)}

  /* Paneles de cronograma, avisos y costos: entran desde los lados con perspectiva. */
  .deck .procedure-top>*:first-child,.deck .calendar-top>*:first-child{--enter-transform:perspective(1200px) rotateY(24deg) translateX(-110px);--enter-filter:blur(8px)}
  .deck .procedure-top>*:last-child,.deck .calendar-top>*:last-child{--enter-transform:perspective(1200px) rotateY(-24deg) translateX(110px);--enter-filter:blur(8px)}
  .deck .schedule-table>div,.deck .costs-panel>div{--enter-transform:translateX(120px) skewX(-14deg);--enter-filter:blur(6px)}
  .deck .vacancies-panel p{--enter-transform:translateY(50px) scale(.8) rotateX(35deg);--enter-filter:blur(6px)}
  .deck .costs-panel,.deck .vacancies-panel,.deck .bank-account,.deck .payment-trust{--enter-transform:scale(.7);--enter-filter:blur(8px)}

  /* Texto corrido: se enfoca mientras sube. */
  .deck .welcome-panel,.deck .essence-card,.deck .level-card>p,.deck .level-card>em,.deck .notice p{--enter-transform:translateY(30px);--enter-filter:blur(7px)}

  /* Columna roja y logos. */
  .deck .rail-logo{--enter-transform:translateX(-50px) scale(.7);--enter-filter:blur(6px)}
  .deck .rail-bottom>*,.deck .cover-logos>*{--enter-transform:scale(.2) rotate(-25deg);--enter-filter:blur(5px)}
}
