Five masks.
One star

    M⭐VT is a mysterious VTuber idol group.
    Debut 2026.11.01.

    For business inquiries: [email protected].

    © 2025 M⭐VT

    (()=> { const SAVE_KEY="mvt_seen_v1"; const MEMBERS=[ {k:"ash", name:"Ash"}, {k:"mika", name:"Mika"}, {k:"yulia", name:"YULIA"}, {k:"rei", name:"Rei"}, {k:"alice", name:"Alice"} ]; let seen={}; try{seen=JSON.parse(localStorage.getItem(SAVE_KEY)||"{}")}catch(e){seen={}} const $=id=>document.getElementById(id); const overlay=$("mvtOverlay"), text=$("mvtText"), img=$("mvtImg"), opts=$("mvtOpts"), sub=$("mvtSub"), chips=$("mvtChips"); function save(){ try{localStorage.setItem(SAVE_KEY,JSON.stringify(seen))}catch(e){} } function count(){ return MEMBERS.reduce((n,m)=> n+(seen[m.k]?1:0),0); } function renderChips(){ chips.innerHTML=""; MEMBERS.forEach(m=>{ const d=document.createElement("div"); d.className="mvtChip"+(seen[m.k]?" mvtOn":""); d.textContent=m.name; chips.appendChild(d); }); } function closeToHome(){ overlay.style.display="none"; try{ history.replaceState(null,"",location.pathname+location.search); }catch(e){ location.hash=""; } try{ window.scrollTo({top:0,behavior:"smooth"}); }catch(e){ window.scrollTo(0,0); } } const S={ start:{ sub:"you clicked the logo. the logo clicked back.", t:`Your cursor taps the M⭐VT logo. OW! Hey! That tickles! The star jitters like it has nerves. A tiny voice huffs through your speakers. Okay, you can hear me. That means you are early, or nosy, or both. Either way, welcome. A neon hallway flickers into existence behind the logo like the site just grew a backstage. If you step in, you are responsible for what you find.`, o:[["Step into the studio","hall"],["Back away slowly","__close"]] }, hall:{ sub:"five doors. one star. the countdown hums.", t:()=> { const n=count(); return `You stand in a corridor that should not exist inside a website. It smells like ozone, perfume, and the confidence of girls about to change the room just by walking into it. Five doors wait. Each leaks a different sound. 1) Bass vibration and the snap of a pick 2) J rock guitar and a lucky bell 3) Brass gears and a bartender's shaker 4) Y2K glitter, pop hooks, and a tipsy laugh 5) Swing jazz with clinical calm and something sharp underneath Visits: ${n}/5 ${n===5?"\nA star shaped door shimmers at the end of the hall.\n":"\nVisit all five doors to unlock the star door.\n"}`; }, o:()=> { const o=[["Door 1 Ash Stereo","ash"],["Door 2 Mika Maneki","mika"],["Door 3 YULIA","yulia"],["Door 4 Rei Phomét","rei"],["Door 5 Alice Asclepius","alice"]]; if(count()===5) o.unshift(["Star Door unlocked","star"]); o.push(["Close game","__close"]); return o; } }, ash:{ sub:"Ash Stereo", t:`The door opens to heat and noise. Cables coil like living things. Stickers plaster every surface. A battered flight case reads RETURN TO CHAOS in sharpie. A bass leans against an amp that looks like it has survived three wars and won all of them. Ash Stereo is mid tune. Her eyes cut to you like a stage light. You lost or you ready? She steps closer, grin bright and dangerous. I do not play background music. I play warnings. I play courage. I play the moment someone decides they are done shrinking. You reach for the bass. It is heavier than you expect. Like it is carrying every bad day you lived through. You pluck one note. The room answers. Your ribs feel it. Ash nods like you passed a test. Good. When you are scared, play anyway. When you are angry, play cleaner. When you are proud, play louder. And if someone tells you to be quiet, that is when you turn the amp up.`, r:"ash", o:[["Back to hallway","hall"],["Close game","__close"]] }, mika:{ sub:"Mika Maneki", t:`A bell chimes as the door opens. The room is a practice cave turned stage shrine. Picks in jars, posters, setlists, little charms everywhere. A maneki charm watches you like it is judging your posture. Mika Maneki pops up with the energy of a chorus hitting early. WELCOME. You want luck, vibes, or a riff that makes you believe in yourself again? She presses a small bell into your hand and points at the stage corner like it is sacred. Ring it. No overthinking. You do. The sound is bright and clean, like the world resetting one tiny notch toward hope. Mika laughs, softer than her hair suggests. Luck is not random. Luck is ritual. Luck is tying your shoes anyway. Luck is hitting upload anyway. Luck is showing up even when you feel unready. People think confidence is a gift. Nah. It is a habit. She lifts a guitar and strums a chord that lands right in your chest. If you have ever felt like you did not belong, borrow my luck until yours comes back.`, r:"mika", o:[["Back to hallway","hall"],["Close game","__close"]] }, yulia:{ sub:"YULIA", t:`The door opens without a sound. Brass gears turn behind frosted glass. A bar counter gleams under neon. A shaker clicks in perfect rhythm. A wind up key rests beside a cassette deck. The whole room feels like late night city pop bottled into a place. YULIA stands polishing a glass, elegant and unhurried. Not circuits. Not wires. Pure clockwork grace. Welcome, she says. You found the bar between scenes. Here, performers come when they need to breathe before they become themselves again. She slides you a drink with a citrus note and a sugar edge. She does not ask if you deserve it. She serves it like a promise. I tend bar for feelings, YULIA says. Some people need sparkle. Some people need silence. Some people need to remember they are allowed to start over. She turns a key in her own back with a quiet click. The gears hum. The neon steadies like a heartbeat. For a moment, time behaves. If you ever feel like you must be perfect, she says, take this instead. Be consistent. Be kind. Be here.`, r:"yulia", o:[["Back to hallway","hall"],["Close game","__close"]] }, rei:{ sub:"Rei Phomét", t:`The door opens to glitter and a buzz like an old TV. A CRT hums. A flip phone sits beside a pager. Stickers everywhere. A half finished cocktail sweats on the table like it is also nervous. Rei Phomét lounges like a pop idol who survived heartbreak and turned it into a hook. Her eyeliner is perfect. Her smile is not pretending. Oh hi, Rei says, voice sweet and slightly slurred. You look like you have a crack in your screen. Wanna see it shine? She taps the pager. It beeps. The message reads: YOU MADE IT. KEEP GOING. Rei laughs and points at you like you are in the music video. Cute is not weakness. Cute is camouflage. And the cracks are where the light leaks out. She takes a sip, then immediately regrets it, then grins anyway. Look, sometimes I am a mess. Sometimes I am a masterpiece. Usually I am both. If you feel messy, good. That means you are real. Now drink some water, text your bestie, and go be iconic.`, r:"rei", o:[["Back to hallway","hall"],["Close game","__close"]] }, alice:{ sub:"Alice Asclepius", t:`The door opens like a curtain reveal. Velvet shadows. Swing jazz snapped to electric bass. A clinic bag sits beside a record player. Sterile tools and gold trim share the same shelf, somehow both feeling correct. Alice Asclepius turns toward you with calm, clinical certainty. Her gaze says she has seen fear up close and still chose elegance. Hello, darling. Tell me. Are you searching for truth, or permission? She checks your pulse with two fingers, professional and gentle. Diagnosis: stage fever. Prognosis: survivable. Treatment: take up space. The music shifts. Swing. Voltage. Swing again. Alice tilts her head like she is listening to your heartbeat and the beat at the same time. Duality is not confusion. It is range. You can be soft and sharp. You can be healing and dangerous. You can stop apologizing for the parts of you that keep you alive.`, r:"alice", o:[["Back to hallway","hall"],["Close game","__close"]] }, star:{ sub:"five visits complete", t:`The corridor lights change. A star shaped door solidifies at the end of the hall, pulsing like it is breathing. It unlocks with a soft click, like a promise. Inside, two lines hover in the dark. FIVE MASKS. ONE STAR. M⭐VT debuts 2026.11.01. A final message flickers, playful and gentle. Bring someone with you next time.`, o:[["Back to hallway","hall"],["Close game","__close"]] } }; function go(id){ if(id==="__close"){ closeToHome(); return; } const n=S[id]||S.hall; img.style.display="none"; img.removeAttribute("src"); if(id==="star"){ img.src="https://i.imgur.com/Bx4DuCA.png"; img.style.display="block"; } if(n.r && !seen[n.r]){ seen[n.r]=true; save(); } renderChips(); sub.textContent = n.sub||""; text.textContent = typeof n.t==="function"?n.t():n.t; opts.innerHTML=""; const arr = typeof n.o==="function"?n.o():n.o; arr.forEach(([label,next])=>{ const b=document.createElement("button"); b.type="button"; b.className="mvtBtn"; b.textContent=label; b.onclick=()=>go(next); opts.appendChild(b); }); } function open(){ overlay.style.display="flex"; renderChips(); go("start"); } $("mvtClose").onclick=closeToHome; overlay.addEventListener("click",e=>{ if(e.target===overlay) closeToHome(); }); $("mvtReset").onclick=()=>{ seen={}; save(); renderChips(); go("start"); }; function trigger(){ if((location.hash||"").toLowerCase()==="#mvt-secret") open(); } addEventListener("hashchange",trigger); trigger(); })();