/* Demo 23: shot edits, physical consequences and clean result compositions. */
.contact-premiere .cinema-shot,.contact-premiere .cinema-shade,.contact-premiere .cinema-readout,.contact-premiere .cinema-timeline,.contact-premiere .contact-beat-copy{pointer-events:none}
.contact-premiere .cinema-shot{transition:opacity .65s ease,transform 4s ease-out}
.contact-premiere[data-transition=cut] .cinema-shot{transition:opacity .08s linear,transform .35s ease-out}
.contact-premiere[data-transition=cut] .cinema-shot[data-visible=false]{opacity:0}
.contact-premiere[data-transition=cut] .cinema-shot[data-visible=true]{opacity:.95}
.contact-premiere[data-transition=fade] .cinema-shot[data-camera=held]{transition:opacity .45s ease,transform 1.5s ease}
/* A close-up is a brief edit. The strike is a sharp pan; the aftermath stays open. */
.contact-premiere[data-beat=strike] .cinema-shot[data-visible=true]{animation:contactStrike .55s cubic-bezier(.1,.6,.2,1) both}
.contact-premiere[data-beat=strike] .cinema-letterbox{border-top-width:3vh;border-bottom-width:8vh;transition:border-width .18s}
.contact-premiere[data-beat=strike] .contact-beat-copy{opacity:0}
.contact-premiere[data-beat=silence] .cinema-shot[data-visible=true]{opacity:.42}
.contact-premiere[data-beat=sever] .cinema-shot[data-visible=true]{animation:breachImpact .35s ease-out;opacity:.9}
.contact-premiere[data-beat=aftermath] .cinema-shot[data-visible=true]{opacity:.88;transform:scale(1.025);transition:transform 2.2s ease-out}
.contact-premiere[data-beat=arrival] .cinema-shot[data-visible=true],.contact-premiere[data-beat=identity] .cinema-shot[data-visible=true]{opacity:.48;transform:scale(1.025)}
.contact-premiere[data-beat=arrival] .cinema-shot[data-visible=false],.contact-premiere[data-beat=identity] .cinema-shot[data-visible=false]{opacity:0;transition:opacity .15s}
.contact-premiere .contact-figure{z-index:4;transition:opacity 1.25s ease,transform 1.8s ease,filter 1.3s ease}
.contact-premiere .cinema-shade{z-index:3}.contact-premiere .cinema-letterbox{z-index:6}.contact-premiere .contact-identity,.contact-premiere .contact-beat-copy{z-index:7}.contact-premiere .cinema-readout,.contact-premiere .cinema-timeline{z-index:8}.contact-premiere .contact-top,.contact-premiere .contact-bottom{z-index:20}
.contact-premiere .cinema-shot[data-visible=true]{z-index:1}.contact-premiere .cinema-shot[data-visible=false]{z-index:0}
.contact-premiere .cinema-atmosphere{z-index:2}.contact-premiere .cinema-exposure{z-index:5}
/* Both halves share the same alpha plate and part along its authored fracture. */
.cinema-breach{position:absolute;z-index:2;inset:auto;left:50%;bottom:-8%;width:max(108%,150vh);height:auto;aspect-ratio:1672/941;transform:translateX(-50%);pointer-events:none;opacity:0;overflow:visible}
.cinema-breach img{position:absolute;width:100%;height:100%;object-fit:contain;inset:0;transform-origin:50% 72%;will-change:auto}
.cinema-breach img[hidden]{display:none}.breach-left{clip-path:polygon(0 0,100% 0,100% 21%,0 100%)}.breach-right{clip-path:polygon(0 100%,100% 21%,100% 100%)}
.contact-premiere[data-beat=silence][data-barrier=ready] .cinema-breach{opacity:1;filter:brightness(.55)}
.contact-premiere[data-beat=sever][data-barrier=ready] .cinema-breach{opacity:1}
.contact-premiere[data-beat=sever] .cinema-breach img{will-change:transform}
.contact-premiere[data-beat=sever] .breach-left{animation:barrierLeft 1.65s .16s cubic-bezier(.4,.04,.85,.65) both}
.contact-premiere[data-beat=sever] .breach-right{animation:barrierRight 1.65s .08s cubic-bezier(.4,.04,.85,.65) both}
.breach-cut{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}
.contact-premiere[data-beat=sever] .breach-cut{animation:breachSeam .42s ease-out both}
/* Morrow: distant lamp, hand, vertical travel, then the surface passes the camera. */
.contact-premiere[data-beat=ascent] .cinema-shot[data-visible=true]{animation:contactAscend 1.6s cubic-bezier(.3,.1,.3,1) both}
.contact-premiere[data-beat=ascent] .contact-beat-copy{opacity:0}
.contact-premiere[data-beat=surface] .cinema-shot[data-visible=true]{z-index:2;opacity:.92;animation:surfaceArrival 1.1s cubic-bezier(.15,.7,.25,1) both}
.contact-premiere[data-beat=surface] .cinema-shot[data-visible=false]{z-index:1;animation:surfaceBelow 1.1s linear both}
.contact-premiere[data-beat=surface] .contact-beat-copy{animation:surfaceCaption 1.5s ease both}
.cinema-waterline{position:absolute;z-index:3;inset:-12% 0 -20%;pointer-events:none;opacity:0;background:linear-gradient(180deg,transparent 36%,#b7d9d81a 43%,#b5e0d85e 44%,#2c687b66 46%,#061c2bdb 52%,#041320f5 100%);border-radius:45% 38% 0 0 / 12% 7% 0 0}
.contact-premiere[data-beat=surface] .cinema-waterline{animation:waterCrossing 1.1s cubic-bezier(.15,.7,.25,1) both}
.contact-premiere[data-motif=depth][data-beat=arrival] .contact-figure{transform:translateY(0);animation:rescuerSteady 1.8s ease-out both}
.contact-premiere[data-beat=identity] .contact-figure{animation:none}
.contact-premiere .cinema-advance{min-width:166px;flex-shrink:0;margin-left:auto;touch-action:manipulation;position:relative;pointer-events:auto}
.cinema-feedback{position:absolute;z-index:25;bottom:122px;left:50%;transform:translateX(-50%);max-width:min(85%,640px);padding:12px 20px;border:1px solid #b8c8bf55;background:#08121af2;color:#e3e8de;font:12px/1.6 system-ui;text-align:center;pointer-events:none}.cinema-feedback[hidden]{display:none}
.contact-premiere[data-loading=true] .cinema-breach{display:none}
.contact-premiere[data-paused=true] *{animation-play-state:paused!important}
/* Low graphics keeps the authored action, using a simple reveal instead of moving pieces. */
.contact-premiere.contact-low .cinema-breach img{will-change:auto;animation:none;transform:none}.contact-premiere.contact-low[data-beat=sever] .cinema-breach{animation:lowBreach .45s .15s both}.contact-premiere.contact-low .cinema-waterline{display:none}.contact-premiere.contact-low[data-beat=surface] .cinema-shot[data-visible=false]{opacity:0;animation:none}
.contact-premiere.contact-no-shake[data-beat=strike] .cinema-shot,.contact-premiere.contact-no-shake[data-beat=sever] .cinema-shot{animation:none}
.contact-premiere.contact-no-flash .breach-cut{display:none}
.contact-premiere.contact-still .cinema-breach,.contact-premiere.contact-still .cinema-waterline{display:none}
@keyframes contactStrike{0%{transform:scale(1.12) translateX(-2%)}100%{transform:scale(1.025) translateX(1%)}}
@keyframes barrierLeft{0%,8%{transform:none;opacity:1}30%{transform:translate(-12%,5%) rotate(-5deg);opacity:1}100%{transform:translate(-72%,105%) rotate(-21deg);opacity:0}}
@keyframes barrierRight{0%,8%{transform:none;opacity:1}30%{transform:translate(10%,9%) rotate(4deg);opacity:1}100%{transform:translate(68%,110%) rotate(22deg);opacity:0}}
@keyframes breachSeam{0%{opacity:0}12%{opacity:.8}100%{opacity:0}}
@keyframes lowBreach{to{opacity:0}}
@keyframes contactAscend{0%{transform:scale(1) translateY(0)}100%{transform:scale(1.11) translateY(6%)}}
@keyframes surfaceArrival{0%{clip-path:inset(0 0 100% 0);transform:scale(1.06) translateY(-4%)}100%{clip-path:inset(0);transform:scale(1)}}
@keyframes surfaceBelow{0%,80%{opacity:.88}100%{opacity:0}}
@keyframes waterCrossing{0%{opacity:1;transform:translateY(-40%)}85%{opacity:.75}100%{opacity:0;transform:translateY(100%)}}
@keyframes surfaceCaption{0%,65%{opacity:0;transform:translateY(4px)}100%{opacity:1;transform:none}}
@keyframes rescuerSteady{0%{opacity:0;transform:translateY(3%) rotate(-1deg)}60%{opacity:.9;transform:translateY(-.4%)}100%{opacity:1;transform:none}}
/* One result is an encounter-sized composition, not one slot in a ten-card grid. */
.recruit-summary-single .recruit-summary-content{max-width:1360px;padding-top:28px}.single-contact{position:relative;isolation:isolate;display:grid;grid-template-columns:44% 56%;min-height:490px;overflow:hidden;border:1px solid #8a989138;background:#0b151e;margin:18px 0 0}.single-environment{position:absolute;z-index:-2;inset:0;background-size:cover;background-position:center;opacity:.3}.single-contact:before{content:'';position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#06101922,#061019d9 58%,#061019ef),linear-gradient(0deg,#061019,transparent 50%)}.single-portrait{position:relative;min-height:480px;overflow:hidden}.single-portrait img{position:absolute;inset:0;width:100%;height:110%;object-fit:contain;object-position:center top;mask-image:linear-gradient(#000 72%,transparent 100%)}.single-art-fallback{display:none;position:absolute;top:45%;left:0;right:0;text-align:center;letter-spacing:7px;color:var(--rarity);font:18px monospace}.single-portrait.asset-unavailable .single-art-fallback{display:block}.single-monogram{display:block;text-align:center;padding-top:130px;font:140px Georgia;color:var(--rarity)}.single-contact-copy{padding:45px 35px 35px 15px;align-self:center;min-width:0}.single-stars{font-size:17px;letter-spacing:6px;color:var(--rarity);margin:0 0 26px}.single-stars span{display:block;font:9px/1.6 monospace;letter-spacing:1.5px;color:#9bafb8;margin-top:10px}.single-contact-copy h1{font-size:clamp(50px,6vw,82px);margin:8px 0 18px;letter-spacing:-3px}.single-contact-copy blockquote{font:italic clamp(18px,1.7vw,24px)/1.65 Georgia,serif;color:#cbd5d7;max-width:420px;margin:0 0 24px}.single-outcome{padding:20px 0 0;border-top:1px solid #aeb9b62b;max-width:420px}.single-outcome small{display:block;font:9px monospace;letter-spacing:2px;color:var(--rarity);margin-bottom:9px}.single-outcome strong{font:18px/1.5 Georgia,serif;color:#eef0e5}.single-outcome p{font-size:11px;line-height:1.7;color:#97abb4;max-width:380px;margin:9px 0 16px}.single-contact-copy button{font-size:11px;background:#16252c99;border-color:#8faca34a;min-height:44px}.recruit-summary-single .summary-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding:22px 0;border-bottom:1px solid #b8c8c321}.recruit-summary-single .repeat-search{margin:0;border:0;padding:0}.summary-actions .row{gap:10px}.summary-actions>.row button{font-size:11px;min-height:44px}.recruit-summary-single .recruit-rules{margin-top:12px}.recruit-summary-single .notes{font-size:11px;margin-top:18px}
@media(max-width:1000px){.single-contact-copy{padding:30px 24px 30px 10px}.single-contact{min-height:450px}.single-portrait{min-height:450px}.single-contact-copy h1{font-size:65px}.single-stars{margin-bottom:20px}.recruit-summary-single .summary-actions{align-items:flex-start}}
@media(max-width:700px){.contact-premiere .cinema-advance{min-width:145px}.cinema-feedback{bottom:150px;font-size:11px}.cinema-breach{bottom:-3%}.single-contact{grid-template-columns:1fr;min-height:0}.single-portrait{height:310px;min-height:0;grid-row:1}.single-portrait img{height:130%;object-position:center top}.single-contact-copy{padding:0 24px 28px;grid-row:2;z-index:1;margin-top:-38px}.single-contact:before{background:linear-gradient(0deg,#061019 15%,#061019ee 50%,#06101922)}.single-stars{font-size:14px;margin-bottom:20px}.single-contact-copy h1{font-size:58px}.single-contact-copy blockquote{font-size:19px;margin-bottom:20px}.single-contact-copy .contact-codename{font-size:10px}.single-outcome{padding-top:16px}.single-outcome p{font-size:12px}.recruit-summary-single .summary-actions{display:block}.recruit-summary-single .repeat-search{margin-bottom:18px}.summary-actions>.row{display:grid;grid-template-columns:1fr 1fr}.summary-actions>.row button{padding:12px 8px;font-size:10px}.single-environment{background-position:60% top}.single-monogram{padding-top:70px}}
@media(max-height:560px) and (orientation:landscape){.contact-premiere .cinema-advance{min-width:130px}.cinema-feedback{bottom:65px;padding:8px 15px}.cinema-breach{bottom:-9%}.single-contact{grid-template-columns:44% 56%}.single-portrait{grid-row:auto;height:auto;min-height:400px}.single-portrait img{height:110%}.single-contact-copy{grid-row:auto;margin:0;padding:28px 20px 24px 8px}.single-contact-copy h1{font-size:54px}.single-contact:before{background:linear-gradient(90deg,#06101922,#061019df 58%,#061019ef),linear-gradient(0deg,#061019,transparent 60%)}}
@media(prefers-reduced-motion:reduce){.cinema-breach,.cinema-waterline{display:none}.contact-premiere *{animation:none!important;transition:none!important}}

/* Complete first banner: four leads and three practical field contacts. */
.signal-feature .feature-copy{margin-bottom:136px}
.signal-feature .feature-select{left:24px;right:24px;justify-content:flex-end;max-width:calc(100% - 48px)}
.signal-feature .feature-select button{flex:0 1 170px;min-width:0}
.signal-feature[data-feature=sightline] .feature-scenery{background-position:73% 25%}
.signal-feature[data-feature=anchorpoint] .feature-scenery{background-position:65% 18%}
.recruit-wallet>small{grid-column:1/-1;font-size:10px;line-height:1.6;color:#91a8ab}
.recruit-dossier-art{float:right;width:min(40%,180px);height:240px;object-fit:contain;object-position:top;margin:0 0 12px 15px}
.recruit-kit-numbers{font:10px/1.8 monospace;letter-spacing:.5px;color:#d3d8c9}
.contact-premiere[data-motif=sightline] .cinema-atmosphere{background:repeating-linear-gradient(110deg,transparent 0 100px,#b8c0e133 101px,transparent 102px 190px);animation:contactRain 6s linear infinite;opacity:.13}
.contact-premiere[data-motif=anchorpoint] .cinema-atmosphere{background:radial-gradient(ellipse at 65% 18%,#e3bd6122,transparent 55%);animation:none;opacity:.35}
.contact-premiere[data-motif=sightline][data-beat=strike] .cinema-exposure{background:linear-gradient(176deg,transparent 31%,#e8dcff88 32%,transparent 33%);animation:breachExposure .45s ease-out}
.contact-premiere[data-motif=anchorpoint][data-beat=strike] .cinema-shot[data-visible=true]{animation:anchorSettle .7s ease-out both}
.contact-premiere[data-motif=anchorpoint][data-beat=aftermath] .cinema-shot[data-visible=true]{transform:scale(1);animation:none}
@keyframes anchorSettle{0%{transform:scale(1.03) translateY(-1%)}35%{transform:scale(1.025) translateY(.5%)}100%{transform:scale(1.025)}}
@media(max-width:700px){.signal-feature .feature-copy{margin-bottom:178px}.signal-feature .feature-select{left:16px;right:16px;max-width:none;display:grid;grid-template-columns:1fr 1fr;gap:6px}.signal-feature .feature-select button{width:100%;height:65px}.signal-feature .feature-select img{width:44px}.signal-feature .feature-select b{font-size:16px}.signal-feature[data-feature=sightline] .feature-scenery{background-position:72% top}.signal-feature[data-feature=anchorpoint] .feature-scenery{background-position:65% top}.recruit-fixtures{grid-template-columns:1fr 1fr}.recruit-fixtures>span,.recruit-fixtures>small{grid-column:1/-1}.recruit-fixtures button{min-width:0;font-size:10px;min-height:44px}.recruit-dossier-art{height:180px}.recruit-kit-numbers{font-size:9px}}
@media(prefers-reduced-motion:reduce){.contact-premiere[data-motif=sightline] .cinema-atmosphere{display:none}}
