﻿/* Landing-only material treatment. Card transforms/contact clocks remain original. */
#landingScene .card-energy{opacity:var(--energy,.6);filter:drop-shadow(0 0 1.2px #e8caff);inset:-.2%;width:100.4%;height:100.4%}
#landingScene .card-energy .energy-base{stroke:#edc5f2;stroke-width:.7;opacity:.3}
#landingScene .card-energy .energy-packet{stroke-width:2;stroke-dasharray:12 88;opacity:1}
#landingScene .card-energy .energy-packet.second{stroke:#fff1bb;stroke-width:1.45;stroke-dasharray:6 94}
#landingScene .card-face:after{border-color:#e4bbef80;box-shadow:inset 0 0 3px #e6acff70,0 3px 8px #120b2550;background:linear-gradient(var(--spec-angle,115deg),transparent 43%,rgba(255,240,207,var(--spec,.10)) 50%,transparent 57%)}
#landingScene .card-face:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:2;opacity:0;background:radial-gradient(ellipse at 5% 7%,#fff6cd 0%,#ffe3a450 2%,transparent 8%),radial-gradient(ellipse at 95% 93%,#f5e0ff 0%,#deafff50 2%,transparent 9%)}
#landingScene .energy-contact .card-face:before{animation:landing-impact-glints .65s ease-out both}
#landingScene .energy-contact .card-energy{animation:landing-material-resolve .85s ease-out both}
#landingScene .locked-card .card-energy{opacity:.095;filter:none}
#landingScene .locked-card:hover .card-energy{opacity:.35}
#landingScene .locked-card .card-face:after{border-color:#fff2;box-shadow:inset 0 0 2px #ffe7e830,0 2px 5px #10051b55}
#landingScene .landing-entry-atmosphere .shad-hit,#landingScene .landing-entry-atmosphere .shad-guide-hit,#landingScene .landing-entry-atmosphere .shad-cat-hit{pointer-events:none}
#landingScene .living-landing .shad-hit[data-target=brand]:hover{box-shadow:none}
@keyframes landing-material-resolve{0%{opacity:1;filter:drop-shadow(0 0 2.5px #fff0c4)}22%{opacity:.92;filter:drop-shadow(0 0 2px #eac2fc)}100%{opacity:.095;filter:none}}
@keyframes landing-impact-glints{0%{opacity:.95}25%{opacity:.7}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){#landingScene .energy-contact .card-energy,#landingScene .energy-contact .card-face:before{animation-duration:.22s}#landingScene .card-energy{filter:none}}

/* Landing attribution follows the mobile artwork, never the browser corner. */
#journey>.landing-signature{display:none;position:relative;width:100%;max-width:inherit;min-height:24px;margin:0;box-sizing:border-box;align-items:center;justify-content:center;gap:7px;border-top:1px solid #dec8eb20;white-space:nowrap;line-height:1;flex:none}
#journey>.landing-signature svg{width:29px;height:14px;flex:none}
#journey>.landing-signature small{display:inline;font:8px/1.2 Arial,sans-serif;letter-spacing:.1px;color:#b9a9c7}
#journey>.landing-signature .signature-sweep{opacity:0;animation:landing-signature-light 21s linear infinite}
#journey[data-state="CINEMATIC_PLAYING"]>.landing-signature,#journey[data-state="LANDING_READY"]>.landing-signature{display:flex}
body:has(#journey[data-state="CINEMATIC_PLAYING"],#journey[data-state="LANDING_READY"])>.public-signature{display:none}
@keyframes landing-signature-light{0%,80%{transform:translateX(0);opacity:0}82%{opacity:.18}90%{transform:translateX(240px);opacity:.18}91%,100%{transform:translateX(240px);opacity:0}}
@media(prefers-reduced-motion:reduce){#journey>.landing-signature .signature-sweep{animation:none}}

/* Only the landing state leaves the viewport-sized intro shell. */
#journey:is([data-state="CINEMATIC_PLAYING"],[data-state="LANDING_READY"]){height:auto;min-height:100svh;min-height:100dvh;overflow:visible;display:flex;flex-direction:column;align-items:center;justify-content:center}
#journey:is([data-state="CINEMATIC_PLAYING"],[data-state="LANDING_READY"])>#landingScene{flex:none;margin:0;max-width:100%}
#journey>.landing-signature{width:min(100%,calc((100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom)) * 2 / 3));padding-inline:4px}
body:has(#journey[data-state="CINEMATIC_PLAYING"],#journey[data-state="LANDING_READY"]){overflow-x:clip;overflow-y:auto}
/* One shared stage cell prevents the hidden portal destination from adding a
   second page height. The credit remains in flow at the viewport's bottom. */
@media(max-width:700px){
 #journey:is([data-state="CINEMATIC_PLAYING"],[data-state="LANDING_READY"]){display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(min-content,1fr) auto;align-items:start;justify-items:center}
 #journey>#landingScene{align-self:center}
 /* Reserve the same credit row before, during and after the portal. This
    keeps the centered artwork's origin stable as the credit becomes visible. */
 #journey.journey>.landing-signature[data-signature-component="approved-png-v1"]{display:block;visibility:hidden;grid-area:2 / 1;align-self:end}
 #journey:is([data-state="CINEMATIC_PLAYING"],[data-state="LANDING_READY"])>.landing-signature[data-signature-component="approved-png-v1"]{visibility:visible}
}

#journey>.landing-signature .landing-signature-name{font:550 11px/1.2 "Segoe UI",Arial,sans-serif;letter-spacing:.7px;color:#ded1e9}
#journey>.landing-signature .signature-v{color:#b684ed}
#journey>.landing-signature .landing-signature-divider{font:10px/1 Arial,sans-serif;color:#8f7e9f}

/* Artwork-only continuation, behind the unchanged stage and PNG signature.
   All samples exclude text/cards/characters. Bounded blur softens enlarged
   edge pixels without changing layout, scrolling or the original image. */
#journey>.landing-art-extension{display:none;position:absolute;left:0;right:0;top:var(--landing-extension-start,100%);bottom:0;z-index:2;overflow:clip;pointer-events:none;contain:paint;background:#23152f;mask-image:linear-gradient(transparent,#000 var(--landing-extension-blend,6px))}
#journey[data-state="LANDING_READY"]>.landing-art-extension{display:block}
#journey[data-state="LANDING_READY"]>#landingScene{z-index:1}
.landing-art-extension .art-sample{position:absolute;pointer-events:none;overflow:hidden;filter:blur(12px);opacity:.64;top:-20%;height:140%;width:72%;mask-image:linear-gradient(90deg,#000 45%,transparent)}
.landing-art-extension .art-sample-left{left:-8%}
.landing-art-extension .art-sample-right{right:-8%;mask-image:linear-gradient(90deg,transparent,#000 55%)}

.landing-art-extension:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent,#190d2980)}

/* Settled art uses native image painting, independent of SVG mask support. */
#landingScene>.landing-static-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}
#journey[data-state="LANDING_READY"] #landingScene>.landing-static-art{display:block}
#journey[data-state="LANDING_READY"] #landingScene>.landing-art{visibility:hidden}
#landingMap a.navigation-pending rect{fill:#fff2;stroke:#ffedba;stroke-width:2}
html[data-living-quality="LOW"] .locked-card .card-energy{filter:none!important;animation:none!important}
html[data-living-quality="LOW"] .scene-reflection:after,html[data-living-quality="LOW"] .environment-light{animation-play-state:paused!important}

/* Only the enhanced entrance masks cards. The default is always native artwork. */
#journey[data-state="CINEMATIC_PLAYING"] #landingScene>.landing-static-art{visibility:hidden}
html[data-performance-profile="LOW"] #journey[data-state="CINEMATIC_PLAYING"] #landingScene>.landing-static-art{visibility:visible}
html[data-performance-profile="LOW"] #landingScene>.landing-art{display:none}
html[data-performance-profile="LOW"] #journey[data-state="CINEMATIC_PLAYING"] .landing-underlay{inset:33% 0 auto;height:57%;z-index:1}
html[data-performance-profile="LOW"] .flight-stage{z-index:2;perspective:none;transform-style:flat}
html[data-performance-profile="LOW"] .flying-card,html[data-performance-profile="LOW"] .card-face{transform-style:flat;backface-visibility:visible}
html[data-performance-profile="LOW"] .card-back,html[data-performance-profile="LOW"] .card-edge,html[data-performance-profile="LOW"] .card-trail,html[data-performance-profile="LOW"] .card-energy{display:none}
