/* Festival colours are accents around the black-and-white identity. */
.mass-site { --festival-pink:#f5a4d1; --festival-violet:#b59af2; --festival-gold:#ffdb85; }
.mass-home .home-button.button-light { background:var(--festival-gold); color:#201720; border-color:transparent; }
.mass-home .home-button.button-light:hover { background:var(--festival-pink); box-shadow:0 9px 35px #ed7bb72a; }
.mass-home .hero-content h1 em { text-shadow:0 0 65px #ec8ac824; }
.mass-home .live-dot { background:var(--festival-gold); box-shadow:0 0 0 5px #ffdb8520; animation:celebration-pulse 3s ease-in-out infinite; }
.mass-home .home-intro .asterisk { color:#a552a3; animation:celebration-turn 24s linear infinite; transform-origin:center; align-self:flex-start; }
.mass-home .intro-copy h2 em { background:linear-gradient(transparent 76%,#f5bddc 76%,#f5bddc 94%,transparent 94%); }
.mass-home .home-experiences { background:radial-gradient(ellipse at 100% 0,#52355855,transparent 55%),#121412; }
.mass-home .home-experiences .section-heading em { color:var(--festival-pink); }
.mass-home .experience-card>img { filter:saturate(.95); }
.mass-home .experience-card:hover .card-arrow,.mass-home .experience-card:focus-visible .card-arrow { background:var(--festival-pink); color:#251225; border-color:var(--festival-pink); }
.mass-home #panel-celebrations .experience-card:hover .card-arrow { background:var(--festival-gold); border-color:var(--festival-gold); }
.mass-home #panel-production .experience-card:hover .card-arrow { background:var(--festival-violet); border-color:var(--festival-violet); }
.mass-home .client-logos img { transition:filter .3s,opacity .3s,transform .3s; }
.mass-home .client-logos img:hover { filter:grayscale(0); opacity:1; transform:translateY(-3px); }
.mass-home .work-copy .outline-star { color:#9661b7; }
.mass-home .home-process { background:linear-gradient(120deg,#eee7f5,#f2eee5); }
.mass-home .process-steps details[open] .step-num { color:#77448c; }
.mass-home .process-steps details[open] .step-toggle { background:#dec9ef; border-color:#ceb0e6; }
.mass-home .quote-mark { color:#a55a9a; }
.mass-home .quote-line { background:#b270a7; height:2px; }
.mass-home .quote-controls button:hover { background:#bda1ed; border-color:#bda1ed; color:#201720; }
.mass-home .home-finale { background:#18111e; }
.mass-home .finale-glow { filter:saturate(.8); opacity:.23; }
.mass-home .finale-content h2 em { background:linear-gradient(105deg,#f3a7cf 5%,#c3acf4 55%,#ffe2a0); -webkit-background-clip:text; background-clip:text; color:transparent; }
.mass-home .home-finale::before { content:''; width:35vw; height:35vw; max-width:600px; max-height:600px; position:absolute; top:-20%; right:-10%; border-radius:50%; background:radial-gradient(circle,#955e9825,transparent 68%); pointer-events:none; animation:celebration-drift 12s ease-in-out infinite alternate; }
.mass-site .home-footer { border-top:1px solid #b79bb43d; }
.mass-site .footer-grid a:hover { color:var(--festival-pink)!important; }
.celebration-ribbon { position:relative; overflow:hidden; padding:23px 0; background:#ead8ec; color:#302036; border-block:1px solid #30203615; }
.ribbon-track { display:flex; width:max-content; animation:celebration-ribbon 38s linear infinite; }
.ribbon-copy { min-width:100vw; justify-content:space-around; }
.ribbon-copy { display:flex; align-items:center; flex-shrink:0; gap:38px; padding-right:38px; white-space:nowrap; font-size:19px; letter-spacing:-.4px; }
.ribbon-copy b { font-family:Georgia,serif; font-weight:400; font-size:27px; color:#884e85; }
.ribbon-copy em { font-size:23px; }
@keyframes celebration-ribbon { to { transform:translateX(-50%); } }
@keyframes celebration-turn { to { transform:rotate(360deg); } }
@keyframes celebration-pulse { 50% { box-shadow:0 0 0 9px #ffdb8508; } }
@keyframes celebration-drift { to { transform:translate(-20%,25%) scale(1.15); } }

@media(max-width:600px) { .ribbon-copy { font-size:15px; gap:24px; padding-right:24px; } .ribbon-copy em { font-size:19px; } }
@media(prefers-reduced-motion:reduce) { .ribbon-track { animation:none; } }
