/* Functional cinematic layer. Keep scroll transforms separate from hover. */
html{scroll-padding-top:180px}
#photo-grid .photo-card{animation:none}
#photo-grid .motion-card{filter:none;clip-path:none;transition:none}
#photo-grid .photo-open{transition:transform .55s cubic-bezier(.22,1,.36,1);background:#101616}
#photo-grid .photo-open img,#photo-grid .photo-open:hover img{transition:none;filter:none;transform:none;will-change:auto}
.motion-intro .neural-scene,.cover>img.motion-cover{animation:none;transition:none}
.neural-node:focus-visible{outline:1px solid #e0d4b5;outline-offset:12px;border-radius:50%}
.gallery-page .photo-actions button{background:linear-gradient(145deg,#1c272bbd,#060c0e91)!important;color:#f6f4ed!important;border-color:#ffffff45!important;box-shadow:inset 0 1px #ffffff38,0 8px 25px #0004}
.gallery-page .photo-actions button[aria-pressed=true],#lightbox .outline[aria-pressed=true]{background:linear-gradient(145deg,#d6c8a866,#56767855)!important;color:#fff5dd!important;border-color:#dcc9a9aa!important}
.gallery-page .pin-grid>div{color:#f5f0e8;background:#ffffff08;border:1px solid #ffffff20;border-radius:18px}.gallery-page .pin-grid small{color:#bac2bf}
.gallery-page .qr-card{background:white;border-radius:18px;padding:12px;width:264px;max-width:100%;margin:24px auto}.qr-card img{display:block;width:100%;height:auto}
.gallery-page .guest-action-row{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.gallery-qr-button{margin-left:auto;border-radius:999px!important;white-space:nowrap}.gallery-qr-button>span{font-size:24px}
.gallery-page .editor-toolbar{color:#abb4ae}.gallery-page .video-placeholder{background:#0a1011;color:#bdc5bc}.gallery-page .video-info h3{color:#eee9df}
.viewer-stage{position:relative;flex:1;min-height:0;width:100%;overflow:hidden;touch-action:pinch-zoom;isolation:isolate}
.viewer-stage .viewer-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-select:none;will-change:transform,opacity}
#lightbox .lightbox-controls{min-height:48px}#viewer-counter{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
#lightbox .actions button[aria-pressed=true]{border-color:#c8b586!important}
.guest-viewer-stage{touch-action:pinch-zoom}#guest-large,.guest-slide-incoming{width:100%;height:100%;object-fit:contain}
.guest-page .guest-like{border:1px solid #ffffff3b;background:linear-gradient(145deg,#ffffff16,#ffffff06);color:#f2ede4;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:999px}
.guest-page .guest-like[aria-pressed=true]{color:#ffe0cb;background:linear-gradient(145deg,#aa8a6755,#3b60604a);border-color:#d2b58e99}
.guest-page .guest-video-box{background:#ffffff05;border-color:#ffffff20;color:#e5e4dc}
.guest-page .guest-video-box p{color:#b4bcb7}
.guest-page .guest-card{animation:none}
.guest-page .guest-card-meta{color:#b8bfb8}.guest-page .guest-card-meta strong{color:#eeeee5}
body:not(.portfolio-page){--paper:#080c0d;--white:#f1eee5;--ink:#e9e8df;--muted:#a6afab;--line:#ffffff22;background:#080c0d;color:#e9e8df}
body:not(.portfolio-page) .primary{color:#0d1415;background:#e3e5dc;border-color:#e3e5dc;border-radius:999px}
body:not(.portfolio-page) .primary:hover{background:#fffaf0}
body:not(.portfolio-page) .card-photo{background:#12191a}
body:not(.portfolio-page) .badge{background:#152020bd;color:#f5f0e7;border:1px solid #ffffff30;backdrop-filter:blur(12px);border-radius:999px}
body:not(.portfolio-page) .error{color:#ffada6}
body:not(.portfolio-page) #toast{background:#223233;color:#fff;border:1px solid #ffffff22;border-radius:16px;box-shadow:0 16px 50px #0006}
body:not(.portfolio-page) dialog:not(:has(#lightbox)){background:#0b1214;color:#f1eee5;border-color:#ffffff28;border-radius:24px}
body:not(.portfolio-page) input,body:not(.portfolio-page) select{background:#ffffff07;color:#f0eee7;border-color:#ffffff27;color-scheme:dark}
body:not(.portfolio-page) select option{background:#121b1c;color:#eee}
body:not(.portfolio-page) .outline{border-radius:999px}
@media(max-width:700px){html{scroll-padding-top:160px}.gallery-page .guest-action-row{gap:12px}.gallery-qr-button{margin:0;width:100%;min-height:44px}.gallery-page .guest-upload-cta,.gallery-page .whatsapp-share{flex:1 1 200px}.viewer-stage{min-height:80px}#photo-grid .photo-open img{transform:none!important}.photo-actions button{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}#photo-grid .photo-card{transform:none!important;opacity:1!important;visibility:visible!important}#photo-grid .photo-open,#photo-grid .photo-open img{transform:none!important;transition:none!important}.neural-scene{transform:none!important}.viewer-stage .viewer-slide{will-change:auto}}
/* Simple icons, generous invisible touch targets. */
.selection-icon{display:inline-block;width:23px;height:23px;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.gallery-page .photo-actions button,.gallery-page .photo-actions button[aria-pressed=true]{width:44px;height:44px;padding:10px;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;color:white!important;animation:none!important;filter:drop-shadow(0 1px 3px #000b)}
.gallery-page .photo-actions button:before,.gallery-page .photo-actions button:after{display:none}
.photo-actions .selection-icon{width:24px;height:24px;stroke-width:1.65}
.photo-actions button[aria-pressed=true] .heart-icon,.guest-like[aria-pressed=true] .heart-icon{fill:currentColor}
.photo-actions button[aria-pressed=true] .frame-icon rect{fill:currentColor;fill-opacity:.3;stroke-width:2.2}
.gallery-page .photo-actions button:hover{transform:scale(1.08)!important;box-shadow:none!important}
#lightbox #light-album,#lightbox #light-frame,#lightbox #light-album[aria-pressed=true],#lightbox #light-frame[aria-pressed=true]{border:0!important;background:none!important;border-radius:0;box-shadow:none!important;backdrop-filter:none;-webkit-backdrop-filter:none;gap:8px}
#lightbox #light-album:before,#lightbox #light-frame:before{display:none}
#lightbox #light-album[aria-pressed=true] .heart-icon{fill:currentColor}
#lightbox #light-frame[aria-pressed=true] .frame-icon rect{fill:currentColor;fill-opacity:.24;stroke-width:2}
.gallery-page .tabs button{display:inline-flex;align-items:center;gap:7px}.gallery-page .tabs .selection-icon{width:19px;height:19px}
.guest-page .guest-like,.guest-page .guest-like[aria-pressed=true],.guest-viewer-meta .guest-like{border:0;background:none;box-shadow:none;border-radius:0;backdrop-filter:none;-webkit-backdrop-filter:none;min-width:44px;min-height:44px;gap:8px;color:#f0eee6}
.guest-page .guest-like:before,.guest-page .guest-like:after{display:none}
.guest-page .guest-like .heart-icon{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.5}
.guest-page .guest-like[aria-pressed=true] .heart-icon{fill:currentColor}
.guest-heart-icon{display:inline-block;width:23px;height:23px;vertical-align:middle;flex:none}.guest-page .guest-like .guest-like-count{font:12px var(--sans);margin:0}.winner-meta .guest-heart-icon,.guest-top-grid .guest-heart-icon{width:18px;height:18px;margin-right:5px}
@media(max-width:700px){.neural-node:nth-child(2),.neural-node:nth-child(4){left:19%}.neural-node:nth-child(3),.neural-node:nth-child(5){left:81%}}
[hidden]{display:none!important}
.guest-page .guest-photo-card{animation:none}.guest-page .guest-photo-card .photo-open img{display:block;width:100%;height:auto}.guest-page .guest-photo-card .photo-open{min-height:80px;background:#111819}
/* Four explicit paths: studio story, professional photos, guest photo/video uploads. */
.neural-navigation .neural-node{width:52px;height:52px}
.neural-navigation .neural-node:nth-child(1){left:50%;top:50%}
.neural-navigation .neural-node:nth-child(2){left:18%;top:32%}
.neural-navigation .neural-node:nth-child(3){left:82%;top:32%}
.neural-navigation .neural-node:nth-child(4){left:50%;top:77%}
.neural-navigation .neural-node span{opacity:.92;transform:translate(-50%,0);pointer-events:auto;min-height:36px;display:flex;align-items:center;justify-content:center}
.neural-navigation .neural-node:disabled{cursor:not-allowed;opacity:.38}
.neural-navigation .neural-node:disabled:before,.neural-navigation .neural-node:disabled i,.neural-navigation .neural-node:disabled i:after{animation:none;box-shadow:none}
.neural-navigation .neural-node:disabled:hover{filter:none}
.neural-navigation .neural-node:disabled:hover i{transform:none;background:#aeb9b1}
.neural-navigation .neural-node[aria-busy=true] span{color:#c4d5db}
.participation-copy h2{font-size:clamp(34px,5vw,52px);line-height:1.08;max-width:11em}
.participation-copy>p:not(.eyebrow){color:#bbc5c8;line-height:1.7}
.participation-copy strong{font-weight:500;color:#f2f1e9}
.participation-copy .participation-invitation{font:italic 26px/1.3 var(--serif);color:#eee9de}
.participation-copy .actions{margin:30px 0 24px}
.participation-copy .hint{font-size:12px}
.guest-page>header{height:auto;min-height:82px;gap:24px;padding-top:16px;padding-bottom:16px;align-items:center}
.guest-navigation{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.guest-navigation .guest-nav-button{min-height:44px;padding:10px 15px;border:1px solid #ffffff26;border-radius:999px;background:linear-gradient(145deg,#ffffff10,#ffffff03);font:12px/1.2 var(--sans);color:#e7edec;white-space:nowrap;box-shadow:inset 0 1px #ffffff12;transition:background .2s,border-color .2s}
.guest-navigation .guest-nav-button:hover{background:#ffffff16;border-color:#ffffff50}
.guest-navigation .guest-nav-button:disabled{opacity:.38;cursor:not-allowed;background:#ffffff04;border-color:#ffffff15}
.guest-navigation .guest-nav-button:focus-visible{outline:2px solid #c3d3d8;outline-offset:3px}
#guest-upload-area,#guest-photos-section,#guest-photo-box,#guest-video-box{scroll-margin-top:150px}
.guest-contribution-copy{max-width:650px;color:#b7c1c4;line-height:1.8;margin:0 0 30px}
.guest-contribution-copy strong{font-weight:500;color:#f0eee5}
.guest-page .guest-upload-box:focus-within,.guest-page .guest-video-box:focus-within{outline:2px solid #c3d3d8;outline-offset:5px}

/* Salida clara y discreta para modales y visores inmersivos. */
#modal>.close,dialog:has(#lightbox) .close{display:inline-flex;align-items:center;justify-content:center;gap:8px;top:max(14px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));width:auto;height:42px;padding:0 16px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:linear-gradient(145deg,rgba(255,255,255,.16),rgba(255,255,255,.055));color:#f6f3ea;font:500 11px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;box-shadow:inset 0 1px rgba(255,255,255,.25),0 12px 35px rgba(0,0,0,.32);backdrop-filter:blur(20px) saturate(1.3);-webkit-backdrop-filter:blur(20px) saturate(1.3)}
#modal>.close span:first-child{font-size:17px;line-height:1}.close:focus-visible{outline:2px solid #f1eadb;outline-offset:3px}.close:hover{background:rgba(255,255,255,.2)}
body:not(.viewer-open) #modal{padding-top:72px}

/* Profundidad tridimensional de la bienvenida, conservada durante la navegación. */
.neural-intro{--tilt-x:0deg;--tilt-y:0deg;perspective:1200px}
.neural-network{transform:rotateX(var(--tilt-x)) rotateY(var(--tilt-y)) translateZ(20px);transition:transform 1.1s cubic-bezier(.16,1,.3,1)}
.neural-nodes{transform:rotateX(var(--tilt-x)) rotateY(var(--tilt-y)) translateZ(38px);transition:transform 1.1s cubic-bezier(.16,1,.3,1)}
@media(max-width:640px){#modal>.close,dialog:has(#lightbox) .close{height:40px;padding:0 13px;font-size:10px}}

/* La Galería Magno ocupa el lienzo completo; sus controles flotan sin reducir la fotografía. */
#lightbox.professional-viewer{position:relative;width:100vw;height:100dvh;padding:0}
#lightbox.professional-viewer .viewer-stage{flex:none;width:100vw;height:100dvh}
#lightbox.professional-viewer .lightbox-controls{position:absolute;z-index:5;left:max(18px,env(safe-area-inset-left));right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));margin:0;pointer-events:none}
#lightbox.professional-viewer .lightbox-controls>*{pointer-events:auto}
#lightbox.professional-viewer #viewer-counter{padding:10px 16px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(6,9,10,.58);color:#e8e5dc;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
#lightbox.professional-viewer #viewer-actions:empty{display:none}
@media(max-width:700px){
 .neural-navigation .neural-node:nth-child(1){left:50%;top:51%}
 .neural-navigation .neural-node:nth-child(2){left:20%;top:32%}
 .neural-navigation .neural-node:nth-child(3){left:80%;top:32%}
 .neural-navigation .neural-node:nth-child(4){left:50%;top:77%}
 .neural-navigation .neural-node span{font-size:9px;min-width:94px;min-height:36px}
 .guest-page>header{display:flex;flex-wrap:wrap;gap:12px;padding:12px 18px 15px;min-height:0}
 .guest-page>header .brand-logo img{height:34px;width:auto}
 .guest-navigation{flex:1 0 100%;justify-content:flex-start;gap:6px}
 .guest-navigation .guest-nav-button{flex:1 0 calc(50% - 6px);padding:10px 8px;font-size:11px}
 #guest-upload-area,#guest-photos-section,#guest-photo-box,#guest-video-box{scroll-margin-top:190px}
 .participation-copy .actions{align-items:stretch;flex-direction:column}
}
@media(prefers-reduced-motion:reduce){.guest-navigation .guest-nav-button{transition:none}}

/* Podio del concurso: tres posiciones claras y una acción directa. */
.guest-award-copy{max-width:680px}.guest-award-copy h2{margin-bottom:.45rem}.guest-award-copy p:last-child{max-width:58ch;color:rgba(255,255,255,.72)}
.guest-winner-card>button,.podium-card>button{position:relative;overflow:hidden;cursor:pointer}
.ranking-open{position:absolute;left:50%;bottom:18px;z-index:4;translate:-50% 0;min-width:max-content;padding:10px 16px;border:1px solid rgba(255,255,255,.34);border-radius:999px;background:rgba(8,11,14,.58);color:#fff;font:600 11px/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;box-shadow:0 10px 32px rgba(0,0,0,.3);backdrop-filter:blur(18px) saturate(135%);-webkit-backdrop-filter:blur(18px) saturate(135%);transition:transform .35s cubic-bezier(.22,1,.36,1),background .35s ease}
.guest-winner-card>button:hover .ranking-open,.podium-card>button:hover .ranking-open{transform:translateY(-4px);background:rgba(255,255,255,.18)}
.guest-runner-up .guest-top-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.podium-card>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.podium-card>div>div{display:grid;gap:4px}.podium-card small,.winner-meta small{display:block;color:rgba(255,255,255,.58)}
.guest-top-grid article>button>.podium-number{display:grid;place-items:center;position:absolute;top:14px;left:14px;z-index:5;width:38px;height:38px;border:1px solid rgba(255,255,255,.38);border-radius:50%;background:rgba(8,11,14,.68);color:#fff;font:600 15px var(--sans);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.guest-top-grid article>button>.ranking-open{position:absolute;left:50%;top:auto;bottom:18px;z-index:4;translate:-50% 0;display:block;width:auto;height:auto;min-width:max-content;padding:10px 16px;border:1px solid rgba(255,255,255,.34);border-radius:999px;background:rgba(8,11,14,.58);color:#fff;font:600 11px/1 var(--sans)}
.podium-empty{min-height:230px;border:1px dashed rgba(255,255,255,.18);background:rgba(255,255,255,.025)}.podium-placeholder{min-height:230px;display:grid!important;place-content:center;justify-items:center!important;gap:8px!important;color:rgba(255,255,255,.55)}.podium-placeholder .podium-number{position:static;width:46px;height:46px}.podium-placeholder b{color:rgba(255,255,255,.82)}
.guest-winner-card>button:focus-visible,.podium-card>button:focus-visible{outline:2px solid #fff;outline-offset:4px}
@media(max-width:640px){.guest-runner-up .guest-top-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.guest-top-grid article>button>.ranking-open{bottom:10px;padding:9px 11px;font-size:9px;letter-spacing:.06em}.guest-top-grid article>button>.podium-number{top:9px;left:9px;width:32px;height:32px}.podium-empty,.podium-placeholder{min-height:180px}}

/* El visor de invitados se descarta como una tarjeta de iPhone: arrastrando hacia abajo. */
#guest-viewer{transform-origin:50% 100%;overscroll-behavior:none}
#guest-viewer #guest-close{position:absolute;z-index:12;top:max(8px,env(safe-area-inset-top));left:50%;right:auto;width:170px;height:40px;padding:5px 14px;translate:-50% 0;display:grid;place-items:center;gap:4px;border:0;border-radius:0;background:transparent;color:rgba(255,255,255,.58);box-shadow:none;font:500 8px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;touch-action:none}
#guest-viewer .viewer-drag-handle{display:block;width:44px;height:5px;border-radius:999px;background:rgba(255,255,255,.64);box-shadow:0 0 18px rgba(255,255,255,.14)}
#guest-viewer .viewer-close-label{display:block;opacity:.72}
#guest-viewer #guest-close:focus-visible{outline:1px solid rgba(255,255,255,.72);outline-offset:2px;border-radius:12px}

/* Controles orbitales con volumen visible y reflejos Liquid Glass. */
.neural-navigation .neural-node{transform-style:preserve-3d;perspective:700px}
.neural-navigation .neural-node:before{width:132px;height:132px;border:1px solid rgba(199,225,234,.24);background:radial-gradient(circle at 50% 48%,rgba(156,216,231,.16),rgba(73,113,127,.045) 42%,transparent 68%);box-shadow:inset 0 0 22px rgba(209,239,247,.08),0 0 28px rgba(108,183,207,.1);transform:translateZ(-14px) rotateX(68deg) scale(.82);animation:magnoOrbitHalo 7s linear infinite}
.neural-navigation .neural-node i{position:relative;width:19px;height:19px;border:1px solid rgba(233,248,250,.64);background:radial-gradient(circle at 30% 26%,#fff 0 6%,#cce8ed 14%,#7599a2 35%,#182d32 70%);box-shadow:inset -5px -7px 12px rgba(0,0,0,.48),inset 3px 3px 8px rgba(255,255,255,.5),0 0 17px rgba(174,226,237,.72),0 0 44px rgba(107,181,201,.3);animation:magnoOrbBreathe 3.8s ease-in-out infinite}
.neural-navigation .neural-node i:before{content:'';position:absolute;inset:-17px;border:1px solid rgba(206,231,238,.34);border-radius:50%;transform:rotateX(68deg) rotateZ(0);animation:magnoOrbitSpin 6.8s linear infinite}
.neural-navigation .neural-node:nth-child(2) i,.neural-navigation .neural-node:nth-child(2):before{animation-delay:-1.1s}
.neural-navigation .neural-node:nth-child(3) i,.neural-navigation .neural-node:nth-child(3):before{animation-delay:-2.2s}
.neural-navigation .neural-node:nth-child(4) i,.neural-navigation .neural-node:nth-child(4):before{animation-delay:-3.3s}
.neural-navigation .neural-node:hover i,.neural-navigation .neural-node:focus-visible i{transform:translateZ(28px) scale(1.3);box-shadow:inset -5px -7px 12px rgba(0,0,0,.42),inset 3px 3px 8px rgba(255,255,255,.62),0 0 25px rgba(210,242,248,.9),0 0 76px rgba(111,202,226,.5)}
.neural-navigation .neural-node span{transform:translate(-50%,5px) translateZ(20px);text-shadow:0 2px 15px #000,0 0 12px rgba(189,229,239,.34);transition:transform .6s cubic-bezier(.16,1,.3,1),color .4s ease}
.neural-navigation .neural-node:hover span,.neural-navigation .neural-node:focus-visible span{transform:translate(-50%,0) translateZ(34px);color:#fff}
@keyframes magnoOrbitHalo{to{transform:translateZ(-14px) rotateX(68deg) rotateZ(360deg) scale(.82)}}
@keyframes magnoOrbitSpin{to{transform:rotateX(68deg) rotateZ(360deg)}}
@keyframes magnoOrbBreathe{0%,100%{filter:brightness(.82);scale:.94}50%{filter:brightness(1.2);scale:1.08}}
@media(prefers-reduced-motion:reduce){.neural-navigation .neural-node:before,.neural-navigation .neural-node i,.neural-navigation .neural-node i:before{animation:none}}

/* Minimal download actions shared by the couple and guest experiences. */
.viewer-download,.media-download{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;width:max-content;min-height:2.25rem;padding:.42rem .15rem;color:rgba(248,246,239,.82);font:500 .68rem/1 var(--sans);letter-spacing:.13em;text-transform:uppercase;text-decoration:none;background:transparent;border:0;border-bottom:1px solid rgba(248,246,239,.28);transition:color .22s ease,border-color .22s ease,transform .22s cubic-bezier(.22,1,.36,1)}
.viewer-download svg,.media-download svg{width:1.05rem;height:1.05rem;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round;flex:none}
.viewer-download:hover,.viewer-download:focus-visible,.media-download:hover,.media-download:focus-visible{color:#fff;border-color:rgba(248,246,239,.8);transform:translateY(-1px)}
.viewer-download:focus-visible,.media-download:focus-visible{outline:1px solid rgba(255,255,255,.6);outline-offset:5px}
.media-actions{display:flex;align-items:center;justify-content:flex-end;gap:1rem;flex-wrap:wrap}
.guest-viewer-actions{display:flex;align-items:center;justify-content:flex-end;gap:1rem}
.guest-viewer-meta .viewer-download{color:rgba(255,255,255,.84)}
@media(max-width:600px){.viewer-download,.media-download{font-size:.62rem;letter-spacing:.1em}.guest-viewer-meta{gap:.75rem}.guest-viewer-actions{gap:.7rem}.media-actions{justify-content:flex-start}}
