/* A self-contained machined loading assembly. No canvas or scene dependency. */
#arrival-loader{position:fixed;inset:0;z-index:10000;isolation:isolate;box-sizing:border-box;display:none;grid-template-columns:minmax(0,1fr);justify-items:center;align-content:center;align-content:safe center;gap:23px;overflow-x:hidden;overflow-y:auto;padding:32px 24px;color:#dce8f4;background:#04080f;font-family:Arial,Helvetica,sans-serif;opacity:1;transition:opacity .7s ease}
.arrival-pending #arrival-loader{display:grid;background:#04080f}.arrival-pending #experience-shell{visibility:hidden}.arrival-pending,.arrival-pending body{overflow:hidden!important}#arrival-loader[hidden]{display:none}#arrival-loader.is-leaving{opacity:0;pointer-events:none}
#arrival-loader::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 430px 350px at 50% 48%,#10244085,transparent 78%),linear-gradient(115deg,#080f1900,#02050a55)}
.arrival-brand{margin:0;text-align:center;font-size:11px;font-weight:400;letter-spacing:.28em;line-height:1.8}.arrival-brand span{display:block;margin-top:8px;color:#708297;font-size:9px;letter-spacing:.035em}
.arrival-center{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;min-width:0;width:100%}.arrival-play{--spark-x:50%;--spark-y:35%;position:relative;display:block;width:clamp(240px,min(78vw,48vh),380px);aspect-ratio:1;margin:0;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;touch-action:auto;-webkit-tap-highlight-color:transparent}.arrival-play:focus-visible{outline:1px solid #6aa5ee;outline-offset:7px;border-radius:22%}
.arrival-play::before{content:'';position:absolute;inset:8%;z-index:-1;background:radial-gradient(circle,#164f9820,#0b2c5610 50%,transparent 73%);filter:blur(15px);transition:opacity .8s;opacity:.7}.arrival-play::after{content:'';position:absolute;inset:8.5%;border-radius:25%;pointer-events:none;background:radial-gradient(circle at var(--spark-x) var(--spark-y),#70b5ff16,transparent 52%);mix-blend-mode:screen;opacity:0;transition:opacity .5s}
.arrival-core{display:block;position:absolute;inset:0;filter:drop-shadow(0 15px 16px #0009)}.arrival-machine{display:block;width:100%;height:100%;overflow:visible}.machine-rotor{transform-origin:240px 240px;animation:machine-rotation 32s linear infinite}.machine-blue-glow{opacity:.42;transition:opacity .85s}.machine-clamp-light{opacity:.5;transition:opacity .7s}.machine-mark-light{opacity:.62;transition:opacity .7s}.machine-mark{filter:drop-shadow(0 3px 2px #000a);transition:filter .7s}.machine-led{transition:stroke .5s,filter .5s}
.arrival-play.is-touched::after{opacity:1}.arrival-play.is-touched .machine-blue-glow{opacity:.66}.arrival-play.is-touched .machine-clamp-light{opacity:.8}.arrival-play.is-charging::before{opacity:1}.arrival-play.is-charging .machine-blue-glow{opacity:1}.arrival-play.is-charging .machine-clamp-light,.arrival-play.is-charging .machine-mark-light{opacity:1}.arrival-play.is-charging .machine-mark{filter:drop-shadow(0 3px 2px #000a) drop-shadow(0 0 7px #237de940)}
.arrival-ripple{opacity:0;filter:drop-shadow(0 0 4px #2d80ff)}.arrival-ripple.is-active{animation:machine-release 1.1s ease-out}
#arrival-loader[data-arrival-progress='1'] .machine-led-1,#arrival-loader[data-arrival-progress='2'] .machine-led-1,#arrival-loader[data-arrival-progress='2'] .machine-led-2,#arrival-loader[data-arrival-progress='3'] .machine-led-1,#arrival-loader[data-arrival-progress='3'] .machine-led-2,#arrival-loader[data-arrival-progress='3'] .machine-led-3,#arrival-loader[data-arrival-progress='4'] .machine-led{stroke:#479cff;filter:drop-shadow(0 0 3px #1873e7)}
.arrival-invitation{position:relative;margin:10px 0 0;min-height:18px;color:#748da7;font-size:10px;line-height:1.8;letter-spacing:.025em;text-align:center}.arrival-keyboard-hint{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.arrival-play:focus-visible~.arrival-invitation .arrival-keyboard-hint{position:static;display:block;width:auto;height:auto;clip-path:none}
.arrival-bottom{display:grid;justify-items:center;gap:13px;max-width:100%;padding-top:1px}
/* Real preparation progress fills one cell at a time. The frame and active edge
   give two short revs even at zero; their brightness never changes earned fill. */
.arrival-meter{position:relative;box-sizing:border-box;display:flex;gap:5px;width:178px;height:15px;padding:4px;border:1px solid #1c3045;background:#030913;box-shadow:inset 0 1px 3px #0009}
/* A translucent light pass belongs to the meter, not to its measured fill.
   Painting the moving background inside this inset keeps the ghost contained. */
.arrival-meter::before{content:'';position:absolute;inset:3px 4px;z-index:1;pointer-events:none;background:radial-gradient(ellipse,#bce4ff99,#5ba8ff55 35%,#3a89ea18 60%,transparent 74%) -55% 50% / 34% 170% no-repeat;opacity:0}
#arrival-loader[data-arrival-state='loading'] .arrival-meter::before{animation:arrival-pull 2.2s linear infinite}
.arrival-meter::after{content:'';position:absolute;inset:-1px;pointer-events:none;border:1px solid #4a9cff;box-shadow:0 0 8px #287ae799,0 0 20px #176bd744,inset 0 0 7px #378fff22;opacity:0}
#arrival-loader[data-arrival-state='loading'] .arrival-meter::after{opacity:.3;animation:arrival-drive 2.2s ease-in-out infinite}
.arrival-meter i{--segment-fill:0;box-sizing:border-box;position:relative;flex:1;background:#12233a;border-top:1px solid #2b4663;transition:border-color .4s}
.arrival-meter i::before{content:'';position:absolute;inset:-1px 0 0;transform:scaleX(var(--segment-fill));transform-origin:left;background:linear-gradient(#87bcf5,#2877d5);box-shadow:0 0 7px #2673d766;transition:transform .3s linear}
.arrival-meter i::after{content:'';position:absolute;top:-1px;bottom:0;left:clamp(0px,calc(var(--segment-fill) * 100% - 4px),calc(100% - 4px));width:4px;background:#c5e6ff;box-shadow:0 0 7px #419dff,0 0 14px #1873e780;opacity:0;transition:left .3s linear}
#arrival-loader[data-arrival-state='loading'] .arrival-meter i.is-current::after{opacity:.7;animation:arrival-drive 2.2s ease-in-out infinite}
.arrival-meter i.is-complete{border-color:#8cbff5}
.arrival-status{min-height:36px;max-width:350px;margin:0;color:#8ea6c0;font-size:10px;line-height:1.8;letter-spacing:.06em;text-align:center}
.arrival-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:4px}.arrival-actions[hidden]{display:none}.arrival-actions button{min-height:44px;padding:11px 17px;border:1px solid #304963;border-radius:5px;background:#0d1a2a;color:#dceaff;font:12px Arial,sans-serif;cursor:pointer}.arrival-actions button:hover{background:#172b43}.arrival-actions button:focus-visible{outline:2px solid #80b6fa;outline-offset:3px}
@keyframes machine-rotation{to{transform:rotate(360deg)}}@keyframes machine-release{0%{opacity:.8}100%{opacity:0}}
@keyframes arrival-drive{0%,31%,70%,100%{opacity:.25}15%{opacity:.9}49%{opacity:1}}
@keyframes arrival-pull{0%,31%{background-position:-55% 50%;opacity:0}15%,49%{background-position:50% 50%;opacity:.7}29%,68%,100%{background-position:155% 50%;opacity:0}}
@media(max-width:600px){#arrival-loader{gap:20px;padding:max(24px,env(safe-area-inset-top)) 24px max(24px,env(safe-area-inset-bottom))}.arrival-brand{font-size:10px;letter-spacing:.23em}.arrival-brand span{font-size:8px}.arrival-invitation{font-size:10px}.arrival-status{max-width:280px}}
@media(max-height:660px){#arrival-loader{gap:16px;padding-top:22px;padding-bottom:22px}.arrival-play{width:min(270px,78vw,46vh)}.arrival-brand span{margin-top:4px}.arrival-invitation{margin-top:5px}.arrival-bottom{gap:8px}}
@media(max-height:480px){#arrival-loader{gap:11px;padding-top:15px;padding-bottom:15px}.arrival-play{width:160px}.arrival-brand span{display:none}.arrival-invitation{margin-top:0}.arrival-bottom{gap:6px}}
@media(prefers-reduced-motion:reduce){#arrival-loader,#arrival-loader *,#arrival-loader *::before,#arrival-loader *::after{animation:none!important;transition:none!important}.arrival-ripple{display:none}}
