:root{--paper:#f4f2eb;--ink:#434936}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,sans-serif}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible{outline:2px solid #c2d98b;outline-offset:7px}[hidden]{display:none!important}#entrance{height:100svh;min-height:500px;display:grid;place-items:center;overflow:hidden;background:radial-gradient(ellipse at 50% 55%,#fffef7,#f1efe7 70%)}#cabinet{background:none;border:0;width:min(950px,100vw);padding:0;animation:invite 2.2s ease-in-out infinite;transform-origin:50% 62%}#cabinet img{display:block;width:100%;mix-blend-mode:multiply}#cabinet:hover{animation:none;transform:translateY(-6px) rotate(-2deg)}#opening{width:min(950px,100vw);mix-blend-mode:multiply}.icon{border:1px solid #ffffff45;background:#20261955;color:#fff;border-radius:50%;width:42px;height:42px;font-size:24px;display:grid;place-items:center;z-index:8;backdrop-filter:blur(12px)}.skip{position:absolute;bottom:30px;right:30px;background:#46543b}.back{position:absolute;top:25px;left:25px}#world{position:relative;min-height:100svh;overflow:hidden;background:#18271d}.dream-background{position:absolute;inset:-10%;width:120%;height:120%;object-fit:cover;filter:blur(28px) brightness(.48) saturate(.6);opacity:.7}.veil{position:absolute;inset:0;background:radial-gradient(ellipse at 45% 38%,#ccd28025,transparent 60%),linear-gradient(0deg,#0d1c19aa,transparent 60%)}#scenes{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 45px;max-width:1140px;margin:0 auto;padding:95px 65px 150px;align-items:center;min-height:100svh}.scene-card{position:relative;aspect-ratio:1.65;border:1px solid #e9eddc50;background:#e8e4d7;padding:6px;box-shadow:0 18px 45px #0005;transform:rotate(var(--tilt));transition:transform .4s,box-shadow .4s;animation:float 8s ease-in-out infinite;animation-delay:var(--delay);overflow:hidden}.scene-card:nth-child(3n+2){margin-top:35px}.scene-card:hover,.scene-card:focus-visible{animation-play-state:paused;transform:rotate(0deg) scale(1.06);box-shadow:0 20px 70px #d7ed9960;z-index:2}.scene-card img{width:100%;height:100%;object-fit:cover;display:block;object-position:var(--position,50% 50%);filter:saturate(.8);transition:filter .4s}.scene-card:hover img{filter:saturate(1.1)}.scene-card.cover-detail img{position:absolute;width:220%;height:220%;max-width:none;left:var(--crop-x,-50%);top:var(--crop-y,-60%);object-fit:cover}.scene-card span{position:absolute;bottom:0;left:0;right:0;padding:28px 12px 12px;background:linear-gradient(transparent,#142019cb);color:#fff;font-family:Georgia,serif;font-size:14px;opacity:0;transition:opacity .3s}.scene-card:hover span,.scene-card:focus-visible span{opacity:1}.scene-card.active{border-color:#d5e6a2;box-shadow:0 0 0 2px #d5e6a260,0 20px 45px #0006}#screen{position:absolute;inset:0;z-index:4;display:grid;place-items:center;background:#0d1718e8;padding:65px 60px 130px;animation:appear .6s}#screen #close-screen{position:absolute;right:25px;top:25px}#screen video,#screen img{width:100%;height:100%;max-width:1150px;max-height:calc(100svh - 195px);object-fit:contain;filter:drop-shadow(0 0 45px #c8cb7425)}#screen img{animation:breathe 20s ease-in-out infinite alternate}.scene-shadow{pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 110px #0004}#player{position:fixed;bottom:0;left:0;right:0;z-index:10;background:#11211cce;color:#e6e8d8;border-top:1px solid #ffffff18;backdrop-filter:blur(22px);display:flex;align-items:center;gap:25px;padding:20px 5%;min-height:92px}.now-info{width:245px;min-width:0;display:flex;align-items:center;gap:14px}#track-number{font-size:10px;opacity:.5}#now-title{font-family:Georgia,serif;font-size:16px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.transport{display:flex;align-items:center;gap:12px}.transport button{background:none;border:0;color:inherit;padding:10px}#play{border:1px solid #ffffff55;width:42px;height:42px;border-radius:50%}.progress{display:flex;align-items:center;gap:12px;flex:1;font-size:10px;color:#c2caba}input{min-width:40px;width:100%;accent-color:#bfcd8b}#overview{font-size:23px}#status{position:fixed;left:50%;bottom:115px;transform:translateX(-50%);z-index:20;color:white;background:#293c2f;border-radius:20px;font-size:12px;text-align:center}#status:not(:empty){padding:12px 20px}@keyframes invite{0%,48%,100%{transform:rotate(0deg) translateY(0)}56%{transform:rotate(-2deg) translateY(-3px)}64%{transform:rotate(1.7deg) translateY(-1px)}72%{transform:rotate(-1.5deg) translateY(-2px)}80%{transform:rotate(1deg)}88%{transform:rotate(0deg)}}@keyframes float{0%,100%{translate:0 0}50%{translate:0 -8px}}@keyframes breathe{from{transform:scale(.97)}to{transform:scale(1.025)}}@keyframes appear{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@media(max-width:700px){#entrance{min-height:450px}#cabinet,#opening{width:145vw;max-width:none}#scenes{grid-template-columns:repeat(2,minmax(0,1fr));gap:27px 20px;padding:95px 25px 170px}.scene-card{aspect-ratio:1.2}.scene-card:nth-child(3n+2){margin-top:0}.scene-card:nth-child(even){margin-top:25px}.scene-card span{font-size:12px}#screen{position:fixed;padding:75px 15px 150px}#screen img,#screen video{max-height:calc(100svh - 225px)}#player{flex-wrap:wrap;gap:12px;padding:14px 5%}.now-info{flex:1;width:130px}#now-title{font-size:14px}.transport{gap:2px}.progress{order:5;flex-basis:100%}#overview{width:34px;height:34px}#status{bottom:145px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Composite the whole moving cabinet, so its white canvas disappears too. */
#cabinet{mix-blend-mode:multiply}#cabinet img{mix-blend-mode:normal}
#world:not([hidden]){animation:reveal-world 2.8s ease-out both}
#world:has(#screen[hidden])>.back{visibility:hidden}
@keyframes reveal-world{from{opacity:0;filter:blur(12px)}to{opacity:1;filter:blur(0)}}
@media(prefers-reduced-motion:reduce){#world:not([hidden]){animation:none}}

/* The source frame has a thin edge: clip the empty margin, not the artwork. */
#cabinet img{clip-path:inset(3%);border:0;box-shadow:none}
#cabinet{border:0;box-shadow:none}
.restart{position:absolute;right:25px;top:25px}
#world:has(#screen:not([hidden]))>.restart{visibility:hidden}
#scene-image{animation:none!important}

#entrance{position:relative}.album-heading{position:absolute;top:12%;left:0;right:0;text-align:center;pointer-events:none;z-index:1}.album-heading h1{font-family:Georgia,serif;font-size:clamp(28px,4vw,48px);font-weight:400;letter-spacing:1px;margin:0}.album-heading p{font-size:12px;letter-spacing:3px;margin:18px 0 0;color:#777c6b}#opening{clip-path:inset(3%);border:0;outline:0;box-shadow:none}#entrance:has(#opening:not([hidden])) .album-heading{opacity:0;transition:opacity 1.5s}@media(max-width:700px){.album-heading{top:16%}.album-heading h1{font-size:30px}}

/* Opening video has its baked-in letterbox and source borders removed. */
#opening{clip-path:inset(1px);aspect-ratio:624/344;height:auto}

/* Keep fallback text and collapsed image boxes out of the entrance. */
#cabinet img{height:auto}#cabinet:not(.ready){visibility:hidden;animation:none}#opening{background:transparent}
