/* A pan y tarta · estilos traducidos de diseno/project/Home.dc.html y Landing-Alcala.dc.html */
:root{--crema:#FBF6F0;--masa:#E9D6C1;--rosa:#D8A7A7;--rosa-p:#B9707A;--rosa-h:#A65E69;--oro:#C9A15B;--choco:#4A3227;--tx2:#6B5245;--linea:#EFE4D8;
  --ground:#FBF6F0;--ink:#4A3227;--accent:#B9707A;--soft:#D8A7A7;--crust:#E9D6C1}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:90px}
body{margin:0;background:#FBF6F0;font-family:'Instrument Sans',system-ui,sans-serif;color:#4A3227;-webkit-font-smoothing:antialiased;overflow-x:clip}
img{max-width:100%;display:block}
.pg{position:relative;overflow-x:clip}
.wrap{container:page / inline-size;position:relative}
.in{max-width:1240px;margin:0 auto;padding:0 32px}
.sec{padding:128px 0;position:relative}
.eyebrow{font:600 12px/1.4 'Instrument Sans',sans-serif;letter-spacing:.2em;text-transform:uppercase;color:#7A5A4B;margin:0 0 18px}
.h2{font:600 clamp(44px,6.4cqi,92px)/.92 'Cormorant Garamond',Georgia,serif;letter-spacing:-.02em;margin:0;text-wrap:balance}
.h3{font:600 30px/1.05 'Cormorant Garamond',Georgia,serif;margin:0}
.script{font-family:'Sacramento',cursive;font-weight:400;color:#B9707A;letter-spacing:0;font-size:.8em}
.lead{font-size:19px;line-height:1.6;max-width:56ch;text-wrap:pretty;margin:0}
.muted{color:#6B5245}
a{color:#4A3227}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:54px;padding:0 30px;border-radius:999px;background:#B9707A;color:#FFFFFF;font:600 16px/1 'Instrument Sans',sans-serif;text-decoration:none;border:0;cursor:pointer;transition:transform .55s cubic-bezier(.34,1.9,.5,1),background .2s,box-shadow .2s;box-shadow:0 10px 24px -12px rgba(185,112,122,.9)}
.btn:hover{transform:scale(1.06) translateY(-2px);background:#A65E69}
.btn:active{transform:scale(.93);transition-duration:.12s}
.btn.ghost{background:transparent;color:#4A3227;box-shadow:inset 0 0 0 1.5px #4A3227}
.btn.ghost:hover{background:#4A3227;color:#FBF6F0}
.btn.cream{background:#FBF6F0;color:#4A3227;box-shadow:none}
.btn.cream:hover{background:#FFFFFF}
.btn.sm{min-height:46px;padding:0 22px;font-size:15px}
.btn[disabled]{opacity:.6;cursor:progress}
.chip{min-height:44px;padding:0 18px;border-radius:999px;border:1.5px solid #E3D2C1;background:#FFFFFF;color:#4A3227;font:500 15px/1 'Instrument Sans',sans-serif;cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:transform .45s cubic-bezier(.34,1.9,.5,1),background .2s,color .2s}
.chip:hover{transform:translateY(-2px)}
.chip.on,.chip[aria-pressed="true"]{background:#4A3227;color:#FBF6F0;border-color:#4A3227}
.tag{display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-radius:999px;background:#FFFFFF;box-shadow:0 0 0 1px #EFE4D8;font:600 14px/1 'Instrument Sans',sans-serif}
.dot{width:9px;height:9px;border-radius:50%;background:#B9707A;animation:pulse 1.6s ease-in-out infinite}
.card{background:#FFFFFF;border-radius:22px;box-shadow:0 1px 0 #EFE4D8,0 24px 48px -30px rgba(74,50,39,.45)}
.crust{fill:var(--crust)}
.line{fill:none;stroke:var(--ink);stroke-width:4.5;stroke-linejoin:round;stroke-linecap:round}
.score{fill:var(--ground);stroke:var(--accent);stroke-width:4.5;stroke-linejoin:round}
.l1{fill:var(--soft)}.l2{fill:var(--ground)}.l3{fill:var(--ink)}
.pipe{fill:none;stroke:var(--accent);stroke-width:6.5;stroke-linecap:round;stroke-linejoin:round}
.hi{fill:none;stroke:var(--ground);stroke-opacity:.5;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.serif{font-family:'Cormorant Garamond',Georgia,serif;font-weight:600;font-size:100px;fill:var(--ink)}
.ph{font:600 11px/1 'Instrument Sans',sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#6B5245}
.fl{display:inline-flex;align-items:center;gap:10px;padding:12px 18px;border-radius:999px;background:#FFFFFF;box-shadow:0 0 0 1px #EFE4D8;font:500 16px/1 'Instrument Sans',sans-serif;color:#4A3227;text-decoration:none;transition:transform .45s cubic-bezier(.34,1.9,.5,1),box-shadow .2s}
a.fl:hover{transform:translateY(-3px);box-shadow:0 0 0 1.5px #B9707A}
.fl i{width:14px;height:14px;border-radius:50%;display:block}
.chips,.flist,.zl{display:flex;flex-wrap:wrap;gap:10px}
.flist{margin-top:16px}.zl{margin-top:20px}

/* header */
.hdr{position:sticky;top:0;z-index:40;background:rgba(251,246,240,.9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid #EFE4D8}
.hdr-in{display:flex;align-items:center;justify-content:space-between;gap:24px;height:76px}
.nav{display:flex;gap:30px}
.nav a{color:#4A3227;text-decoration:none;font:500 15px/1 'Instrument Sans',sans-serif;padding:14px 0}
.nav a:hover{color:#A65E69}
.hdr-cta{display:flex;align-items:center;gap:10px}
/* logo del header: al pasar, el corazón late (como al final del loader) y la manga repasa "a" e "y" */
.logo-a .lg-heart{transform-box:fill-box;transform-origin:50% 60%}
.logo-a .lg-pipe{stroke-dasharray:1;stroke-dashoffset:0}
.logo-a:hover .lg-heart,.logo-a:focus-visible .lg-heart{animation:beat .42s ease-out 2}
.logo-a:hover .lg-pipe,.logo-a:focus-visible .lg-pipe{animation:lgDraw .5s cubic-bezier(.45,0,.2,1) both}
.logo-a:hover .lg-y,.logo-a:focus-visible .lg-y{animation-delay:.18s}
@keyframes lgDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.menu-btn{display:none;width:46px;height:46px;border-radius:50%;border:1.5px solid #E3D2C1;background:#FFFFFF;align-items:center;justify-content:center;cursor:pointer;color:#4A3227}
.mnav{display:flex;flex-direction:column;padding:8px 20px 20px;gap:2px;border-top:1px solid #EFE4D8}
.mnav[hidden]{display:none}
.mnav a{padding:14px 4px;font:600 18px/1 'Instrument Sans',sans-serif;text-decoration:none;color:#4A3227;border-bottom:1px solid #F1E6DA}
.crumb{display:flex;flex-wrap:wrap;gap:8px;font-size:14px;color:#6B5245;margin-bottom:28px;animation:fadeUp .8s both}
.crumb a{color:#6B5245}

/* hero */
.hero{position:relative;padding:64px 0 120px;overflow:clip}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:32px;align-items:center;position:relative}
.h1{font:600 clamp(52px,6.3cqi,104px)/.86 'Cormorant Garamond',Georgia,serif;letter-spacing:-.025em;margin:0}
.h1.lp{font-size:clamp(50px,6.4cqi,100px);line-height:.9}
.h1a{display:block}
.w{display:inline-block;white-space:nowrap}
.lt{display:inline-block;animation:letter .7s cubic-bezier(.2,.8,.2,1) both}
.h1b{display:block;font-size:.34em;line-height:1.12;letter-spacing:-.005em;margin-top:.42em;font-weight:500;max-width:22ch;animation:fadeUp .9s cubic-bezier(.2,.8,.2,1) both}
.hero-art{position:relative;height:620px}
.spr{position:absolute;top:-24px;width:11px;height:4px;border-radius:2px;animation:fall linear infinite}
.spin{transform-box:fill-box;animation:spin linear infinite}
.fu{animation:fadeUp .9s both}
[data-hero],.hero-lp{--b:.1s;--d0:calc(var(--b) - .05s);--d1:calc(var(--b) + .75s);--d2:calc(var(--b) + .9s);--d3:calc(var(--b) + 1.1s)}
.con-loader [data-hero]{--b:1.05s}

/* capa a capa */
.stack{height:2600px;position:relative;view-timeline:--stack block}
.stack-sticky{position:sticky;top:76px;height:700px;display:flex;align-items:center}
.stack-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:center;width:100%}
.vals{list-style:none;margin:36px 0 0;padding:0;display:flex;flex-direction:column;gap:18px}
.val{display:grid;grid-template-columns:56px minmax(0,1fr);gap:14px;align-items:start}
.val .n{font:400 46px/1 'Sacramento',cursive;color:#B9707A}
.val h3{margin:0;font:600 28px/1.05 'Cormorant Garamond',serif}
.val p{margin:4px 0 0;font-size:15.5px;line-height:1.5;color:#6B5245}
.layer{transform-box:fill-box}

/* categorías */
.cats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(330px,100%),1fr));gap:22px;margin-top:56px}
.cat{display:flex;flex-direction:column;gap:12px;padding:26px 26px 24px;text-decoration:none;color:#4A3227;transition:transform .5s cubic-bezier(.34,1.7,.5,1),box-shadow .3s}
.cat:hover{transform:translateY(-8px) rotate(-.6deg)}
.cat .ill{height:150px;border-radius:16px;display:flex;align-items:center;justify-content:center}
.cat p{margin:0;font-size:15.5px;line-height:1.55;color:#6B5245}
.more{font:600 14px/1 'Instrument Sans',sans-serif;color:#A65E69;margin-top:auto}

/* configurador */
.cfg{background:#4A3227;color:#FBF6F0;padding:128px 0 150px;position:relative;z-index:2}
.cfg .eyebrow{color:#E9D6C1}
.cfg-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px}
.cfg-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px;margin-top:56px;align-items:start}
.cfg-prev{position:sticky;top:100px;display:flex;flex-direction:column;gap:20px}
.cfg-stage{background:#E9D6C1;border-radius:28px;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.cfg-stage svg.cake{transition:transform .5s cubic-bezier(.34,1.6,.5,1)}
.cfg-stage.bump svg.cake{animation:bump .5s cubic-bezier(.34,1.6,.5,1)}
/* vista previa viva: pisos que caen, adornos que brotan, topper que salta */
.cfg-stage .tz{transform-box:fill-box;transform-origin:50% 100%;animation:tierIn .62s cubic-bezier(.34,1.45,.5,1) both;animation-delay:calc(var(--i) * 90ms)}
.cfg-stage .dz{transform-box:fill-box;transform-origin:50% 50%;animation:dzIn .45s cubic-bezier(.34,1.8,.5,1) both;animation-delay:calc(var(--i) * 14ms)}
.cfg-stage .tz ~ .dz{animation-delay:calc(.3s + var(--i) * 14ms)}
.cfg-stage .tpz{transform-box:fill-box;transform-origin:50% 100%;animation:dzIn .5s cubic-bezier(.34,1.8,.5,1) both}
.opts .chip[aria-pressed="true"],.opts .sw[aria-pressed="true"],.filters .chip[aria-pressed="true"]{animation:chipPop .5s cubic-bezier(.34,1.9,.5,1)}
.chip:active,.sw:active{transform:scale(.92);transition-duration:.12s}
.cfg-ctl{background:#FBF6F0;color:#4A3227;border-radius:28px;padding:34px;display:flex;flex-direction:column;gap:26px}
fieldset{border:0;margin:0;padding:0;min-width:0}
legend{font:600 13px/1 'Instrument Sans',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#6B5245;margin-bottom:12px;padding:0}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.sw{width:46px;height:46px;border-radius:50%;cursor:pointer;border:0;box-shadow:inset 0 0 0 1px rgba(74,50,39,.18);transition:transform .45s cubic-bezier(.34,1.9,.5,1)}
.sw:hover{transform:scale(1.1)}
.sw[aria-pressed="true"]{box-shadow:inset 0 0 0 1px rgba(74,50,39,.18),0 0 0 3px #FBF6F0,0 0 0 5px #4A3227}
.field{display:flex;flex-direction:column;gap:8px}
.field label,.flabel{font:600 14px/1.2 'Instrument Sans',sans-serif}
.inp{min-height:50px;border-radius:14px;border:1.5px solid #E3D2C1;background:#FFFFFF;padding:0 16px;font:400 16px 'Instrument Sans',sans-serif;color:#4A3227;width:100%}
textarea.inp{padding:14px 16px;min-height:110px;resize:vertical}
.inp:focus{outline:2px solid #B9707A;outline-offset:1px}
.range{width:100%;accent-color:#B9707A;height:30px}
.price{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.price b{font:600 64px/1 'Cormorant Garamond',serif;font-variant-numeric:tabular-nums}
.price b.tick{animation:tick .45s cubic-bezier(.34,1.8,.5,1)}
.sum{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;font-size:14.5px;color:#E9D6C1}
.sum b{color:#FBF6F0;font-weight:600}

/* drips */
.drip{position:absolute;left:0;top:100%;width:100%;height:84px;z-index:3;transform-origin:50% 0;pointer-events:none}
.drip.top{top:-1px;height:64px}

/* galería */
.filters{display:flex;flex-wrap:wrap;gap:10px;margin:40px 0 36px}
.cf{position:relative;user-select:none;-webkit-user-select:none;touch-action:pan-y}
.cf-stage{position:relative;height:540px;perspective:1500px;transform-style:preserve-3d;--sp:236px}
.cf-item{position:absolute;left:50%;top:50%;width:330px;height:450px;border:0;padding:0;background:none;cursor:pointer;transform:translate(-50%,-50%) translateX(calc(var(--off) * var(--sp))) translateZ(calc(var(--abs) * -170px)) rotateY(calc(var(--off) * -32deg));transition:transform .85s cubic-bezier(.2,.8,.2,1),opacity .6s;transform-style:preserve-3d}
.cf-card{width:100%;height:100%;border-radius:28px;position:relative;overflow:hidden;box-shadow:0 30px 60px -32px rgba(74,50,39,.6);display:flex;flex-direction:column;justify-content:flex-end;padding:22px;text-align:left;color:#4A3227;transition:transform .5s cubic-bezier(.34,1.6,.5,1)}
.cf-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;-webkit-user-drag:none}
.cf-card.has-img .cf-cap{background:rgba(251,246,240,.92);border-radius:16px;padding:12px 14px;margin:-6px}
.cf-item.on .cf-card{animation:floaty 4.2s ease-in-out infinite;box-shadow:0 46px 80px -30px rgba(74,50,39,.75)}
.cf-item:not(.on):hover .cf-card{transform:translateY(-10px)}
.shine{position:absolute;inset:0;background:linear-gradient(115deg,rgba(255,255,255,0) 35%,rgba(255,255,255,.45) 50%,rgba(255,255,255,0) 65%);opacity:0;transition:opacity .4s;pointer-events:none}
.cf .shine{opacity:1;transform:translateX(-120%)}
.cf-item.on .shine{animation:sweep 3.2s ease-in-out infinite}
.cf-cap{position:relative;display:flex;flex-direction:column;gap:6px}
.cf-t{font:600 24px/1.1 'Cormorant Garamond',serif}
.cf-bar{display:flex;align-items:center;justify-content:center;gap:28px;margin-top:10px}
.cf-label{font:600 26px/1.1 'Cormorant Garamond',serif;text-align:center}
.cf-prog{display:block;width:180px;height:3px;border-radius:2px;background:#EADCCB;overflow:hidden}
.cf-prog i{display:block;height:100%;background:#B9707A;transform-origin:0 50%;animation:prog 3.6s linear forwards}
.cf.paused .cf-prog i{animation-play-state:paused}
.pop{animation:popA .55s cubic-bezier(.2,.8,.2,1) both}
.ibtn{width:52px;height:52px;border-radius:50%;border:0;background:#FBF6F0;color:#4A3227;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 0 0 1px #E3D2C1}
.ibtn svg{width:22px;height:22px}
.grid-fotos{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:20px;margin-top:40px}
.gf{position:relative;aspect-ratio:3/4;border-radius:22px;overflow:hidden;border:0;padding:16px;display:flex;flex-direction:column;justify-content:flex-end;text-align:left;cursor:zoom-in;color:#4A3227;transition:transform .5s cubic-bezier(.34,1.6,.5,1);box-shadow:0 24px 40px -28px rgba(74,50,39,.6)}
.gf:hover{transform:translateY(-8px) rotate(-.6deg)}
.gf img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gf svg{position:absolute;left:50%;top:40%;width:78%;transform:translate(-50%,-50%)}
.gf .cf-cap{position:relative}

/* marquee */
.mq{background:#D8A7A7;overflow:hidden;padding:26px 0;position:relative;z-index:1}
.mq-track{display:flex;width:max-content;animation:marquee 32s linear infinite}
.mq-item{font:italic 500 46px/1 'Cormorant Garamond',serif;color:#4A3227;white-space:nowrap;padding-right:48px;display:flex;align-items:center;gap:48px}
.mq-item .script{font-size:1.1em}

/* pasos / precios */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:22px;margin-top:56px}
.step{padding:34px 30px;display:flex;flex-direction:column;gap:12px}
.step .n{font:400 72px/.8 'Sacramento',cursive;color:#B9707A}
.step p{margin:0;line-height:1.6;color:#5C4337}
.prices{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:18px;margin-top:56px}
.pc{padding:28px;display:flex;flex-direction:column;gap:8px}
.pc .t{font:600 24px/1.15 'Cormorant Garamond',serif}
.pc .p{font:600 48px/1 'Cormorant Garamond',serif}

/* sabores */
.flav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;margin-top:48px}

/* pan */
.bread{background:#E9D6C1;overflow:clip}
.bread-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:center}
.loaf{transform-box:fill-box;transform-origin:50% 100%}
.steam{animation:steam 3.2s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}

/* cocina */
.kitchen{background:#7A5238;color:#FBF6F0;overflow:clip;view-timeline:--table block}
.table{position:relative;height:640px;margin-top:48px}
.pol{position:absolute;background:#FFFFFF;padding:12px 12px 46px;border-radius:4px;box-shadow:0 22px 34px -18px rgba(30,18,10,.7);width:230px;transform:rotate(var(--r));color:#4A3227}
.pol .img{height:206px;border-radius:2px;display:flex;align-items:flex-end;padding:12px;overflow:hidden;position:relative}
.pol .img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pol .cap2{position:absolute;left:0;right:0;bottom:10px;text-align:center;font:400 28px/1 'Sacramento',cursive;color:#4A3227}
.video{position:absolute;right:2%;top:6%;width:300px;height:400px;border-radius:18px;background:#2E1F18;box-shadow:0 22px 34px -18px rgba(30,18,10,.7);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;transform:rotate(3deg);overflow:hidden}
.video video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.video.playing .play,.video.playing .ph{display:none}
.play{position:relative;width:76px;height:76px;border-radius:50%;background:#FBF6F0;border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .5s cubic-bezier(.34,1.9,.5,1)}
.play:hover{transform:scale(1.1)}

/* reseñas */
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:48px}
.stat{padding:28px;display:flex;flex-direction:column;gap:6px}
.stat b{font:600 64px/1 'Cormorant Garamond',serif;font-variant-numeric:tabular-nums}
.revs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:18px;margin-top:18px}
.rev{padding:28px;display:flex;flex-direction:column;gap:14px}
.rev p{margin:0;font:500 22px/1.35 'Cormorant Garamond',serif}
.stars{display:flex;gap:4px;color:#C9A15B}
.stars svg{width:18px;height:18px}

/* zonas */
.zones-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:40px;align-items:center;margin-top:48px}
.map{view-timeline:--map block;padding:18px}
.route{stroke-dasharray:1;stroke-dashoffset:0}

/* faq */
.faq{display:flex;flex-direction:column;gap:12px;margin-top:48px;max-width:860px}
.faq details{background:#FFFFFF;border-radius:18px;box-shadow:0 0 0 1px #EFE4D8;padding:0 26px}
.faq summary{list-style:none;cursor:pointer;min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:20px;font:600 24px/1.15 'Cormorant Garamond',serif}
.faq summary::-webkit-details-marker{display:none}
.faq summary .pl{flex:none;width:34px;height:34px;border-radius:50%;background:#F3EBE2;display:flex;align-items:center;justify-content:center;transition:transform .35s}
.faq details[open] summary .pl{transform:rotate(45deg);background:#D8A7A7}
.faq details p,.faq .ans{margin:0 0 24px;font-size:16.5px;line-height:1.6;color:#5C4337;max-width:68ch}
.faq details[open] .ans{animation:fadeUp .45s cubic-bezier(.2,.8,.2,1) both}
@supports selector(::details-content){
  .faq details{interpolate-size:allow-keywords}
  .faq details::details-content{block-size:0;overflow:hidden;transition:block-size .45s cubic-bezier(.2,.8,.2,1),content-visibility .45s allow-discrete}
  .faq details[open]::details-content{block-size:auto}
}

/* velas */
.wish{background:#F2D6D6;overflow:clip;text-align:center}
.candles{display:flex;justify-content:center;gap:34px;position:relative;z-index:2}
.candle{width:64px;height:190px;border:0;background:none;padding:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;position:relative}
.flame{width:22px;height:34px;border-radius:50% 50% 50% 50% / 60% 60% 40% 40%;background:#F3B54A;box-shadow:0 0 22px 8px rgba(243,181,74,.55);animation:ignite .45s cubic-bezier(.34,1.8,.5,1),flicker .32s ease-in-out .45s infinite alternate;transform-origin:50% 100%;margin-bottom:6px}
.candle.out .flame{animation:flameOut .3s ease-in forwards}
.smoke{display:none;position:absolute;left:50%;bottom:128px;margin-left:-5px;width:10px;height:26px;border-radius:50%;background:rgba(74,50,39,.25);animation:smoke 1.3s ease-out .12s both}
.candle.out .smoke{display:block}
.wax{width:22px;height:120px;border-radius:6px;background:repeating-linear-gradient(-35deg,#FFFFFF 0 10px,#B9707A 10px 20px)}
.plate{width:min(520px,100%);height:70px;margin:-6px auto 0;border-radius:18px 18px 40px 40px;background:#FBF6F0;box-shadow:inset 0 -10px 0 #E9D6C1}
.conf{position:absolute;left:50%;top:40%;width:10px;height:14px;border-radius:2px;animation:confetti 1.4s cubic-bezier(.2,.7,.3,1) both}
.wished{margin-top:34px;display:flex;flex-direction:column;align-items:center;gap:18px;animation:popA .6s both}
.wished[hidden]{display:none}
.wished p{margin:0;font:400 64px/1 'Sacramento',cursive;color:#4A3227}

/* formulario */
.form-card{padding:40px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 22px;margin-top:48px}
.full{grid-column:1 / -1}
.err{font:600 13px/1.3 'Instrument Sans',sans-serif;color:#A2283A}
.err:not(:empty){animation:errIn .35s cubic-bezier(.34,1.6,.5,1)}
.err:empty{display:none}
.hp{position:absolute;left:-9999px}
.ok-msg{padding:16px 20px;border-radius:16px;background:#DCE7C6;color:#3d5226;font-weight:600}
.ok-msg[hidden]{display:none}

/* footer */
.ftr{background:#4A3227;color:#FBF6F0;padding:110px 0 120px;position:relative}
.ftr a{color:#FBF6F0;text-decoration:none}
.ftr a:hover{text-decoration:underline}
.ftr-grid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:40px}
.ftr h3{font:600 13px/1 'Instrument Sans',sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#E9D6C1;margin:0 0 16px}
.ftr ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;font-size:15px}

/* flotantes */
.wa{position:fixed;right:22px;bottom:22px;z-index:70;display:inline-flex;align-items:center;gap:12px;min-height:60px;padding:0 24px 0 18px;border-radius:999px;background:#B9707A;color:#FFFFFF;text-decoration:none;font:600 16px/1 'Instrument Sans',sans-serif;box-shadow:0 16px 34px -12px rgba(74,50,39,.6);transition:transform .55s cubic-bezier(.34,1.9,.5,1);animation:waIn .8s cubic-bezier(.34,1.7,.5,1) 1.2s backwards}
.con-loader .wa{animation-delay:1.7s}
.wa:hover{transform:scale(1.06)}
.lb{position:fixed;inset:0;z-index:90;background:rgba(46,31,24,.86);display:flex;align-items:center;justify-content:center;padding:24px}
.lb[hidden]{display:none}
.lb-box{width:min(760px,100%);display:flex;flex-direction:column;gap:16px;animation:popA .4s both}
.lb:not([hidden]){animation:fade .25s ease-out}
.lb.out{animation:lbOut .2s ease-in forwards}
.lb.out .lb-box{animation:lbBoxOut .2s ease-in forwards}
.lb-img.swap{animation:lbSwap .42s cubic-bezier(.2,.8,.2,1)}
.lb-img{height:min(70vh,560px);border-radius:22px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center;position:relative;overflow:hidden}
.lb-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#2E1F18}
.lb-img .lb-t{font:600 34px/1.1 'Cormorant Garamond',serif;position:relative}
.lb-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#FBF6F0}
.loader{position:fixed;inset:0;z-index:100;background:#FBF6F0;display:flex;align-items:center;justify-content:center;animation:loaderOut .35s ease-in 1.05s forwards}
.d{stroke-dasharray:1;stroke-dashoffset:1;animation:draw cubic-bezier(.45,0,.2,1) forwards}
.fd{opacity:0;animation:fade ease-out forwards}
.gr{transform-box:fill-box;transform-origin:50% 100%;transform:scaleY(0);animation:grow cubic-bezier(.3,1.4,.5,1) forwards}
.ri{opacity:0;animation:rise cubic-bezier(.2,.7,.2,1) both}
.bt{transform-box:fill-box;transform-origin:50% 60%;animation:beat ease-out both}

/* efectos (sprinkles al pulsar) */
.fx{position:fixed;inset:0;pointer-events:none;z-index:80;overflow:hidden}
.fx .sp{position:absolute;left:0;top:0;height:3.5px;border-radius:3px;will-change:transform,opacity}

/* landing local */
.modes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:560px}
.mode{display:flex;align-items:center;gap:14px;padding:18px;text-decoration:none;color:#4A3227;transition:transform .5s cubic-bezier(.34,1.7,.5,1)}
.mode:hover{transform:translateY(-6px) rotate(-.8deg)}
.mode .ic{flex:none;width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center}
.mode b{display:block;font:600 22px/1.05 'Cormorant Garamond',serif}
.mode span span{font-size:13.5px;color:#6B5245}
.art{position:relative;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center}
.art .spr{top:-12px}
.ring{transform-box:view-box;transform-origin:200px 200px;animation:ring 26s linear infinite}
.bob{animation:bob 3.6s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}
.beat{animation:beatLoop 2.8s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 60%}
.why{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:22px;margin-top:48px}
.why .card{padding:32px;display:flex;flex-direction:column;gap:12px;transition:transform .5s cubic-bezier(.34,1.7,.5,1)}
.why .card:hover{transform:translateY(-8px) rotate(.6deg)}
.why .n{font:400 64px/.8 'Sacramento',cursive;color:#B9707A}
.why p{margin:0;line-height:1.6;color:#5C4337}
.deliv{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:48px;align-items:center;margin-top:44px}
.strip{overflow:hidden;margin-top:44px;padding:20px 0 30px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.strip-track{display:flex;gap:20px;width:max-content;animation:marquee 46s linear infinite}
.strip:hover .strip-track{animation-play-state:paused}
.sc{flex:none;width:250px;height:320px;border-radius:24px;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;padding:18px;transition:transform .5s cubic-bezier(.34,1.6,.5,1);box-shadow:0 24px 40px -28px rgba(74,50,39,.6)}
.sc:nth-child(odd){transform:rotate(-2deg)}
.sc:nth-child(even){transform:rotate(2deg) translateY(12px)}
.sc:hover{transform:rotate(0) translateY(-12px) scale(1.04)}
.sc img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.sc svg{position:absolute;left:50%;top:40%;width:80%;transform:translate(-50%,-50%)}
.band{background:#4A3227;color:#FBF6F0;padding:130px 0;text-align:center;position:relative;overflow:clip}
.pin{animation:pin 2.4s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}
.road{stroke-dasharray:10 10;animation:dash 1.4s linear infinite}
.prose{font-size:18px;line-height:1.7;max-width:68ch}
.prose h2{font:600 40px/1 'Cormorant Garamond',serif;margin:1.6em 0 .5em}
.prose h3{font:600 28px/1.1 'Cormorant Garamond',serif;margin:1.4em 0 .4em}
.prose img{border-radius:18px}
.posts{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:22px;margin-top:48px}
.post-card{display:flex;flex-direction:column;gap:12px;padding:0 0 24px;overflow:hidden;text-decoration:none;color:#4A3227;transition:transform .5s cubic-bezier(.34,1.7,.5,1)}
.post-card:hover{transform:translateY(-6px)}
.post-card .cover{aspect-ratio:16/10;background:#F2D6D6;display:flex;align-items:center;justify-content:center}
.post-card .cover img{width:100%;height:100%;object-fit:cover}
.post-card > *:not(.cover){padding:0 24px}

/* keyframes */
@keyframes letter{from{opacity:0;transform:translateY(.45em) rotate(6deg)}to{opacity:1;transform:none}}
@keyframes fadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes fall{from{transform:translateY(0) rotate(0deg)}to{transform:translateY(680px) rotate(620deg)}}
@keyframes spin{to{transform:translateX(-50%)}}
@keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.5}}
@keyframes marquee{to{transform:translateX(-50%)}}
@keyframes steam{0%{opacity:0;transform:translateY(14px) scaleX(.9)}35%{opacity:.75}100%{opacity:0;transform:translateY(-60px) scaleX(1.35)}}
@keyframes flicker{from{transform:scale(1,1) rotate(-3deg)}to{transform:scale(.9,1.08) rotate(3deg)}}
@keyframes smoke{from{opacity:.8;transform:translateY(0)}to{opacity:0;transform:translateY(-46px) scale(1.8)}}
@keyframes confetti{from{opacity:1;transform:translate(0,0) rotate(0)}to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--r))}}
@keyframes popA{from{opacity:0;transform:translateY(22px) scale(.94)}to{opacity:1;transform:none}}
@keyframes loaderOut{to{opacity:0;visibility:hidden}}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes beat{0%{transform:scale(1)}40%{transform:scale(1.28)}70%{transform:scale(.94)}100%{transform:scale(1)}}
@keyframes prog{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes floaty{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-12px) rotate(-.6deg)}}
@keyframes sweep{0%{transform:translateX(-120%)}55%,100%{transform:translateX(120%)}}
@keyframes ring{to{transform:rotate(360deg)}}
@keyframes bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-10px) rotate(-1.5deg)}}
@keyframes beatLoop{0%,70%,100%{transform:scale(1)}78%{transform:scale(1.22)}86%{transform:scale(.95)}92%{transform:scale(1.08)}}
@keyframes dash{to{stroke-dashoffset:-40}}
@keyframes pin{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes waIn{from{opacity:0;transform:translateY(40px) scale(.6)}to{opacity:1;transform:none}}
@keyframes bump{0%{transform:scale(1)}40%{transform:scale(1.04) translateY(-6px)}100%{transform:scale(1)}}
@keyframes tierIn{from{opacity:0;transform:translateY(-70px) scaleY(.92)}55%{opacity:1}}
@keyframes dzIn{from{opacity:0;transform:scale(0)}}
@keyframes chipPop{0%{transform:scale(1)}35%{transform:scale(1.12)}65%{transform:scale(.95)}100%{transform:scale(1)}}
@keyframes flameOut{0%{transform:scale(1)}35%{transform:scale(1.18,.78) rotate(-10deg)}100%{transform:scale(0,.2) translateY(6px);opacity:0}}
@keyframes ignite{from{transform:scale(0);opacity:0}}
@keyframes errIn{from{opacity:0;transform:translateY(-4px)}}
@keyframes lbOut{to{opacity:0}}
@keyframes lbBoxOut{to{opacity:0;transform:translateY(16px) scale(.96)}}
@keyframes lbSwap{from{opacity:0;transform:translateX(var(--lbdx,48px)) scale(.97)}}
@keyframes tick{0%{transform:translateY(0)}40%{transform:translateY(-8px) scale(1.06)}100%{transform:none}}

@supports (animation-timeline: view()) {
  .sd{animation:sdIn linear both;animation-timeline:view();animation-range:entry 0% cover 28%}
  .tilt{animation:tiltIn linear both;animation-timeline:view();animation-range:entry 0% cover 35%}
  .layer{animation:drop linear both;animation-timeline:--stack}
  .val{animation:vt linear both;animation-timeline:--stack}
  .k1{animation-range:contain 2% contain 16%}.k2{animation-range:contain 18% contain 32%}.k3{animation-range:contain 34% contain 48%}.k4{animation-range:contain 50% contain 64%}.k5{animation-range:contain 66% contain 80%}
  .loaf{animation:riseLoaf linear both;animation-timeline:view();animation-range:entry 20% cover 50%}
  .drip{animation:dripDown linear both;animation-timeline:view();animation-range:entry 0% cover 30%}
  .route{animation:routeDraw linear both;animation-timeline:--map;animation-range:entry 30% cover 55%}
  .pol,.video{animation:place linear both;animation-timeline:--table}
  @keyframes sdIn{from{opacity:0;transform:translateY(70px)}}
  @keyframes tiltIn{from{opacity:0;transform:perspective(900px) rotateX(24deg) translateY(80px) scale(.92)}}
  @keyframes drop{0%{transform:translateY(-560px);opacity:0}10%{opacity:1}72%{transform:translateY(12px)}86%{transform:translateY(-6px)}100%{transform:none}}
  @keyframes vt{from{opacity:.22;transform:translateX(-14px)}}
  @keyframes riseLoaf{from{transform:scale(.7,.42)}}
  @keyframes dripDown{from{transform:scaleY(.04)}}
  @keyframes routeDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
  @keyframes place{from{opacity:0;transform:translate(var(--fx),var(--fy)) rotate(var(--fr))}}
}
/* Sin scroll-driven animations: js/scroll-fallback.js recrea lo anterior con GSAP; si GSAP no carga, añade .io y .vis */
.io .sd:not(.vis),.io .tilt:not(.vis){opacity:0;transform:translateY(60px)}
.io .sd,.io .tilt{transition:opacity .8s cubic-bezier(.2,.8,.2,1),transform .8s cubic-bezier(.2,.8,.2,1)}

@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation:none!important;transition:none!important}.loader,.fx,.spr,.cf-prog,.candle.out .smoke{display:none}.candle.out .flame{visibility:hidden}html{scroll-behavior:auto}}
@media (max-width:640px){.wa span{display:none}.wa{padding:0;width:62px;justify-content:center}}
@container page (max-width:900px){
  .nav{display:none}.menu-btn{display:inline-flex}.hdr-cta .btn{display:none}
  .hdr-in{height:66px}
  .in{padding:0 20px}
  .sec{padding:88px 0}
  .hero{padding:28px 0 80px}
  .hero-grid,.stack-grid,.cfg-grid,.bread-grid,.zones-grid,.flav,.deliv{grid-template-columns:minmax(0,1fr)}
  .hero-art{height:400px;order:-1}
  .art{order:-1;max-width:300px;margin:0 auto;width:100%}
  .modes{grid-template-columns:minmax(0,1fr)}
  .stack{height:2200px}
  .stack-sticky{top:66px;height:auto;min-height:640px;align-items:flex-start;padding-top:12px}
  .stack-grid{gap:4px}
  .stack-art{order:-1;height:300px}
  .vals{margin-top:16px;gap:8px}
  .val{grid-template-columns:40px minmax(0,1fr);gap:8px}
  .val .n{font-size:34px}
  .val h3{font-size:22px}
  .val p{display:none}
  .stack .lead,.stack .h2,.stack .eyebrow{display:none}
  .cfg{padding:88px 0 110px}
  .cfg-prev{position:static}
  .cfg-ctl{padding:24px}
  .cf-stage{height:420px;--sp:118px;perspective:1000px}
  .cf-item{width:224px;height:320px}
  .cf-t{font-size:20px}
  .cf-bar{gap:14px}
  .cf-prog{width:120px}
  .cf{margin:0 -20px;overflow-x:clip}
  .grid-fotos{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:28px}
  .gf{padding:10px;border-radius:18px}
  .gf .cf-t{font-size:17px}
  .gf .ph{font-size:9.5px;letter-spacing:.12em}
  .mq-item{font-size:32px}
  .table{height:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .pol{position:relative;left:auto!important;top:auto!important;width:auto;padding:8px 8px 36px}
  .pol .img{height:130px}
  .pol .cap2{font-size:22px}
  .video{position:relative;right:auto;top:auto;width:auto;height:260px;grid-column:1 / -1;transform:none}
  .stats{grid-template-columns:minmax(0,1fr)}
  .stat b{font-size:52px}
  .form-card{grid-template-columns:minmax(0,1fr);padding:24px}
  .ftr-grid{grid-template-columns:minmax(0,1fr)}
  .candles{gap:18px}
  .sc{width:200px;height:260px}
}
