/* v101: „Cutie cu panglică”. --ex-wash = cutia, --ex-accent = panglica de satin, --ex-paper = cartonașul. */
.ex-cutie{--gf-box:var(--ex-wash);--gf-ribbon:var(--ex-accent);--gf-tissue:color-mix(in srgb,var(--ex-paper) 70%,var(--ex-accent));--gf-gold:color-mix(in srgb,var(--ex-accent) 45%,var(--ex-ink));--gf-script:'Great Vibes',Georgia,cursive;--gf-satin:linear-gradient(90deg,color-mix(in srgb,var(--gf-ribbon) 78%,#000) 0,var(--gf-ribbon) 30%,color-mix(in srgb,var(--gf-ribbon) 60%,#fff) 50%,var(--gf-ribbon) 70%,color-mix(in srgb,var(--gf-ribbon) 78%,#000) 100%)}

/* ---------- Cutia închisă ---------- */
.gf-opening{background:radial-gradient(120% 90% at 50% 30%,var(--ex-paper),color-mix(in srgb,var(--ex-paper) 82%,var(--gf-box)))}
.gf-closed{min-height:560px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:40px 20px 32px;text-align:center}
.gf-scene{width:min(80%,330px)}
.gf-box{position:relative;width:100%;aspect-ratio:1/1.02;container-type:inline-size;animation:gf-breathe 5s ease-in-out infinite}
.gf-base{position:absolute;left:5%;right:5%;top:33%;bottom:0}
.gf-front{position:absolute;inset:0;z-index:3;border-radius:3px 3px 6px 6px;background:linear-gradient(180deg,color-mix(in srgb,var(--gf-box) 92%,#000) 0,var(--gf-box) 9%,color-mix(in srgb,var(--gf-box) 88%,#fff) 55%,color-mix(in srgb,var(--gf-box) 90%,#000) 100%);box-shadow:inset 0 0 0 1px #ffffff26,0 22px 40px #2a1d1233}
.gf-base>.gf-band-v{position:absolute;top:0;bottom:0;left:50%;width:12%;transform:translateX(-50%);z-index:4;background:var(--gf-satin);transform-origin:top center}
.gf-base:after{content:'';position:absolute;left:0;right:0;top:46%;height:11%;z-index:4;background:linear-gradient(180deg,color-mix(in srgb,var(--gf-ribbon) 78%,#000),var(--gf-ribbon) 30%,color-mix(in srgb,var(--gf-ribbon) 60%,#fff) 50%,var(--gf-ribbon) 70%,color-mix(in srgb,var(--gf-ribbon) 78%,#000));transform-origin:center;transition:transform .5s .45s ease}
.gf-lid{position:absolute;left:1%;right:1%;top:21%;height:15%;z-index:5;border-radius:4px;background:linear-gradient(180deg,color-mix(in srgb,var(--gf-box) 80%,#fff) 0,var(--gf-box) 40%,color-mix(in srgb,var(--gf-box) 85%,#000) 100%);box-shadow:0 6px 10px #2a1d1229,inset 0 0 0 1px #ffffff2e;transform-origin:20% 100%}
.gf-lid>.gf-band-v{position:absolute;top:0;bottom:0;left:50%;width:12.5%;transform:translateX(-50%);background:var(--gf-satin);transform-origin:top center}
.gf-lid>.gf-band-h{display:none}
.gf-bow{position:absolute;left:50%;top:3%;width:46%;height:22%;transform:translateX(-50%);z-index:6}
.gf-loop{position:absolute;top:8%;width:46%;height:72%;border-radius:55% 55% 50% 50%/65% 65% 35% 35%;background:radial-gradient(70% 60% at 50% 40%,color-mix(in srgb,var(--gf-ribbon) 55%,#fff),var(--gf-ribbon) 55%,color-mix(in srgb,var(--gf-ribbon) 70%,#000));box-shadow:inset 0 -3px 6px #00000026}
.gf-loop-l{left:2%;transform:rotate(-24deg);transform-origin:100% 80%}
.gf-loop-r{right:2%;transform:rotate(24deg);transform-origin:0 80%}
.gf-knot{position:absolute;left:50%;top:38%;width:18%;height:44%;transform:translateX(-50%);border-radius:30%;background:var(--gf-satin);box-shadow:0 2px 4px #0003}
.gf-tail{position:absolute;top:58%;width:13%;height:95%;background:var(--gf-satin);clip-path:polygon(0 0,100% 0,100% 100%,50% 84%,0 100%);z-index:-1}
.gf-tail-l{left:34%;transform:rotate(18deg);transform-origin:top center}
.gf-tail-r{right:34%;transform:rotate(-18deg);transform-origin:top center}
.gf-tag{position:absolute;right:-3%;top:40%;z-index:7;width:34%;padding:7% 4% 6%;display:grid;gap:.25em;background:#fffdf7;border:1px solid color-mix(in srgb,var(--gf-ribbon) 60%,transparent);border-radius:4px 4px 4px 4px;clip-path:polygon(18% 0,82% 0,100% 12%,100% 100%,0 100%,0 12%);box-shadow:0 6px 12px #2a1d1222;transform:rotate(7deg);transform-origin:50% 0;color:var(--ex-ink);animation:gf-swing 4.5s ease-in-out infinite}
.gf-tag:before{content:'';position:absolute;left:50%;top:5%;width:6%;aspect-ratio:1;transform:translateX(-50%);border-radius:50%;background:color-mix(in srgb,var(--gf-box) 70%,#000);opacity:.5}
.gf-tag small{font:600 max(6px,2.3cqi)/1.3 Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--gf-gold)}
.gf-tag b{font:400 max(12px,5.4cqi)/1.05 var(--gf-script);color:var(--ex-ink);font-weight:400}
.gf-peek{position:absolute;left:13%;right:13%;top:8%;height:86%;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6%;padding:9% 6%;background:var(--ex-paper);border-radius:2px;box-shadow:0 0 0 1px color-mix(in srgb,var(--gf-ribbon) 45%,transparent),0 -6px 14px #2a1d1222;transition:transform 1s 1.15s cubic-bezier(.3,.7,.2,1)}
.gf-peek img{width:62%;aspect-ratio:3/4;height:auto;object-fit:cover;padding:3px;background:#fff;box-shadow:0 4px 10px #2a1d1222}
.gf-peek b{font:400 max(14px,7cqi)/1.05 var(--gf-script);color:var(--ex-ink);font-weight:400}
.gf-tissue{position:absolute;top:-9%;z-index:2;width:46%;height:24%;background:linear-gradient(160deg,#fff,var(--gf-tissue));clip-path:polygon(0 100%,8% 30%,30% 52%,48% 0,64% 40%,86% 10%,100% 100%);opacity:.95}
.gf-tissue-l{left:2%;transform:rotate(-6deg)}
.gf-tissue-r{right:2%;transform:rotate(7deg) scaleX(-1)}
.gf-closed .ex-open{margin-top:6px;border-color:color-mix(in srgb,var(--gf-box) 60%,var(--gf-ribbon));color:var(--ex-ink);background:#fffdf8}
.gf-closed .ex-note{margin:0;font:italic 15px/1.5 Georgia,serif;color:color-mix(in srgb,var(--ex-ink) 80%,transparent)}
/* Tranziții pentru deschidere (și pentru miniatura din catalog). */
.gf-loop,.gf-knot,.gf-tail,.gf-tag{transition:transform .55s ease,opacity .45s ease}
.gf-lid>.gf-band-v,.gf-base>.gf-band-v{transition:transform .5s .35s ease}
.gf-lid{transition:transform .8s .75s cubic-bezier(.5,0,.3,1),opacity .6s 1s ease}
.gf-opening.is-opening .gf-box,.gf-opening.is-opening .gf-tag{animation:none}
.gf-opening.is-opening .gf-loop-l{transform:rotate(-80deg) scale(.1);opacity:0}
.gf-opening.is-opening .gf-loop-r{transform:rotate(80deg) scale(.1);opacity:0}
.gf-opening.is-opening .gf-knot{transform:translateX(-50%) scale(0);opacity:0}
.gf-opening.is-opening .gf-tail{transform:translateY(40%) rotate(0);opacity:0}
.gf-opening.is-opening .gf-tag{transform:translateY(60%) rotate(30deg);opacity:0}
.gf-opening.is-opening .gf-band-v{transform:translateX(-50%) scaleY(0)}
.gf-opening.is-opening .gf-base:after{transform:scaleX(0)}
.gf-opening.is-opening .gf-lid{transform:translate(-14%,-150%) rotate(-14deg);opacity:0}
.gf-opening.is-opening .gf-peek{transform:translateY(-66%)}
.gf-opening.is-opening .ex-open,.gf-opening.is-opening .ex-note{opacity:0;transition:opacity .3s}
.gf-opening.is-opening{animation:gf-fade-out .35s 1.85s forwards}

/* ---------- Cartonașul invitației ---------- */
.gf-card{padding:28px 16px 24px;background:radial-gradient(120% 80% at 50% 0,var(--ex-paper),color-mix(in srgb,var(--ex-paper) 82%,var(--gf-box)));font:15px/1.7 Georgia,serif}
.gf-card.gf-revealed{animation:gf-rise .8s cubic-bezier(.2,.7,.2,1) both}
.gf-sheet{max-width:520px;margin:0 auto;padding:44px 30px 40px;text-align:center;color:var(--ex-ink);background:radial-gradient(140% 90% at 30% 0,#fffefb,var(--ex-paper) 70%);border-radius:4px;box-shadow:inset 0 0 0 10px var(--ex-paper),inset 0 0 0 11px color-mix(in srgb,var(--gf-ribbon) 55%,transparent),0 18px 40px #2a1d1229;display:flex;flex-direction:column;align-items:center;gap:6px}
.gf-card .gf-kicker{margin:0;font:600 10px/1.6 Arial,sans-serif;letter-spacing:.3em;text-transform:uppercase;color:var(--gf-gold)}
.gf-card .gf-name{font:400 clamp(44px,13cqi,68px)/1.1 var(--gf-script);letter-spacing:0;margin:.15em -.2em .05em;padding:.15em .2em 0;color:var(--ex-ink);outline:none}
.gf-card .gf-bow-mark{display:flex;align-items:center;gap:12px;color:var(--gf-ribbon);font-size:20px;margin:2px 0 8px}
.gf-card .gf-bow-mark span{width:54px;height:1px;background:currentColor;opacity:.6}
.gf-card .gf-invite{margin:0;font:17px/1.6 Georgia,serif}
.gf-card .gf-date{margin:8px 0 0;font:600 12px/1.6 Arial,sans-serif;letter-spacing:.28em;text-transform:uppercase;color:var(--gf-gold)}
.gf-card .gf-photo{width:min(64%,250px);aspect-ratio:3/4;margin:22px auto 8px;padding:7px;background:#fff;box-shadow:0 10px 24px #2a1d1226}
.gf-card .gf-photo img{width:100%;height:100%;object-fit:cover;display:block}
.gf-card .gf-message{font:italic 17px/1.85 Georgia,serif;margin:18px auto 6px;max-width:34ch;white-space:pre-line}
.gf-card .gf-people{display:grid;gap:12px;margin:16px 0 6px;width:100%}
.gf-card .gf-label{font:600 10px/1.6 Arial,sans-serif;letter-spacing:.26em;text-transform:uppercase;color:var(--gf-gold);margin:0 0 4px}
.gf-card .gf-person{margin:0;font:18px/1.4 Georgia,serif}
.gf-card .gf-places{display:grid;gap:22px;width:100%;margin:22px 0 8px;padding-top:22px;border-top:1px solid color-mix(in srgb,var(--gf-ribbon) 45%,transparent)}
.gf-card .gf-icon{display:block;width:min(62%,170px);height:auto;margin:0 auto 6px;mix-blend-mode:multiply;opacity:.92}
.gf-card .gf-place h3{font:400 21px/1.3 Georgia,serif;margin:4px 0 2px}
.gf-card .gf-place p{margin:0;color:color-mix(in srgb,var(--ex-ink) 78%,transparent)}
.gf-card .gf-time{font:400 30px/1 Georgia,serif;color:var(--ex-ink)}
.gf-card .gf-response{margin-top:18px;padding-top:22px;border-top:1px solid color-mix(in srgb,var(--gf-ribbon) 45%,transparent);width:100%}
.gf-card .gf-question{font:italic 19px/1.5 Georgia,serif;margin:0 0 6px}
.gf-card .gf-deadline{margin:0 0 6px;font-size:14px;color:color-mix(in srgb,var(--ex-ink) 75%,transparent)}
.gf-card .premium-rsvp{display:inline-flex;align-items:center;justify-content:center;width:auto;max-width:100%;margin:14px 0 18px;min-height:50px;padding:12px 28px;border-radius:30px;border:0;background:color-mix(in srgb,var(--gf-ribbon) 35%,var(--ex-ink));color:#fffaf0;font:600 14px Arial,sans-serif;cursor:pointer;box-shadow:0 8px 18px #1d140c33}
.gf-card .gf-signature{margin:6px 0 0;font:400 30px/1.15 var(--gf-script);color:var(--ex-ink);display:grid;gap:6px}
.gf-card .gf-signature small{font:600 9px Arial,sans-serif;letter-spacing:.3em;color:var(--gf-gold)}
@container (min-width:460px){.gf-card .gf-places{grid-template-columns:1fr 1fr;gap:18px}}

/* ---------- Miniatura din catalog ---------- */
.experience-mini.gf-mini{background:radial-gradient(110% 80% at 50% 30%,var(--ex-paper),color-mix(in srgb,var(--ex-paper) 80%,var(--gf-box)))}
.gf-mini .gf-closed{min-height:0;height:100%;padding:26px 14px 18px;gap:16px}
.gf-mini .gf-scene{width:min(82%,250px)}
.gf-mini .gf-box,.gf-mini .gf-tag{animation:none}
.gf-mini .ex-open{font-size:11px;min-height:36px;padding:8px 15px}
.gf-mini .ex-note{display:none}
.gf-mini .gf-peek{transition-delay:.5s}
.gf-mini .gf-tag{width:38%;right:-6%}
.gf-mini .gf-tag small:last-child{display:none}
.model-link:is(:focus-visible,.scroll-open) .gf-mini .gf-loop-l{transform:rotate(-80deg) scale(.1);opacity:0}
.model-link:is(:focus-visible,.scroll-open) .gf-mini .gf-loop-r{transform:rotate(80deg) scale(.1);opacity:0}
.model-link:is(:focus-visible,.scroll-open) .gf-mini .gf-knot,.model-link:is(:focus-visible,.scroll-open) .gf-mini .gf-tail,.model-link:is(:focus-visible,.scroll-open) .gf-mini .gf-tag{opacity:0}
.model-link:is(:focus-visible,.scroll-open) .gf-mini .gf-band-v{transform:translateX(-50%) scaleY(0)}
.model-link:is(:focus-visible,.scroll-open) .gf-mini .gf-base:after{transform:scaleX(0)}
.model-link:is(:focus-visible,.scroll-open) .gf-mini .gf-lid{transform:translate(-10%,-120%) rotate(-12deg);opacity:0}
.model-link:is(:focus-visible,.scroll-open) .gf-mini .gf-peek{transform:translateY(-90%)}
@media(hover:hover){
 .model-link:hover .gf-mini .gf-loop-l{transform:rotate(-80deg) scale(.1);opacity:0}
 .model-link:hover .gf-mini .gf-loop-r{transform:rotate(80deg) scale(.1);opacity:0}
 .model-link:hover .gf-mini .gf-knot,.model-link:hover .gf-mini .gf-tail,.model-link:hover .gf-mini .gf-tag{opacity:0}
 .model-link:hover .gf-mini .gf-band-v{transform:translateX(-50%) scaleY(0)}
 .model-link:hover .gf-mini .gf-base:after{transform:scaleX(0)}
 .model-link:hover .gf-mini .gf-lid{transform:translate(-10%,-120%) rotate(-12deg);opacity:0}
 .model-link:hover .gf-mini .gf-peek{transform:translateY(-90%)}
}

@keyframes gf-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes gf-swing{0%,100%{transform:rotate(7deg)}50%{transform:rotate(3deg)}}
@keyframes gf-fade-out{to{opacity:0}}
@keyframes gf-rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@media(max-width:480px){.gf-closed{min-height:520px}.gf-sheet{padding:40px 22px 36px}}
@media(prefers-reduced-motion:reduce){.gf-box,.gf-tag{animation:none!important}.ex-cutie *{transition:none!important}.gf-opening.is-opening,.gf-card.gf-revealed{animation:none!important}}
