/* The Purrcade — Cat House Meow handheld */
:root{
  --night:#140a26; --ink:#06030b; --plum:#2a1245; --sakura:#ff6fb5; --lilac:#b79cff;
  --eye:#ffd84d; --mint:#7cf5d3; --cream:#fbefff; --dim:#a993c9;
  --px:"Press Start 2P",ui-monospace,Menlo,monospace;
  --dot:"DotGothic16","Hiragino Sans","Yu Gothic",system-ui,sans-serif;
  --sat:env(safe-area-inset-top,0px); --sab:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body.chp-body{margin:0;height:100%;background:var(--ink);overflow:hidden;overscroll-behavior:none}
body.chp-body{font-family:var(--dot);color:var(--cream);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
button:focus-visible,a:focus-visible{outline:2px solid var(--eye);outline-offset:2px}
img{-webkit-user-drag:none}
.chp-boot{position:fixed;inset:0;display:grid;place-items:center;font-size:40px;animation:chpPulse 1s infinite alternate}
@keyframes chpPulse{to{opacity:.3;transform:scale(.9)}}

/* ---------- handheld shell (phone default) ---------- */
#chp{position:fixed;inset:0;height:100dvh}
.shell{position:absolute;inset:0;display:flex;flex-direction:column;background:
  radial-gradient(120% 60% at 50% 0%,#24113f 0%,var(--ink) 60%);padding-top:var(--sat)}
.cab-top,.cab-keys{display:none}
.bezel{position:relative;flex:1;min-height:0;margin:6px 6px 0;padding:6px;border-radius:22px 22px 14px 14px;
  background:linear-gradient(160deg,#1b0f2e,#08040f);box-shadow:inset 0 0 0 1px #3a2260,0 0 0 1px #000}
.bezel::before,.bezel::after{content:"";position:absolute;top:-9px;width:30px;height:18px;background:#3a2260;
  clip-path:polygon(50% 0,100% 100%,0 100%);box-shadow:inset 0 0 0 1px #3a2260}
.bezel::before{left:26px}.bezel::after{right:26px}
.lcd{position:relative;width:100%;height:100%;border-radius:16px 16px 10px 10px;overflow:hidden;background:var(--night);isolation:isolate}
.lcd::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:50;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 3px);mix-blend-mode:overlay}

.deck{flex:none;height:calc(86px + var(--sab));padding:8px 18px calc(8px + var(--sab));display:flex;align-items:center;justify-content:space-between;gap:12px}
.grille{display:grid;grid-template-columns:repeat(4,6px);gap:5px;transform:rotate(-24deg);opacity:.7}
.grille i{width:6px;height:6px;border-radius:50%;background:#2c1a45;box-shadow:inset 0 1px 1px #000}
.brand{font-family:var(--px);font-size:8px;color:var(--dim);letter-spacing:.5px;line-height:1.6}
.brand b{display:block;color:var(--sakura);font-size:9px}
.btn-start{height:26px;padding:0 16px;border-radius:13px;background:#2c1a45;font-family:var(--px);font-size:8px;color:var(--lilac);
  box-shadow:0 3px 0 #000,inset 0 1px 0 rgba(255,255,255,.12)}
.ab{display:flex;gap:12px;align-items:flex-start;transform:rotate(-14deg);height:60px}
.btn-a,.btn-b{position:relative;width:46px;height:46px;border-radius:50%;font-family:var(--px);font-size:11px;color:var(--ink);
  background:radial-gradient(circle at 35% 30%,#fff3a8,var(--eye) 45%,#c99a00);box-shadow:0 4px 0 #6b4f00,0 6px 14px rgba(255,216,77,.25)}
.btn-b{margin-top:12px}
.btn-a::before,.btn-b::before{content:"";position:absolute;left:50%;top:50%;width:7px;height:34px;border-radius:50%;background:rgba(6,3,11,.82);transform:translate(-50%,-50%)}
.btn-a span,.btn-b span{position:absolute;left:50%;bottom:-17px;transform:translateX(-50%) rotate(14deg);font-size:8px;color:var(--lilac)}
.pressed,.btn-a:active,.btn-b:active,.btn-start:active{transform:translateY(3px);box-shadow:0 1px 0 #000}

/* ---------- views ---------- */
.view{position:absolute;inset:0;display:none}
.view.on{display:block}
.photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:var(--plum)}
.ph-empty{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(circle,var(--plum),var(--night))}
.ph-empty .noir{width:46%;max-width:180px}

/* title */
#v-title .photo{animation:kb 18s ease-in-out infinite alternate;transform-origin:50% 30%}
@keyframes kb{from{transform:scale(1.05)}to{transform:scale(1.18) translateY(-2%)}}
#v-title .shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,10,38,.1) 30%,rgba(20,10,38,.92) 78%)}
.title-wrap{position:absolute;left:0;right:0;bottom:0;padding:0 22px 28px;text-align:center}
.title-wrap .noir{width:84px;margin:0 auto -6px;display:block;filter:drop-shadow(0 0 12px rgba(255,111,181,.6))}
.logo{font-family:var(--px);font-size:clamp(20px,7vw,30px);line-height:1.25;margin:6px 0 8px;color:var(--cream);
  text-shadow:3px 3px 0 var(--sakura),6px 6px 0 rgba(183,156,255,.6)}
.tagline{font-size:15px;color:var(--lilac);margin:0 0 18px}
.press{font-family:var(--px);font-size:11px;color:var(--eye);animation:blink 1.1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.age{margin:16px auto 0;max-width:30ch;font-size:12px;line-height:1.5;color:var(--dim)}

/* feed */
#v-feed{touch-action:none;overflow:hidden}
.slide{position:absolute;inset:0;transition:transform .42s cubic-bezier(.2,.8,.2,1);will-change:transform}
.dragging .slide{transition:none}
.slide .shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,10,38,.55) 0,transparent 22%,transparent 48%,rgba(20,10,38,.95) 88%)}
.info{position:absolute;left:16px;right:74px;bottom:20px}
.cart{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:6px;background:rgba(6,3,11,.6);border:1px solid var(--lilac);font-size:13px;color:var(--lilac)}
.info h2{font-family:var(--px);font-size:clamp(15px,5vw,20px);line-height:1.35;margin:10px 0 6px;text-shadow:2px 2px 0 var(--ink)}
.info p{font-size:15px;line-height:1.45;margin:0 0 14px;color:var(--cream);max-width:34ch}
.play{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:12px;background:var(--sakura);color:var(--ink);font-family:var(--px);font-size:12px;box-shadow:0 4px 0 #9c2f69}
.play:active{transform:translateY(3px);box-shadow:0 1px 0 #9c2f69}
.rail{position:absolute;right:10px;bottom:28px;display:flex;flex-direction:column;gap:14px;align-items:center}
.rail button,.rail a{width:48px;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10px;color:var(--cream);text-decoration:none;text-shadow:0 1px 2px #000}
.rail .ico{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:20px;background:rgba(6,3,11,.55);border:1px solid rgba(183,156,255,.5)}
.rail .fav.on .ico{background:var(--sakura);border-color:var(--sakura)}
.hud{position:absolute;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;gap:8px;padding:10px 12px;pointer-events:none}
.hud>*{pointer-events:auto}
.pill{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border-radius:15px;background:rgba(6,3,11,.62);border:1px solid rgba(183,156,255,.35);font-family:var(--px);font-size:9px}
.hud .grow{flex:1}
a.pill{color:var(--cream);text-decoration:none}
.hud .nm{font-family:var(--px);font-size:9px;color:var(--sakura)}
.swipe-hint{position:absolute;left:50%;bottom:120px;transform:translateX(-50%);z-index:5;font-size:13px;padding:6px 12px;border-radius:99px;background:rgba(6,3,11,.6);animation:hint 1.6s ease-in-out infinite;pointer-events:none}
@keyframes hint{50%{transform:translate(-50%,-10px)}}
.dots{position:absolute;right:3px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px;z-index:4}
.dots i{width:3px;height:10px;border-radius:2px;background:rgba(251,239,255,.25)}
.dots i.on{background:var(--sakura);height:18px}

/* game */
#v-game{background:var(--night)}
.gbar{position:absolute;top:0;left:0;right:0;height:46px;z-index:10;display:flex;align-items:center;gap:8px;padding:0 10px;background:linear-gradient(180deg,rgba(6,3,11,.85),rgba(6,3,11,0))}
.gbar .back{width:34px;height:34px;border-radius:10px;background:rgba(42,18,69,.9);font-size:16px}
.gbar .gt{flex:1;font-family:var(--px);font-size:9px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gbar .gt small{display:block;font-family:var(--dot);font-size:12px;color:var(--lilac)}
.stage{position:absolute;inset:0;overflow:hidden;touch-action:none}
.stage canvas{display:block;width:100%;height:100%}
.pad{padding:54px 14px 14px;height:100%;display:flex;flex-direction:column;gap:10px}

/* overlays */
.ovl{position:absolute;inset:0;z-index:40;display:grid;place-items:center;padding:18px;background:rgba(10,4,20,.72);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.card{position:relative;width:min(100%,360px);max-height:100%;overflow:auto;padding:22px 18px 18px;border-radius:18px;background:linear-gradient(170deg,#2a1245,#170a2a);border:2px solid var(--lilac);box-shadow:0 0 0 4px var(--ink),0 16px 40px rgba(0,0,0,.6);text-align:center}
.card h3{font-family:var(--px);font-size:14px;line-height:1.5;margin:4px 0 10px;color:var(--eye)}
.card p{font-size:15px;line-height:1.55;margin:0 0 12px}
.card .noir{width:64px;display:block;margin:-6px auto 4px}
.card .x{position:absolute;top:8px;right:8px;width:36px;height:36px;border-radius:50%;font-size:18px;background:rgba(6,3,11,.5)}
.card .row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;padding:0 16px;border-radius:11px;background:#3a1d5e;border:1px solid var(--lilac);font-size:15px;color:var(--cream);text-decoration:none}
.btn.hot{background:var(--sakura);border-color:var(--sakura);color:var(--ink);font-weight:700}
.btn.gold{background:var(--eye);border-color:var(--eye);color:var(--ink)}
.card .how{text-align:left;font-size:15px;line-height:1.6;margin:0 0 10px;padding-left:18px}
.card .kb{font-size:12px;color:var(--dim)}
.tap-note{font-size:12px;color:var(--dim);margin-top:10px}
.code{font-family:var(--px);font-size:16px;letter-spacing:2px;padding:12px;border-radius:10px;background:var(--ink);border:2px dashed var(--eye);color:var(--eye);margin:8px 0;user-select:all;-webkit-user-select:all}
.toast{position:absolute;left:50%;top:56px;z-index:60;transform:translateX(-50%);padding:8px 14px;border-radius:10px;background:var(--ink);border:1px solid var(--sakura);font-size:14px;white-space:nowrap;animation:toast 2.2s forwards;pointer-events:none}
@keyframes toast{0%{opacity:0;transform:translate(-50%,-8px)}10%,80%{opacity:1;transform:translate(-50%,0)}100%{opacity:0}}
.seq{position:absolute;left:50%;top:10px;z-index:61;transform:translateX(-50%);padding:6px 12px;border-radius:8px;background:rgba(6,3,11,.85);border:1px solid var(--eye);font-family:var(--px);font-size:11px;color:var(--eye);letter-spacing:3px;pointer-events:none}
.rotate{display:none}
@media (orientation:landscape) and (max-height:520px) and (pointer:coarse){
  .rotate{position:fixed;inset:0;z-index:999;display:grid;place-items:center;text-align:center;background:var(--night);font-size:16px;padding:20px}
}

/* ---------- shared game bits ---------- */
.keys{display:grid;grid-template-columns:repeat(10,1fr);gap:4px}
.keys button{height:38px;border-radius:7px;background:#2c1a45;font-family:var(--px);font-size:11px;box-shadow:0 2px 0 #000}
.keys button.used{opacity:.25}
.keys button.hit{background:var(--mint);color:var(--ink)}
.keys button.wide{grid-column:span 2;font-size:9px}
.lives{display:flex;gap:3px;justify-content:center;font-size:16px}
.lives .lost{filter:grayscale(1);opacity:.25}
.reveal{position:relative;flex:1;min-height:120px;border-radius:14px;overflow:hidden;background:var(--plum)}
.reveal .tiles{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}
.reveal .tiles i{background:linear-gradient(135deg,#2a1245,#140a26);border:1px solid #3a2260;display:grid;place-items:center;font-style:normal;font-size:22px;transition:opacity .5s,transform .5s}
.reveal .tiles i.off{opacity:0;transform:scale(.6)}
.phrase{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;min-height:40px}
.phrase .w{display:flex;gap:3px}
.phrase b{width:24px;height:32px;border-bottom:3px solid var(--lilac);display:grid;place-items:center;font-family:var(--px);font-size:13px}
.qhost{display:flex;gap:10px;align-items:center}
.qhost .av{width:56px;height:56px;border-radius:50%;overflow:hidden;flex:none;position:relative;border:2px solid var(--sakura)}
.bubble{flex:1;padding:10px 12px;border-radius:12px;background:#2a1245;border:1px solid var(--lilac);font-size:15px;line-height:1.45}
.opts{display:grid;gap:8px}
.opts button{min-height:46px;padding:8px 12px;border-radius:11px;background:#2c1a45;border:1px solid #4a2c76;font-size:16px;text-align:left}
.opts button.ok{background:var(--mint);color:var(--ink)}
.opts button.no{background:#5a1838}
.timer{height:6px;border-radius:3px;background:#2c1a45;overflow:hidden}
.timer i{display:block;height:100%;background:var(--sakura);transition:width .1s linear}

/* jigsaw */
.jig-board{position:relative;margin:0 auto;border-radius:6px;background:rgba(6,3,11,.6);box-shadow:inset 0 0 0 2px #3a2260}
.jig-slot{position:absolute;border:1px dashed rgba(183,156,255,.25)}
.jig-piece{position:absolute;border-radius:5px;background-repeat:no-repeat;box-shadow:0 3px 8px rgba(0,0,0,.6),inset 0 0 0 1px rgba(255,255,255,.25);touch-action:none;transition:transform .15s}
.jig-piece.drag{z-index:30;transform:scale(1.06);transition:none;box-shadow:0 10px 20px rgba(0,0,0,.7),0 0 0 2px var(--eye)}
.jig-piece.set{box-shadow:none;border-radius:0;z-index:1;transition:left .15s,top .15s}

/* crossword */
.xw{position:relative;margin:0 auto;border-radius:8px;overflow:hidden}
.xw .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.xw .veil{position:absolute;inset:0;background:var(--ink);transition:opacity .6s}
.xw .grid{position:absolute;inset:0;display:grid}
.xw .c{position:relative;border:1px solid rgba(6,3,11,.5);display:grid;place-items:center;font-family:var(--px);font-size:min(3.6vw,15px);color:var(--ink)}
.xw .c.l{background:rgba(251,239,255,.88)}
.xw .c.l.hl{background:rgba(183,156,255,.95)}
.xw .c.l.cur{background:var(--eye)}
.xw .c.l.ok{background:rgba(124,245,211,.55)}
.xw .c sup{position:absolute;top:1px;left:2px;font-family:var(--dot);font-size:9px}
.clue{min-height:44px;padding:8px 10px;border-radius:10px;background:#2a1245;border:1px solid var(--lilac);font-size:15px;line-height:1.35}
.clue b{color:var(--eye);font-weight:400;margin-right:6px}

/* uno */
.uno{position:absolute;inset:0;padding:50px 8px 8px;display:flex;flex-direction:column}
.opps{display:flex;justify-content:space-around}
.opp{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px;padding:6px 10px;border-radius:12px;border:1px solid transparent}
.opp.turn{border-color:var(--eye);box-shadow:0 0 12px rgba(255,216,77,.4)}
.opp .av{width:46px;height:46px;border-radius:50%;overflow:hidden;position:relative;border:2px solid var(--lilac)}
.opp .n{font-family:var(--px);font-size:9px}
.table{flex:1;display:flex;align-items:center;justify-content:center;gap:18px;position:relative}
.dir{position:absolute;top:6px;font-size:13px;color:var(--dim)}
.ucard{position:relative;flex:none;width:78px;height:116px;border-radius:10px;overflow:hidden;background:var(--ink);border:4px solid var(--c,#fff);box-shadow:0 4px 10px rgba(0,0,0,.6)}
.ucard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ucard .v{position:absolute;left:4px;top:3px;font-family:var(--px);font-size:14px;color:#fff;text-shadow:2px 2px 0 var(--ink),-1px -1px 0 var(--ink)}
.ucard .v2{left:auto;top:auto;right:4px;bottom:3px}
.ucard .lab{position:absolute;left:0;right:0;bottom:0;padding:3px 0;background:var(--c);color:var(--ink);font-size:10px;text-align:center}
.ucard.back{background:repeating-linear-gradient(45deg,#2a1245 0 8px,#170a2a 8px 16px);border-color:var(--lilac);display:grid;place-items:center}
.ucard.back .noir{width:60%}
.ucard.big{width:96px;height:142px}
.ucard.play-ok{transform:translateY(-10px);box-shadow:0 0 0 2px var(--eye),0 8px 14px rgba(0,0,0,.6)}
.hand{display:flex;gap:6px;overflow-x:auto;padding:14px 6px 6px;touch-action:pan-x;scrollbar-width:none}
.hand::-webkit-scrollbar{display:none}
.hand .ucard{transition:transform .15s}
.uctl{display:flex;gap:8px;justify-content:center;min-height:42px;align-items:center}
.meow-btn{animation:chpPulse .4s infinite alternate}
.swatch{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.swatch button{height:64px;border-radius:12px;font-size:26px}

/* chess */
.chess{display:grid;grid-template-columns:repeat(8,1fr);margin:0 auto;border-radius:8px;overflow:hidden;border:3px solid var(--lilac)}
.chess .sq{position:relative;aspect-ratio:1;display:grid;place-items:center;font-size:min(8vw,34px);line-height:1}
.chess .sq.l{background:#cdb8f2}.chess .sq.d{background:#5b3a8c}
.chess .sq.sel{box-shadow:inset 0 0 0 3px var(--eye)}
.chess .sq.mv::after{content:"";position:absolute;width:28%;height:28%;border-radius:50%;background:rgba(255,111,181,.75)}
.chess .sq.last{background-image:linear-gradient(rgba(255,216,77,.28),rgba(255,216,77,.28))}
.chess .w{color:#fff8ee;text-shadow:0 0 2px #000,0 2px 0 #000}
.chess .b{color:#0a0610;text-shadow:0 0 2px var(--eye)}
.chess .face{position:absolute;inset:8%;border-radius:50%;overflow:hidden;border:2px solid var(--c)}
.chess .face img{width:100%;height:100%;object-fit:cover}
.chess .face+span{position:absolute;right:0;bottom:-2px;font-size:min(4vw,16px)}
.cstat{text-align:center;font-size:15px;min-height:22px}

/* gallery + movies */
.gal{position:absolute;inset:0;overflow-y:auto;padding:54px 10px 14px;display:grid;grid-template-columns:repeat(2,1fr);gap:10px;align-content:start;touch-action:pan-y}
.gal button{position:relative;aspect-ratio:3/4;border-radius:12px;overflow:hidden;background:var(--plum)}
.gal button span{position:absolute;left:0;right:0;bottom:0;padding:18px 8px 8px;background:linear-gradient(transparent,rgba(6,3,11,.9));font-family:var(--px);font-size:9px;text-align:left;line-height:1.5}
.viewer{position:absolute;inset:0;z-index:5;background:var(--ink)}
.viewer .photo{object-fit:contain;background:var(--ink)}
.viewer .vbar{position:absolute;left:0;right:0;bottom:0;padding:14px 12px 16px;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;background:linear-gradient(transparent,rgba(6,3,11,.95))}
.viewer .count{position:absolute;top:54px;left:50%;transform:translateX(-50%);font-family:var(--px);font-size:9px}
.reel{position:absolute;inset:0;transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.reel video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:var(--ink)}
.reel .info{bottom:26px}

/* pin the tail */
.pin-wrap{position:absolute;inset:50px 0 0;display:flex;flex-direction:column;align-items:center}
.pin-img{position:relative;flex:1;width:100%;overflow:hidden}
.pin-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:filter .6s}
.pin-img.blind img{filter:brightness(.05) blur(6px)}
.pin-img.blind.wobble img{animation:wob 3s ease-in-out infinite}
@keyframes wob{0%,100%{transform:translate(0,0) rotate(0)}25%{transform:translate(4%,2%) rotate(2deg)}75%{transform:translate(-4%,-1%) rotate(-2deg)}}
.pin-msg{padding:10px;font-size:15px;text-align:center;min-height:44px}
.tail{position:absolute;width:64px;height:64px;transform:translate(-30%,-50%);pointer-events:none;filter:drop-shadow(0 2px 4px #000)}
.target{position:absolute;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:3px solid var(--mint);box-shadow:0 0 12px var(--mint)}

/* ---------- desktop: arcade cabinet ---------- */
@media (min-width:900px) and (hover:hover){
  body.chp-body{background:radial-gradient(60% 50% at 50% 30%,#2a1245 0%,#0a0514 70%),var(--ink)}
  .shell{position:relative;margin:2vh auto 0;width:calc(68vh * 9 / 16 + 80px);height:96vh;padding:0;background:none;display:flex}
  .cab-top{display:block;position:relative;height:13vh;margin:0 -16px;border-radius:26px 26px 0 0;
    background:linear-gradient(180deg,#1d0f33,#0c0618);box-shadow:inset 0 0 0 2px #3a2260,0 0 60px rgba(255,111,181,.18)}
  .cab-top::before,.cab-top::after{content:"";position:absolute;top:-34px;width:70px;height:46px;background:#1d0f33;clip-path:polygon(50% 0,100% 100%,0 100%)}
  .cab-top::before{left:22px}.cab-top::after{right:22px}
  .marquee{position:absolute;inset:14px 18px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:12px;
    background:linear-gradient(90deg,#2a1245,#3d1a5e,#2a1245);box-shadow:inset 0 0 22px rgba(255,111,181,.35),0 0 18px rgba(255,111,181,.25)}
  .marquee .noir{height:70%}
  .marquee b{font-family:var(--px);font-size:min(2.4vh,20px);color:var(--cream);text-shadow:2px 2px 0 var(--sakura),0 0 14px var(--sakura)}
  .bezel{flex:1;margin:0;padding:22px 40px;border-radius:0;background:linear-gradient(180deg,#120a20,#06030b);box-shadow:inset 0 0 0 2px #3a2260}
  .bezel::before,.bezel::after{display:none}
  .lcd{border-radius:10px;box-shadow:0 0 0 6px #000,0 0 40px rgba(183,156,255,.25)}
  .deck{height:auto;padding:18px 36px 14px;margin:0 -22px;border-radius:0 0 18px 18px;background:linear-gradient(180deg,#2a1245,#140a26);box-shadow:inset 0 2px 0 #4a2c76;transform:perspective(500px) rotateX(18deg);transform-origin:top}
  .cab-keys{display:block;text-align:center;font-size:13px;color:var(--dim);padding:10px 0 0}
  .cab-keys kbd{font-family:var(--px);font-size:9px;padding:3px 6px;border-radius:4px;background:#2a1245;border:1px solid #4a2c76;color:var(--cream)}
  .swipe-hint{display:none}
}
@media (prefers-reduced-motion:reduce){
  #v-title .photo,.press,.swipe-hint,.meow-btn{animation:none}
  .slide,.reel{transition:none}
}
.photo.broken{opacity:0}
/* peek-a-meow */
.wgrid{flex:1;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:10px;padding:12px;border-radius:14px;background:linear-gradient(180deg,#3a1d5e,#1d0d33);box-shadow:inset 0 0 0 3px #4a2c76}
.win{position:relative;border-radius:10px 10px 4px 4px;overflow:hidden;background:linear-gradient(180deg,#0d0620,#2a1245);box-shadow:inset 0 0 0 3px #ffd84d55,inset 0 -8px 0 #00000055;touch-action:none}
.win::after{content:"";position:absolute;left:0;right:0;top:50%;height:3px;background:#ffd84d55;pointer-events:none}
.win .peek{animation:peek .18s ease-out}
.win .cuke{position:absolute;inset:0;display:grid;place-items:center;font-size:40px;animation:peek .18s ease-out}
.win.hit{box-shadow:inset 0 0 0 4px #7cf5d3}
@keyframes peek{from{transform:translateY(100%)}to{transform:none}}
/* emmy's dream mall */
.mall{background:linear-gradient(180deg,#ffd1ea,#ff8cc8 60%,#e05aa8)}
.mall-top{position:relative;flex:0 0 34%;border-radius:16px;overflow:hidden;border:3px solid #fff;box-shadow:0 0 0 3px #ff6fb5,0 8px 18px rgba(156,47,105,.4)}
.mall-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,111,181,.15),rgba(156,47,105,.75))}
.mall-sign{position:absolute;top:8px;left:50%;transform:translateX(-50%);white-space:nowrap;padding:5px 12px;border-radius:99px;background:#fff;color:#d63a8c;font-family:var(--px);font-size:9px;box-shadow:0 0 14px #fff}
.mall-list{position:absolute;left:8px;right:8px;bottom:8px;display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.chip{padding:5px 10px;border-radius:99px;background:rgba(255,255,255,.92);color:#9c2f69;font-size:16px;font-weight:700}
.chip.done{background:#7cf5d3;text-decoration:line-through;opacity:.8}
.mall-hud{background:#fff;border-color:#ff6fb5;color:#9c2f69}
.mall-hud b{color:#d63a8c}
.racks{flex:1;display:flex;flex-direction:column;gap:8px}
.rack{position:relative;flex:1;border-radius:14px;overflow:hidden;background:repeating-linear-gradient(90deg,rgba(255,255,255,.35) 0 2px,transparent 2px 46px),linear-gradient(180deg,#fff0f8,#ffc2e2);box-shadow:inset 0 -6px 0 #f29ac7,inset 0 3px 0 #fff}
.rack::before{content:"";position:absolute;left:0;right:0;top:10px;height:4px;background:#d9d9e6;box-shadow:0 1px 0 #fff}
.tag{position:absolute;left:0;top:50%;margin-top:-30px;width:60px;height:60px;border-radius:14px;background:#fff;border:2px solid #ff6fb5;font-size:28px;line-height:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;box-shadow:0 4px 8px rgba(156,47,105,.3);touch-action:none}
.tag small{font-size:10px;color:#9c2f69;font-family:var(--dot)}
.tag.picked{transition:opacity .25s,scale .25s;opacity:0;scale:1.6}
.cover{position:relative;aspect-ratio:3/4;border-radius:10px;overflow:hidden;border:3px solid #fff;box-shadow:0 0 0 3px #ff6fb5}
.cover-mast{position:absolute;top:8px;left:0;right:0;font-family:var(--px);font-size:15px;color:#fff;text-shadow:2px 2px 0 #ff6fb5}
.cover-line{position:absolute;left:0;right:0;bottom:0;padding:24px 10px 12px;background:linear-gradient(transparent,rgba(156,47,105,.9));font-family:var(--px);font-size:10px;line-height:1.8;color:#fff}
.cover-line b{font-size:13px;color:#ffd84d}
