/* Surface layers preserve the opaque scan. Only the reflections move. */
.card-finish{--shine-x:50%;--shine-y:45%;--shine-angle:115deg;--foil-strength:.55;--foil-x:0px;--foil-y:0px;position:absolute;inset:0;pointer-events:none;display:block;border-radius:inherit;overflow:hidden;isolation:isolate}
.card-finish.reveal-foil[data-mask]{background:none;mix-blend-mode:normal;opacity:1;animation:none;clip-path:none;background-size:auto}
.card-finish>span{position:absolute;inset:0;pointer-events:none;border-radius:inherit;background-repeat:no-repeat;transition:background-position .08s linear}
.card-finish[data-mask="none"],.card-finish[data-material="matte"]{display:none}
.card-finish[data-mask="art"] :is(.foil-diffraction,.foil-texture){clip-path:inset(var(--art-top) var(--art-right) var(--art-bottom) var(--art-left))}
.card-finish[data-mask="reverse"] :is(.foil-diffraction,.foil-texture){clip-path:polygon(evenodd,0 0,100% 0,100% 100%,0 100%,0 0,var(--art-left) var(--art-top),var(--art-left) calc(100% - var(--art-bottom)),calc(100% - var(--art-right)) calc(100% - var(--art-bottom)),calc(100% - var(--art-right)) var(--art-top),var(--art-left) var(--art-top))}
.card-finish .foil-diffraction{background-image:repeating-linear-gradient(var(--shine-angle),#f0c65b 0%,#9ee2b5 11%,#70b9f0 22%,#b5a0e3 33%,#eba7c9 44%,#f0c65b 55%);background-size:250% 250%;background-position:var(--shine-x) var(--shine-y);mix-blend-mode:color;opacity:calc(var(--foil-strength)*.52);mask-image:linear-gradient(115deg,transparent 10%,#0003 27%,#000 43%,#0006 55%,transparent 75%);mask-size:220% 150%;mask-position:var(--shine-x) var(--shine-y)}
.card-finish .foil-texture{background-image:url('/assets/materials/grain.svg');background-size:100% 100%;background-position:var(--foil-x) var(--foil-y);mix-blend-mode:screen;opacity:calc(var(--foil-strength)*.65);mask-image:radial-gradient(ellipse at var(--shine-x) var(--shine-y),#000 0%,#0006 28%,transparent 68%)}
.card-finish .foil-gloss{background-image:linear-gradient(var(--shine-angle),transparent 30%,#ffffff08 39%,#ffffff7a 45%,#ffffff16 49%,transparent 56%),radial-gradient(ellipse at var(--shine-x) var(--shine-y),#ffffff24,transparent 58%);background-size:270% 180%,100% 100%;background-position:var(--shine-x) var(--shine-y),center;mix-blend-mode:screen;opacity:calc(var(--foil-strength)*.35)}
.card-finish .foil-edge{box-shadow:inset 0 0 0 1px #ffffff28,inset 1px 1px 2px #ffffff24,inset -1px -1px 2px #08142a30;opacity:calc(var(--foil-strength)*.6)}
.card-finish[data-material="cosmos"] .foil-texture{background-image:url('/assets/materials/cosmos.svg');background-size:100% 100%;opacity:calc(var(--foil-strength)*1.1);mask-image:radial-gradient(ellipse at var(--shine-x) var(--shine-y),black 0%,#0008 30%,transparent 78%)}
.card-finish[data-material="cosmos"] .foil-diffraction{mix-blend-mode:soft-light;opacity:calc(var(--foil-strength)*.65)}
.card-finish[data-material="etched"] .foil-texture{background-image:url('/assets/materials/etched.svg'),url('/assets/materials/grain.svg');background-size:105% 105%,100% 100%;background-position:var(--foil-x) var(--foil-y),0 0;mix-blend-mode:screen;opacity:calc(var(--foil-strength)*.6)}
.card-finish[data-material="prismatic"] .foil-texture{background-image:repeating-linear-gradient(128deg,#fff0 0 17px,#ffffff6b 17.3px,#fff0 18px 35px),repeating-linear-gradient(52deg,#fff0 0 17px,#ffffff47 17.3px,#fff0 18px 35px),url('/assets/materials/grain.svg');background-size:150% 150%,150% 150%,100% 100%;background-position:var(--foil-x) var(--foil-y);opacity:calc(var(--foil-strength)*.48)}
.card-finish[data-material="gold"] .foil-diffraction{background-image:repeating-linear-gradient(var(--shine-angle),#714010 0%,#e5b946 20%,#fff1b8 32%,#c88b21 42%,#f4d26e 55%);mix-blend-mode:soft-light;opacity:calc(var(--foil-strength)*.8)}
.card-finish[data-material="gold"] .foil-texture{background-image:url('/assets/materials/etched.svg'),url('/assets/materials/grain.svg');background-size:110% 110%,100% 100%;opacity:calc(var(--foil-strength)*.8)}
.card-finish[data-material="reverse"] .foil-diffraction{opacity:calc(var(--foil-strength)*.3)}
.inspection-card>.card-finish{--shine-x:inherit;--shine-y:inherit;--shine-angle:inherit;--foil-strength:inherit;--foil-x:inherit;--foil-y:inherit}
.cinematic-opening .card-tilt>.card-finish{--shine-x:inherit;--shine-y:inherit;--shine-angle:inherit;--foil-x:inherit;--foil-y:inherit;--foil-strength:.52}
.cinematic-opening .card-tilt{--shine-x:50%;--shine-y:45%;--shine-angle:115deg;--foil-x:0px;--foil-y:0px;transform:perspective(1200px) rotateX(var(--surface-pitch,0deg)) rotateY(var(--surface-yaw,0deg));transition:transform .16s ease-out;transform-origin:center;backface-visibility:hidden}
.cinematic-opening .reveal-card.dragging .card-tilt{transform:none}.reveal-foil .foil-gloss{animation:surface-arrival 1.7s ease-out 1}.card-tilt[data-lit="true"] .foil-gloss{animation:none}
@keyframes surface-arrival{0%{background-position:90% 70%,center}100%{background-position:var(--shine-x) var(--shine-y),center}}
.inspection-stage{background:radial-gradient(ellipse at 40% 25%,#38414f 0%,#17212e 50%,#0c141e 100%);border-color:#263847}.inspection-card{box-shadow:0 24px 45px #0007,0 0 0 1px #ffffff28}.inspection-card img,.card-tilt img{image-rendering:auto;max-width:none}
@media(prefers-reduced-motion:reduce){.cinematic-opening .card-tilt{transform:none;transition:none}.card-finish>span{transition:none;animation:none!important}}
/* Packaging uses native artwork proportions and a separate laminate response. */
.card-finish[data-material="holo"] .foil-texture{background-image:repeating-linear-gradient(0deg,transparent 0 2px,#fff5 2.5px,transparent 3px 5px);background-size:100% 160%;opacity:calc(var(--foil-strength)*.45)}
.card-finish[data-material="rainbow"] .foil-diffraction{opacity:calc(var(--foil-strength)*.85);mask-image:linear-gradient(115deg,#0007,#000,#0007)}
.card-finish[data-material="rainbow"] .foil-texture{background-image:url('/assets/materials/etched.svg');opacity:calc(var(--foil-strength)*.65)}
.card-finish[data-material="shiny"] .foil-texture{background-image:url('/assets/materials/cosmos.svg'),url('/assets/materials/etched.svg');opacity:calc(var(--foil-strength)*.95)}
.card-finish[data-material="shiny"] .foil-diffraction{opacity:calc(var(--foil-strength)*.3)}
.card-finish[data-material="prism"] .foil-texture{background-image:repeating-conic-gradient(from 45deg,#fff4 0deg 90deg,transparent 90deg 180deg);background-size:28px 38px;opacity:calc(var(--foil-strength)*.5)}
.card-finish .foil-border{display:none}
.card-finish[data-border="true"] .foil-border{display:block;padding:3.5%;background-image:linear-gradient(var(--shine-angle),#a7d4ed,#e9bcf9 16%,#fff8de 27%,#94e8e4 40%,#e3c4ff 55%,#fff 66%,#83d6eb 78%,#e7acda),url('/assets/materials/grain.svg');background-size:230% 230%,100% 100%;background-position:var(--shine-x) var(--shine-y),center;mix-blend-mode:screen;opacity:calc(var(--foil-strength)*.9);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude}
.card-finish[data-material="gold"] .foil-border{background-image:linear-gradient(var(--shine-angle),#865017,#e9bc53 22%,#fff2be 32%,#be8724 45%,#ffefae 62%,#bf8d3c 80%,#ffdf7d)}
.card-finish[data-material="reverse"] .foil-border{padding:2.6%;opacity:calc(var(--foil-strength)*.4)}
.pack-product{--shelf-pack-height:250px;position:relative;display:block;width:calc(var(--shelf-pack-height)/var(--pack-ratio,1.75));height:var(--shelf-pack-height);max-width:100%;margin:auto;isolation:isolate;transform:rotate(var(--lean,0deg));filter:drop-shadow(0 14px 13px #1c343830);transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.pack-stage .pack-choice .pack-product>img{display:block;width:100%;height:100%;object-fit:fill;mix-blend-mode:normal;transform:none;filter:none;margin:0;user-select:none;-webkit-user-drag:none}
.pack-choice:hover .pack-product{transform:translateY(-7px) rotate(var(--lean,0deg)) rotateY(-6deg)}.pack-choice.selected .pack-product{filter:drop-shadow(0 15px 15px #264f3e42)}
.pack-laminate{position:absolute;inset:0;pointer-events:none;z-index:3;background:linear-gradient(90deg,#06132535 0%,transparent 4%,#ffffff25 6%,transparent 10%,transparent 82%,#ffffff38 94%,#10243b60 100%),linear-gradient(112deg,transparent 28%,#ffffff04 37%,#ffffff65 45%,transparent 54%);background-size:100% 100%,250% 130%;background-position:center,var(--pack-light,70%) 50%;mix-blend-mode:soft-light;clip-path:inset(1% 1% 1% 1%);transition:background-position .18s ease-out}
.pack-crimp{position:absolute;left:1%;right:1%;height:5%;z-index:4;pointer-events:none;background:repeating-linear-gradient(90deg,#0004 0 .6px,#fff8 1px 1.5px,transparent 2px 3px),linear-gradient(#fff2,transparent,#0003);mix-blend-mode:soft-light;opacity:.45}.crimp-top{top:1%}.crimp-bottom{bottom:1%;transform:rotate(180deg)}
.pack-choice:hover .pack-laminate{--pack-light:25%}.carousel-pack .pack-laminate{--pack-light:calc(15% + var(--depth,1)*60%)}
.cinematic-opening{--pack-size:min(27dvh,250px,52vw)}.cinematic-opening .sealed-scene,.cinematic-opening .carousel-pack{height:calc(var(--pack-size)*var(--pack-ratio,1.65))}
.cinematic-opening .card-stack{aspect-ratio:var(--card-ratio,367/512)}.cinematic-opening .extracted-card{height:auto;aspect-ratio:var(--card-ratio,367/512)}
.wrapper .pack-laminate{animation:laminate-breathe 6s ease-in-out infinite}.is-torn .pack-laminate{animation:none}
@keyframes laminate-breathe{0%,100%{background-position:center,70% 50%}50%{background-position:center,40% 50%}}
@media(max-width:800px){.pack-product{--shelf-pack-height:225px}}
@media(max-width:550px){dialog.cinematic-opening{--pack-size:min(27dvh,52vw)}.pack-product{--shelf-pack-height:180px}.pack-stage:has(.pack-choice:only-child) .pack-product{--shelf-pack-height:250px}}
@media(max-height:500px) and (min-width:600px){dialog.cinematic-opening:not(.ritual-summary):not(.batch-unsealing){--pack-size:min(39dvh,29vw)}}
@media(prefers-reduced-motion:reduce){.pack-product,.pack-laminate{animation:none!important;transition:none}.pack-choice:hover .pack-product{transform:none}}
