/* ============ RESEÑAS ============ */
.rv{position:relative;overflow:hidden;isolation:isolate;padding:clamp(4.5rem,8vw,7.5rem) 0 clamp(4rem,7vw,6.5rem);background:radial-gradient(55% 45% at 86% 10%,rgba(139,61,219,.32),transparent 70%),radial-gradient(45% 40% at 6% 92%,rgba(217,164,92,.09),transparent 70%),var(--ink)}
.rv__st{position:absolute;color:var(--amber);pointer-events:none;z-index:-1;opacity:.85}
.rv__st--a{left:6%;top:7%;width:22px;height:22px}.rv__st--b{right:12%;top:30%;width:15px;height:15px;color:var(--lav)}.rv__st--c{left:52%;top:5%;width:12px;height:12px;color:#fff}
.rv__in{max-width:1240px;margin:0 auto;padding:0 var(--pad)}
.rv__top{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(1.6rem,4vw,4rem);align-items:end}
.rv__head{display:grid;gap:.9rem;justify-items:start}
.rv__head h2{--fs:clamp(3.2rem,8.6vw,8.6rem);line-height:.84;text-transform:uppercase;color:var(--silver)}
.rv__head .lede{max-width:30rem;color:var(--lav)}
.rv__sum{display:grid;grid-template-columns:auto 1fr;gap:1.2rem 1.8rem;align-items:center;background:var(--silver);color:var(--ink);border-radius:30px;padding:1.5rem 1.7rem;box-shadow:0 40px 80px -40px rgba(0,0,0,.8)}
.rv__avg{font:700 clamp(4.4rem,7.5vw,6.6rem)/.82 var(--disp);color:var(--violet-d);font-variant-numeric:tabular-nums}
.rv__ss,.rv__cs{display:flex;gap:2px}
.rv__ss svg,.rv__cs svg{width:1.25rem;height:1.25rem;fill:none;stroke:var(--amber);stroke-width:1.6;stroke-linejoin:round}
.rv__ss svg.on,.rv__cs svg.on{fill:var(--amber)}
.rv__n{margin:.5rem 0 0;font:500 .86rem var(--sans);color:#4a3a5a}
.rv__bars{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
.rv__bars li{display:grid;grid-template-columns:2rem 1fr 1.6rem;gap:.6rem;align-items:center;font:600 .82rem var(--sans)}
.rv__bt{display:block;height:8px;border-radius:9px;background:#cdbfe0;overflow:hidden}
.rv__bt i{display:block;height:100%;width:var(--w);border-radius:9px;background:linear-gradient(90deg,var(--violet),var(--amber));transform:scaleX(0);transform-origin:0 50%;transition:transform 1.1s var(--ease)}
.rv__sum.is-in .rv__bt i{transform:scaleX(1)}
.rv__bc{text-align:right;color:#4a3a5a;font-variant-numeric:tabular-nums}
.rv__rails{margin-top:clamp(2.2rem,4.5vw,4rem);display:grid;gap:1.1rem}
.rv__rail{position:relative;overflow:hidden;padding:.9rem 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.rv__rail:focus-visible{outline:2px solid var(--lav);outline-offset:-2px}
.rv__track{display:flex;width:max-content}
.rv__half{display:flex}
.rv__c{position:relative;flex:none;width:clamp(16.5rem,25vw,22rem);margin-right:1.15rem;display:grid;gap:.75rem;align-content:start;background:var(--silver);color:var(--ink);border-radius:28px;padding:1.3rem 1.4rem 1.15rem;transform:rotate(var(--r,0deg));transition:transform .5s var(--ease),box-shadow .4s;box-shadow:0 26px 50px -30px rgba(0,0,0,.85)}
.rv__c:hover{transform:rotate(0) translateY(-8px) scale(1.025);box-shadow:0 40px 60px -28px rgba(139,61,219,.7)}
.rv__qm{position:absolute;right:1.1rem;top:.2rem;font:italic 400 5.6rem/1 var(--serif);color:var(--lav);opacity:.7;pointer-events:none}
.rv__q{margin:0;font:italic 400 1.28rem/1.3 var(--serif)}
.rv__cf{display:flex;align-items:center;gap:.7rem;margin-top:.2rem;padding-top:.8rem;border-top:1px solid #cdbfe0;flex-wrap:wrap}
.rv__av{flex:none;display:grid;place-items:center;width:2.6rem;height:2.6rem;border-radius:50%;background:hsl(var(--h) 55% 38%);color:#fff;font:700 1.1rem var(--disp)}
.rv__who{display:grid;min-width:0;flex:1}.rv__who strong{font:700 .98rem var(--sans)}.rv__who small{font:400 .78rem/1.3 var(--sans);color:#5a4a6a}
.rv__bd{flex:none;padding:.2rem .6rem;border-radius:99px;background:#d6f0e0;color:#14532d;font:700 .68rem var(--sans);letter-spacing:.04em;white-space:nowrap}
.rv__bd--own{background:var(--amber);color:var(--ink)}
.rv__c.is-own{outline:2px solid var(--amber);outline-offset:-2px}
.rv__del{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--ink);color:var(--silver);transition:transform .3s var(--ease),background .25s}
.rv__del:hover,.rv__del:focus-visible{background:#a2263a;transform:rotate(90deg)}
.rv__ctl{display:flex;justify-content:flex-end;margin-top:.4rem}
.rv__pause{color:var(--lav);min-height:44px;font:600 .88rem var(--sans)}
.rv__write{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:clamp(1.4rem,4vw,3.5rem);align-items:start;margin-top:clamp(1.6rem,3.5vw,3rem)}
.rv__stage{position:relative;display:grid;justify-items:center;position:sticky;top:6.5rem}
.rv__glow{position:absolute;left:8%;right:8%;bottom:0;height:60%;border-radius:50%;background:radial-gradient(closest-side,rgba(139,61,219,.55),transparent 72%)}
.rv__bubble{position:relative;z-index:2;width:100%;max-width:24rem;min-height:5.8rem;margin-bottom:1.1rem;padding:1.1rem 1.4rem 1.2rem;border-radius:30px 30px 30px 8px;background:var(--silver);color:var(--ink);font:italic 400 clamp(1.35rem,2.1vw,1.8rem)/1.15 var(--serif);box-shadow:0 26px 50px -22px rgba(0,0,0,.7)}
.rv__bubble::after{content:"";position:absolute;right:3.2rem;bottom:-15px;border-left:11px solid transparent;border-right:11px solid transparent;border-top:17px solid var(--silver)}
.rv__cat{position:relative;z-index:1;width:min(76%,18rem)}
.rv__cat .gato{display:block;width:100%;height:auto;filter:drop-shadow(0 16px 18px rgba(0,0,0,.55))}
.rv__card{background:var(--silver);color:var(--ink);border-radius:34px;padding:clamp(1.4rem,3vw,2.4rem);box-shadow:0 44px 90px -40px rgba(0,0,0,.85);display:grid;gap:1.05rem}
.rv__ft{font:700 clamp(1.9rem,3.4vw,3rem)/.95 var(--disp);text-transform:uppercase;margin:0}
.rv__fld{display:grid;gap:.4rem;position:relative}
.rv__fld label,.rv__lab{font:700 .78rem var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--violet-d)}
.rv__fld input[type=text],.rv__fld select,.rv__fld textarea{width:100%;padding:.85rem 1rem;border-radius:16px;border:1.5px solid var(--ink);background:#fff;color:var(--ink);font:400 1rem/1.4 var(--sans);transition:box-shadow .25s,border-color .25s}
.rv__fld textarea{resize:vertical;min-height:7rem}
.rv__fld input:focus-visible,.rv__fld select:focus-visible,.rv__fld textarea:focus-visible{outline:none;border-color:var(--violet);box-shadow:0 0 0 3px rgba(139,61,219,.35)}
.rv__fld [aria-invalid=true]{border-color:#a2263a}
.rv__err{margin:0;min-height:0;font:600 .84rem/1.3 var(--sans);color:#a2263a}
.rv__err:empty{display:none}
.rv__row2{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.rv__cnt{margin-left:auto;font:500 .8rem var(--sans);color:#5a4a6a;font-variant-numeric:tabular-nums}
.rv__stars{display:flex;gap:.25rem}
.rv__sb{position:relative;display:grid;place-items:center;width:3rem;height:3rem;border-radius:50%;color:var(--amber);transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.rv__sb svg{width:2.1rem;height:2.1rem;fill:transparent;stroke:#9a7a3c;stroke-width:1.5;stroke-linejoin:round;transition:fill .25s,stroke .25s,transform .4s cubic-bezier(.34,1.56,.64,1)}
.rv__sb.is-on svg{fill:var(--amber);stroke:#a87a2d}.rv__sb.is-pre svg{transform:scale(1.12)}
.rv__sb:hover{transform:translateY(-3px)}.rv__sb:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
.rv__stars[aria-invalid=true]{outline:2px solid #a2263a;outline-offset:4px;border-radius:14px}
.rv__rl{margin:0;font:italic 400 1.2rem var(--serif);color:var(--violet-d);min-height:1.5rem}
.rv__bs{position:absolute;left:50%;top:50%;width:7px;height:7px;margin:-3.5px;border-radius:50%;background:var(--amber);pointer-events:none}
.rv__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.rv__chk{display:grid;grid-template-columns:auto 1fr;gap:.7rem;align-items:start;font:400 .9rem/1.45 var(--sans);cursor:pointer}
.rv__chk input{width:1.25rem;height:1.25rem;margin-top:.15rem;accent-color:var(--violet-d)}
.rv__go{justify-self:start}.rv__go.is-busy{opacity:.75;pointer-events:none}
.rv__ok{margin:0;min-height:1.3rem;font:700 1rem var(--sans);color:#1c6b3a}
.rv__fine{margin:2rem 0 0;font:400 .85rem/1.5 var(--sans);color:var(--lav);opacity:.8;max-width:42rem}
@media (prefers-reduced-motion:no-preference){
.rv__track{--off:12vw;animation:rvL var(--dur,60s) linear infinite}
.rv__rail--b .rv__track{animation-direction:reverse;animation-duration:calc(var(--dur,60s)*1.15)}
@keyframes rvL{from{transform:translateX(calc(-33.3333% + var(--off)))}to{transform:translateX(calc(-66.6667% + var(--off)))}}
.rv.is-paused .rv__track,.rv__rail:hover .rv__track,.rv__rail:focus-within .rv__track{animation-play-state:paused}
.rv__head>*,.rv__sum{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.rv.is-in .rv__head>*,.rv.is-in .rv__sum{opacity:1;transform:none}
.rv.is-in .rv__head>:nth-child(2){transition-delay:.1s}.rv.is-in .rv__head>:nth-child(3){transition-delay:.2s}.rv.is-in .rv__sum{transition-delay:.25s}
.rv__rails{opacity:0;transform:translateY(30px);transition:opacity 1s var(--ease) .3s,transform 1s var(--ease) .3s}
.rv.is-in .rv__rails{opacity:1;transform:none}
.rv.is-rebuilt .rv__rails{transition:opacity .3s ease}
.rv.is-in .rv__rails.is-swap{opacity:0}
.rv.is-in:not(.is-rebuilt) .rv__cs svg,.rv.is-in:not(.is-rebuilt) .rv__ss svg{animation:rvStar .55s cubic-bezier(.34,1.56,.64,1) both;animation-delay:calc(var(--k)*.09s + .5s)}
@keyframes rvStar{from{opacity:0;transform:scale(0) rotate(-40deg)}to{opacity:1;transform:none}}
.rv__c.is-new{animation:rvNew 1.1s cubic-bezier(.34,1.56,.64,1) both}
@keyframes rvNew{0%{opacity:0;transform:translateY(-40px) scale(.7) rotate(-8deg);box-shadow:0 0 0 0 rgba(217,164,92,.9)}55%{opacity:1;box-shadow:0 0 0 18px rgba(217,164,92,0)}100%{transform:rotate(var(--r,0deg))}}
.rv .gato{animation:gtPop 1s cubic-bezier(.34,1.56,.64,1) .2s both;transform-origin:50% 100%}
.rv .g-pupil--t{animation:none!important;transition:transform .18s ease-out}
.rv__st{animation:gtTw 3s ease-in-out infinite}.rv__st--b{animation-delay:.8s}.rv__st--c{animation-delay:1.5s}
.rv__bs{animation:rvBs .65s ease-out forwards}
@keyframes rvBs{from{transform:translate(0,0) scale(1);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(0);opacity:0}}
.rv__go.is-busy span:first-child::after{content:"…";animation:gtTw 1s infinite}
.rv.is-happy .gato{animation:gtJump .62s ease-in-out 5}
.rv.is-happy .g-eyei{animation:gtHappy .35s ease-out forwards}
.rv.is-happy .g-arm{animation:gtWaveFast .36s ease-in-out infinite}
}
@media (prefers-reduced-motion:reduce){
.rv__rail{overflow-x:auto;scroll-snap-type:x proximity}.rv__c{scroll-snap-align:start}.rv__half[aria-hidden=true],.rv__rail--b,.rv__pause{display:none}
.rv__bt i{transform:scaleX(1);transition:none}
}
@media (max-width:900px){
.rv__top{grid-template-columns:1fr}
.rv__write{grid-template-columns:1fr}
.rv__stage{position:relative;top:auto;grid-template-columns:auto 1fr;justify-items:stretch;align-items:end;gap:.2rem 1rem}
.rv__cat{grid-column:1;grid-row:1;width:7.2rem}
.rv__bubble{grid-column:2;grid-row:1;margin:0 0 .8rem;max-width:none;font-size:1.3rem;min-height:4.6rem;border-radius:26px 26px 26px 8px}
.rv__bubble::after{right:auto;left:-13px;bottom:1rem;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:15px solid var(--silver)}
.rv__glow{display:none}
.rv__sum{grid-template-columns:1fr;padding:1.3rem}
.rv__c{width:16.5rem}
}

/* Sin reseñas todavía: solo se muestran el resumen vacío y el formulario. */
.rv.is-empty .rv__rails,.rv.is-empty .rv__ctl{display:none}
.rv__sum.is-none{grid-template-columns:1fr}
.rv__none{margin:0;font:italic 400 1.5rem/1.3 var(--serif);color:var(--violet-d)}
.rv__bd--pend{background:#e8dcf9;color:var(--violet-d)}
.rv__sum.is-none .rv__n{margin-top:.8rem}
