*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:#0b160e;overflow:hidden}body{font-family:Arial,Helvetica,sans-serif;color:#eee6f0}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid #dab8ff;outline-offset:6px}button:hover{color:#fff}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}#room{position:relative;isolation:isolate;height:100svh;min-height:320px;overflow:hidden}.stage{position:absolute;width:100%;height:100%;left:50%;top:50%;transform:translate(-50%,-50%);--art:url('assets/room-clean.webp')}.art{display:block;width:100%;height:100%}.stage picture{position:absolute;inset:0}.title-glow{position:absolute;inset:0;background-image:var(--art);background-size:100% 100%;mix-blend-mode:screen;mask-image:radial-gradient(ellipse 26% 20% at 35% 23%,#000 60%,transparent 100%);opacity:.24;animation:glow 4s ease-in-out infinite;pointer-events:none}.phone-light{position:absolute;left:24%;top:39%;width:26%;height:38%;background:radial-gradient(ellipse,#a65bf421,transparent 70%);mix-blend-mode:screen;animation:ringlight 5s infinite;pointer-events:none}.phone{position:absolute;left:25.5%;top:38%;width:23%;height:37%;border:0;background:none;border-radius:40%;z-index:2}.phone-tag{position:absolute;left:50%;top:101%;transform:translateX(-50%);text-transform:uppercase;font-size:10px;letter-spacing:2.5px;white-space:nowrap;color:#f1dfff;text-shadow:0 1px 8px #000;opacity:.85;transition:opacity .3s}.phone-tag span{display:inline-block;margin-left:5px}.phone:hover .phone-tag{opacity:1}.ring{position:absolute;inset:10% -10%;border-left:2px solid #d9aaff;border-right:2px solid #d9aaff;border-radius:50%;opacity:0;filter:drop-shadow(0 0 6px #b574ff);animation:ringwave 5s infinite}.ring-two{inset:0 -20%;animation-delay:.2s}.vignette{position:absolute;inset:0;background:linear-gradient(#03090380,transparent 17%,transparent 75%,#030903c7),radial-gradient(ellipse at center,transparent 40%,#020c0335);pointer-events:none}.grain{position:absolute;inset:0;opacity:.085;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.88' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23fff' filter='url(%23n)' opacity='.7' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
header{position:absolute;top:max(25px,env(safe-area-inset-top));left:32px;right:32px;display:flex;justify-content:space-between;align-items:center;z-index:5}.line-state,.sound{font-size:10px;letter-spacing:2px;text-transform:uppercase;display:flex;align-items:center;gap:10px;color:#d5d9c7}.status-dot{width:5px;height:5px;background:#b0de7e;border-radius:50%;box-shadow:0 0 9px #a3e979;animation:blink 2s infinite}.sound{background:#09140c44;border:1px solid #c5d6ae20;border-radius:30px;padding:10px 13px;letter-spacing:1.4px;backdrop-filter:blur(8px)}.sound svg{width:17px;height:17px}.cross{display:none}.muted .waves{display:none}.muted .cross{display:block}footer{position:absolute;bottom:max(27px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:12px;z-index:5;white-space:nowrap}#hint{font-family:Georgia,serif;font-style:italic;font-size:15px;color:#dddfced4;text-shadow:0 2px 8px #000}.call{display:flex;align-items:center;gap:11px;background:#15171ccb;border:1px solid #c7a2dc60;border-radius:40px;padding:16px 26px;font-size:11px;text-transform:uppercase;letter-spacing:2px;box-shadow:0 0 30px #a768ce12;backdrop-filter:blur(12px);transition:background .3s,box-shadow .3s,transform .3s}.call:hover{background:#302039df;box-shadow:0 0 32px #a768ce45;transform:translateY(-2px)}.call svg{width:17px;height:17px}.waveform{display:none;position:absolute;top:-30px;gap:3px;align-items:center;height:20px}.waveform i{width:2px;height:6px;background:#d1a2ef;animation:wave .7s ease-in-out infinite alternate}.waveform i:nth-child(2n){animation-delay:.2s}.waveform i:nth-child(3n){animation-delay:.4s}.connected .ring,.connected .phone-light{animation:none;opacity:0}.connected .phone-tag{opacity:0}.connected #hint{visibility:hidden}.connected.has-clip .waveform{display:flex}.connected .status-dot{animation:none;background:#c19bea}.connected .call{border-color:#c692d7a6}.dust{position:absolute;inset:0;pointer-events:none}.dust i{position:absolute;width:3px;height:3px;border-radius:50%;background:#bdce97;opacity:0;animation:drift 13s linear infinite;left:20%;top:60%}.dust i:nth-child(2){left:75%;top:62%;animation-delay:2s}.dust i:nth-child(3){left:53%;top:75%;animation-delay:6s}.dust i:nth-child(4){left:32%;top:40%;animation-delay:8s}.dust i:nth-child(5){left:82%;top:30%;animation-delay:4s}.dust i:nth-child(6){left:45%;top:60%;animation-delay:10s}@keyframes glow{0%,100%{opacity:.1}45%{opacity:.42}48%{opacity:.25}50%{opacity:.4}}@keyframes ringlight{0%,9%,20%,30%{opacity:.3}5%,15%,25%{opacity:1}40%,100%{opacity:.1}}@keyframes ringwave{0%,35%,100%{opacity:0;transform:scale(.85) rotate(-8deg)}5%,16%,27%{opacity:.55;transform:scale(1) rotate(-8deg)}10%,21%,32%{opacity:0;transform:scale(1.15) rotate(-8deg)}}@keyframes blink{50%{opacity:.3}}@keyframes wave{to{height:20px}}@keyframes drift{0%{opacity:0;transform:translate(0,0)}25%,75%{opacity:.3}100%{opacity:0;transform:translate(35px,-100px)}}
@media(max-width:650px) and (orientation:portrait){.stage{--art:url('assets/room-mobile-clean.webp')}.title-glow{mask-image:radial-gradient(ellipse 45% 14% at 50% 21%,#000 65%,transparent 100%)}.phone{left:4%;top:50%;width:38%;height:21%}.phone-light{left:1%;top:50%;width:42%;height:23%}.phone-tag{top:106%;font-size:9px}header{left:19px;right:19px;top:max(20px,env(safe-area-inset-top))}.line-state{font-size:8px;letter-spacing:1.5px}.sound{padding:10px}.sound span{display:none}footer{bottom:max(25px,env(safe-area-inset-bottom))}.call{padding:15px 24px;font-size:10px}#hint{font-size:14px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.title-glow{opacity:.2}.ring{opacity:.15}}

@media(max-width:650px) and (orientation:portrait){.stage{mask-image:linear-gradient(transparent,#000 6%,#000 92%,transparent)}#room{background:radial-gradient(ellipse at center,#213822,#08110c)}}

/* The receiver is a precisely aligned scene layer; the room and cradle stay still. */
.receiver{position:absolute;inset:0;background-image:var(--art);background-size:100% 100%;pointer-events:none;clip-path:polygon(26.7% 38%,30% 38%,35% 38.6%,39% 41%,43% 44%,44.2% 51%,44.7% 63.5%,42% 64%,36% 61.6%,32% 60%,28.2% 57%,27% 50%);transform-origin:36% 60%;will-change:transform}
.ringing .receiver{animation:receiver-shake .09s linear infinite}
@keyframes receiver-shake{0%,100%{transform:translate(.7px,-.4px) rotate(.6deg)}50%{transform:translate(-.7px,.4px) rotate(-.6deg)}}
@media(max-width:650px) and (orientation:portrait){.receiver{clip-path:polygon(7% 50%,12% 50.2%,20% 51.5%,28% 53.4%,34% 55%,36.9% 64.3%,34.5% 65%,29% 63.8%,20% 63.5%,12% 61.4%,8% 58%);transform-origin:24% 63%}.ringing .receiver{animation:receiver-shake .09s linear infinite}}
@media(prefers-reduced-motion:reduce){.ringing .receiver{animation:none!important}}

#room{transition:filter .6s ease,opacity .6s ease}
.awaiting-entry #room{filter:blur(9px);opacity:.28}
.awaiting-entry #room *{animation-play-state:paused!important}
.entry{position:fixed;inset:0;z-index:20;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 48%,#17211655,#040b08bb);transition:opacity .45s ease}
.entry[hidden]{display:none}.entry.leaving{opacity:0;pointer-events:none}
.entry-content{text-align:center;transform:translateY(-3vh)}
.entry-note{font:italic 22px Georgia,serif;color:#d7c6df;margin:0 0 27px;text-shadow:0 2px 16px #000}
.enter-button{padding:22px 42px 22px 48px;border:1px solid #b886d68c;background:#1f1429b3;box-shadow:0 0 45px #8e40ba25,inset 0 0 30px #8e40ba0a;border-radius:4px;font-size:15px;letter-spacing:7px;text-transform:uppercase;transition:background .2s,box-shadow .2s,transform .2s}
.enter-button span{display:inline-block;margin-left:19px;letter-spacing:0;color:#c896e8}.enter-button:hover{background:#392048;box-shadow:0 0 50px #9e4cce44;transform:translateY(-2px)}
.entry-sound{margin:23px 0 0;color:#b8bbaa;font-size:9px;letter-spacing:3px;text-transform:uppercase}
@media(prefers-reduced-motion:reduce){#room,.entry{transition:none}}

/* Render the shell's movement in the scene itself, without a stationary duplicate. */
#animated-room{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;display:none}
.rendered-receiver #animated-room{display:block}
.rendered-receiver .receiver{visibility:hidden}
.phone:focus-visible{outline:none}.phone:focus-visible .phone-tag{outline:2px solid #dab8ff;outline-offset:6px}
.ring,.phone-light{display:none!important}
.title-glow{clip-path:inset(0 0 60% 0)}
.ringing .receiver{animation:receiver-shake-visible .18s linear infinite}
@keyframes receiver-shake-visible{0%,100%{transform:translate(3px,-1px) rotate(2.5deg)}50%{transform:translate(-3px,1px) rotate(-2.5deg)}}
@media(max-width:650px) and (orientation:portrait){.title-glow{clip-path:inset(0 0 65% 0)}}

.coin-links{position:absolute;left:30px;bottom:max(27px,env(safe-area-inset-bottom));z-index:6;display:flex;align-items:center;gap:8px}
.copy-ca,.x-link{display:flex;align-items:center;justify-content:center;height:44px;border:1px solid #bca9c83d;background:#101a14c9;backdrop-filter:blur(12px);border-radius:24px;color:#d9d2df;text-decoration:none;transition:background .2s,border-color .2s}
.copy-ca{gap:12px;padding:0 16px}.ca-label{font-size:9px;letter-spacing:1.5px;color:#b495c9}.ca-short{font:11px ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.4px}.copy-ca svg{width:15px;height:15px;color:#bba4c9}.x-link{width:44px}.x-link svg{width:16px;height:16px}.copy-ca:hover,.x-link:hover{background:#302039df;border-color:#b998d67a;color:white}.x-link:focus-visible{outline:2px solid #dab8ff;outline-offset:5px}.copy-status{position:absolute;bottom:54px;left:0;font-size:10px;letter-spacing:1px;color:#e5d2ee;white-space:nowrap;text-shadow:0 2px 6px #000}.copy-ca.copied{border-color:#c69ce0}.ca-manual{position:absolute;bottom:51px;left:0;width:min(360px,90vw);padding:10px;background:#18231b;border:1px solid #b998d6;color:#fff;border-radius:5px;font-size:11px}
@media(max-width:1000px){.coin-links{left:20px;bottom:max(18px,env(safe-area-inset-bottom))}footer{bottom:83px}.copy-ca,.x-link{height:40px}.x-link{width:40px}}
@media(max-width:650px) and (orientation:portrait){.coin-links{left:50%;transform:translateX(-50%);bottom:max(18px,env(safe-area-inset-bottom));gap:8px}footer{bottom:max(86px,calc(env(safe-area-inset-bottom) + 68px))}.copy-status{left:50%;transform:translateX(-50%);bottom:47px}.copy-ca{padding:0 14px}.ca-manual{left:50%;transform:translateX(-50%)}#hint{font-size:13px}}

#shell-receiver{position:absolute;left:26.5%;top:38%;width:18%;height:25%;object-fit:fill;pointer-events:none;transform-origin:43% 84%;will-change:transform;z-index:1;filter:brightness(.92)}
#phone-cord{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:0}
#phone-cord path{fill:none;stroke-linecap:round;stroke-linejoin:round}.cord-outline{stroke:#21152f;stroke-width:10}.cord-body{stroke:#bc99db;stroke-width:6.5}.cord-shine{stroke:#eddaff;stroke-width:2;transform:translate(-1px,-1px)}
.cradle-front{position:absolute;inset:0;background-image:var(--art);background-size:100% 100%;clip-path:polygon(32.1% 54.7%,33.6% 54.7%,34% 61.5%,31.4% 61.5%);pointer-events:none;z-index:1}
@media(max-width:650px) and (orientation:portrait){#shell-receiver{left:6.8%;top:50.5%;width:30%;height:14.2%}.cradle-front{clip-path:polygon(16% 59.5%,18.7% 59.5%,19.8% 63.9%,14.7% 63.9%)}}
.coin-links{width:max-content}.copy-ca,.ca-short{white-space:nowrap}.copy-ca,.x-link{flex-shrink:0}

/* Isolate the existing red outlines and softly illuminate them without moving the artwork. */
.title-red-glow{position:absolute;inset:0;background-image:var(--art);background-size:100% 100%;filter:url('#red-letter-glow');mix-blend-mode:screen;mask-image:radial-gradient(ellipse 26% 23% at 35% 22%,#000 65%,transparent 100%);clip-path:inset(0 40% 54% 8%);opacity:.48;animation:red-letter-pulse 4s ease-in-out infinite;pointer-events:none}
@keyframes red-letter-pulse{0%,100%{opacity:.38}50%{opacity:.58}}
@media(max-width:650px) and (orientation:portrait){.title-red-glow{mask-image:radial-gradient(ellipse 45% 14% at 50% 21%,#000 65%,transparent 100%);clip-path:inset(0 0 65% 0)}}
@media(prefers-reduced-motion:reduce){.title-red-glow{animation:none;opacity:.48}}
