:root{
  color-scheme:dark;
  --bg:#0F0B26; --bg2:#1D1245; --card:#FFF7EC; --ink:#1A1233; --mute:#6A5F86;
  --text:#F5EEFF; --soft:#B9ADD9; --accent:#FF6FA5; --gold:#FFC93C; --line:#E8DDF2; --glass:#1B1442;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{background:radial-gradient(1200px 700px at 20% -10%,var(--bg2),var(--bg) 60%) fixed,var(--bg);color:var(--text);
  font:400 17px/1.55 Outfit,system-ui,sans-serif;margin:0;min-height:100vh;
  padding-block:22px 40px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));overflow-x:hidden}
button,select{font:inherit}
button{cursor:pointer;color:inherit}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

/* sky */
.sky{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.sky::before{content:"";position:absolute;inset:0;background:url(../images/bg-mobile.webp) center/cover no-repeat}
@media (min-aspect-ratio:1/1){.sky::before{background-image:url(../images/bg-desktop.webp)}}
.sky::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,7,30,.45),rgba(10,7,30,.2) 40%,rgba(10,7,30,.45))}
.stars{opacity:.5;position:absolute;inset:0;background-image:
  radial-gradient(1.5px 1.5px at 12% 18%,#fff,transparent),radial-gradient(1px 1px at 78% 12%,#fff,transparent),
  radial-gradient(1.5px 1.5px at 40% 70%,#fff,transparent),radial-gradient(1px 1px at 88% 62%,#fff,transparent),
  radial-gradient(1px 1px at 22% 88%,#fff,transparent),radial-gradient(1.5px 1.5px at 62% 40%,#fff,transparent),
  radial-gradient(1px 1px at 5% 50%,#fff,transparent),radial-gradient(1px 1px at 95% 90%,#fff,transparent);animation:tw 5s ease-in-out infinite alternate}
.stars.b{transform:translate(37px,23px);animation-delay:-2.5s;opacity:.7}
@keyframes tw{from{opacity:.35}to{opacity:1}}

.wrap{position:relative;z-index:1;max-width:480px;margin:0 auto;display:flex;flex-direction:column;gap:20px}
.top{display:flex;flex-direction:column;gap:2px}
.logo{font:900 30px/1 Fraunces,Georgia,serif;margin:0;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}
.logo em{color:var(--accent);font-style:normal}
.wordmark{display:block;height:68px;width:auto;max-width:100%}
.sub{margin:0;color:var(--soft);font-size:14px;text-shadow:0 1px 6px var(--bg),0 0 12px var(--bg)}
.date{display:flex;flex-direction:column;gap:2px}
@media (max-width:599px){.top{align-items:center;text-align:center}.logo{justify-content:center}.date{align-items:center;text-align:center}}
.date b{font:900 clamp(34px,10vw,46px)/1.05 Fraunces,Georgia,serif;letter-spacing:-.02em}
.date span{text-shadow:0 1px 6px var(--bg);color:var(--soft);font-size:15px;font-weight:600;letter-spacing:.04em}

.pick{display:flex;flex-direction:column;gap:6px}
.pick label{font-size:14px;color:var(--soft);font-weight:600;text-shadow:0 1px 6px var(--bg)}
.seg{display:grid;grid-template-columns:1fr 1fr;background:var(--glass);border:1.5px solid rgba(255,255,255,.28);border-radius:16px;padding:4px;gap:4px;margin-bottom:6px}
.seg button{border:0;background:transparent;border-radius:12px;min-height:54px;font-weight:700;font-size:17px;line-height:1.15;color:var(--text);transition:background .2s,color .2s}
.seg button small{display:block;font-size:12px;font-weight:600;opacity:.75}
.seg button.on{background:var(--gold);color:#1A1233}
.sel{position:relative}
.sel select{width:100%;appearance:none;-webkit-appearance:none;background:var(--glass);color:var(--text);border:1.5px solid rgba(255,255,255,.28);
  border-radius:14px;padding:0 44px 0 16px;min-height:54px;font-size:18px;font-weight:600}
.sel select option,.sel select optgroup{color:#1A1233;background:#fff}
.sel::after{content:"";position:absolute;right:18px;top:50%;width:9px;height:9px;border-right:2.5px solid var(--gold);border-bottom:2.5px solid var(--gold);transform:translateY(-70%) rotate(45deg);pointer-events:none}

.birth{background:var(--glass);border:1.5px solid rgba(255,255,255,.28);border-radius:14px;padding:0 16px}
.birth summary{min-height:58px;display:flex;align-items:center;font-weight:800;font-size:20px;cursor:pointer;color:var(--gold)}
.birth form{display:flex;flex-direction:column;gap:12px;padding-bottom:16px}
.bh{margin:6px 0 0;font:900 26px/1.15 Fraunces,Georgia,serif;text-wrap:balance;animation:unblur .9s ease-out both}
@keyframes unblur{from{filter:blur(8px);opacity:0}to{filter:none;opacity:1}}
.grp{display:flex;flex-direction:column;gap:6px}
.gl{margin:0;font:700 12px Outfit,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--soft)}
.rows{border:1px solid rgba(255,255,255,.2);border-radius:14px;background:rgba(255,255,255,.05)}
.fr{display:flex;flex-direction:column;gap:3px;padding:11px 14px 12px;min-width:0;position:relative}
.fr+.fr{border-top:1px solid rgba(255,255,255,.14)}
.fr>span,.fr>label>span{font:700 12px Outfit,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--soft)}
.fr i{font-style:normal;font-weight:600;letter-spacing:.04em;text-transform:none;opacity:.75;margin-left:6px}
.fr em{font-style:normal;font-size:13px;line-height:1.4;color:var(--soft)}
.birth input{-webkit-appearance:none;appearance:none;box-sizing:border-box;display:block;width:100%;max-width:100%;min-width:0;text-align:left;font:inherit;font-size:19px;font-weight:600;min-height:40px;padding:0;border:0;border-radius:0;background:transparent;color:var(--text);color-scheme:dark}
.birth input::placeholder{color:rgba(185,173,217,.55);font-weight:400}
.birth input:focus-visible{outline:0}
.fr:focus-within{box-shadow:inset 3px 0 0 var(--gold);background:rgba(255,255,255,.04)}
.pills{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:8px;padding-top:4px}
.pills button{min-height:44px;border-radius:999px;border:1.5px solid rgba(255,255,255,.28);background:transparent;color:var(--text);font-size:14px;font-weight:600;padding:0 4px;white-space:nowrap}
.pills button[aria-checked=true]{background:var(--gold);border-color:var(--gold);color:#1A1233;font-weight:700}
#placeList{list-style:none;margin:0;padding:4px;background:#241A47;border:1.5px solid rgba(255,255,255,.28);border-radius:12px;display:flex;flex-direction:column}
#placeList button{width:100%;text-align:left;background:transparent;border:0;border-radius:8px;min-height:46px;padding:0 10px;font-size:16px;color:var(--text)}
#placeList button:hover,#placeList button:focus-visible{background:rgba(255,255,255,.12)}
#placeList small{color:var(--soft);margin-left:6px}
#birthOut{margin:0;font-weight:600;font-size:15px}
.priv{margin:0;font-size:13px;color:var(--soft)}
.chapter{margin:0;background:#FFE9F1;border-radius:14px;padding:12px 14px}
.chapter b{display:block;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#C2185B}
.chapter span{font-weight:700}
.card{background:var(--card);color:var(--ink);border-radius:22px;padding:22px 20px;display:flex;flex-direction:column;gap:16px;box-shadow:0 18px 50px rgba(0,0,0,.45);position:relative}
.card.in{animation:rise .5s cubic-bezier(.2,.8,.2,1)}
@keyframes rise{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}
.who{margin:0;font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#C2185B}
.tag{margin:-8px 0 0;color:var(--mute);font-style:italic;font-size:15px}
.headline{font:900 clamp(26px,7.4vw,32px)/1.12 Fraunces,Georgia,serif;margin:0;text-wrap:balance;letter-spacing:-.01em}

.avoid{background:var(--gold);border-radius:14px;padding:12px 14px}
.beat b,.final b{display:block;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#C2185B}
.beat p{margin:2px 0 0;font-size:18px}
.final{margin:0;border-left:5px solid #C2185B;padding:2px 0 2px 14px;font:900 clamp(21px,5.8vw,25px)/1.25 Fraunces,Georgia,serif}
.final b{font:700 12px Outfit,sans-serif;margin-bottom:2px}
.avoid b{display:block;font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.avoid p{margin:2px 0 0;font-weight:700}

.rate{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:2px dashed var(--line);padding-top:14px}
.rate small{display:block;font-size:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--mute)}
.rate p{margin:2px 0 0;font-weight:600;font-size:15px;line-height:1.35}
.rate .score{font:900 40px/1 Fraunces,Georgia,serif;white-space:nowrap}
.rate .score i{font:600 16px Outfit,sans-serif;color:var(--mute);font-style:normal}
.note{margin:0;font-size:14px;color:var(--mute)}
.empty{text-align:center;padding:30px 12px;gap:6px}
.empty h2{font:900 26px/1.15 Fraunces,Georgia,serif;margin:0}
.empty p{margin:0;color:var(--mute)}

.btn{border:0;border-radius:14px;min-height:54px;padding:0 18px;font-weight:700;font-size:17px;background:var(--accent);color:#1A0B1F;width:100%}
.btn.ghost{background:var(--glass);color:var(--text);border:1.5px solid rgba(255,255,255,.28)}
.hook{margin:0;font-size:15px;line-height:1.45;font-weight:600;color:#2A1A3A;background:#F3E6D8;border-radius:12px;padding:10px 12px}
.hook b{display:block;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#C2185B;margin-bottom:3px}
.lu{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.4;color:#5B4A6B}
.lu li{padding-left:12px;border-left:3px solid #FFC83D}
.ad{display:none;margin-top:18px;text-align:center}
.ad small{display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--soft);margin-bottom:4px}
.ad .adbox{margin:0 auto;max-width:100%;overflow:hidden}
.ads-on .ad-home{display:block}.ads-on .ad-home .adbox{min-height:100px}
.ads-on.res .ad-home{display:none}
.ads-on.res .ad-result{display:block}.ads-on .ad-result .adbox{min-height:250px;max-width:336px}
.res #pickBox,.res #birth{display:none}
.btn.home{margin-top:10px}
.btn:active{transform:scale(.98)}
.btn:disabled{opacity:.6}

.ov{position:fixed;inset:0;background:rgba(8,5,24,.82);z-index:50;display:flex;align-items:flex-start;justify-content:center;overflow:auto;
  padding:16px max(16px,env(safe-area-inset-right,0px)) 16px max(16px,env(safe-area-inset-left,0px))}
.ov-in{background:#241A47;border-radius:20px;padding:14px;max-width:440px;width:100%;margin:auto;display:flex;flex-direction:column;gap:12px}
.card.loading{background:var(--glass);color:#fff;align-items:center;text-align:center;gap:6px;padding:20px;border:1px solid rgba(255,255,255,.12)}
.ldr{width:150px;height:112px;max-width:100%}
.ldt{margin:0;font:600 15px/1.4 Outfit,system-ui,sans-serif;color:#FFD9A8;min-height:22px}

/* premium card */
.card:not(.loading):not(.empty){overflow:hidden;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .25 0 0 0 0 .2 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}
.card:not(.loading):not(.empty)::before{content:"";position:absolute;inset:8px;border:1px solid rgba(201,150,40,.55);border-radius:16px;pointer-events:none;z-index:0}
.card:not(.loading):not(.empty)::after{content:attr(data-g);position:absolute;right:-6px;top:34%;font:400 150px/1 "Segoe UI Symbol","Noto Sans Symbols",serif;color:#C2185B;opacity:.06;pointer-events:none;z-index:0}
.card>*{position:relative;z-index:1}
.card .who,.card .tag{padding-right:62px}
.stamp{position:absolute!important;top:16px;right:16px;width:54px;height:auto;z-index:2;transform:rotate(8deg);filter:drop-shadow(0 3px 4px rgba(120,30,0,.35))}
.card.in .stamp{animation:stamp .7s .1s cubic-bezier(.2,1.4,.3,1) both}
@keyframes stamp{from{opacity:0;transform:scale(2.2) rotate(-24deg)}to{opacity:1;transform:rotate(8deg)}}
@keyframes fup{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.card.in .headline{animation:fup .6s .25s both}
.card.in .beat{animation:fup .6s .5s both}
.card.in .avoid{animation:fup .6s .7s both}
.card.in .final{animation:fup .6s .9s both}
.card.in .hook,.card.in .lu,.card.in .note,.card.in .chapter{animation:fup .6s 1.05s both}
.card.in .rate{animation:fup .6s 1.2s both}
.rate .score{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font:inherit}
.stars5{display:flex;gap:3px}
.stars5 b{font:400 27px/1 "Segoe UI Symbol","Noto Sans Symbols",serif;color:#DCD0E4}
.stars5 b.on{color:#F5A400;text-shadow:0 1px 0 #B87400}
.stars5.bad b.on{color:#D9455F;text-shadow:0 1px 0 #8E1F33}
.card.in .stars5 b.on{animation:pop .45s calc(1.4s + var(--i) * .12s) cubic-bezier(.2,1.6,.3,1) both}
@keyframes pop{from{opacity:0;transform:scale(.2) rotate(-40deg)}to{opacity:1;transform:none}}
.rate .score small{font:700 12px Outfit,sans-serif;color:var(--mute);letter-spacing:.05em}
.btn{transition:transform .12s,box-shadow .2s}
.btn:not(.ghost):not(:disabled):hover{box-shadow:0 0 0 3px rgba(255,200,61,.25),0 8px 22px rgba(255,98,160,.35)}
.foot{position:relative;z-index:1;margin-top:28px;padding-top:18px;border-top:1px solid rgba(255,255,255,.12);text-align:center;display:flex;flex-direction:column;gap:8px;font-size:12.5px;line-height:1.5;color:var(--soft)}
.foot p{margin:0}
.foot nav{display:flex;justify-content:center;flex-wrap:wrap;gap:6px 18px}
.lnk{background:none;border:0;padding:6px 2px;font:inherit;font-weight:600;color:var(--gold);text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:32px}
.doc{color:#E9E3FA;font-size:15px;line-height:1.55;display:flex;flex-direction:column;gap:10px}
.doc h2{font:900 22px/1.2 Fraunces,Georgia,serif;margin:0;color:#fff}
.doc h3{font:700 13px Outfit,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:6px 0 0}
.doc p,.doc ul{margin:0}.doc ul{padding-left:20px;display:flex;flex-direction:column;gap:4px}
.doc small{color:var(--soft)}
@media (prefers-reduced-motion:reduce){.card.in *,.card.in .stamp,.card.in .stars5 b{animation:none!important}.stars,.card.in{animation:none}}
/* ===== AstroSlay home: dark premium + motion ===== */
:root{--bg:#06040F;--bg2:#120B2C;--glass:rgba(12,8,30,.72);--goldline:rgba(255,201,60,.26);--gold2:#FFE7A0;--soft:#B8ADD6}
body{background:#06040F}
.sky::after{background:radial-gradient(130% 85% at 50% 0%,rgba(6,4,15,.2),rgba(6,4,15,.78) 72%),linear-gradient(180deg,rgba(6,4,15,.5),rgba(6,4,15,.15) 35%,rgba(6,4,15,.75))}
.sky .spot{position:absolute;inset:0;z-index:1;background:radial-gradient(520px circle at var(--px,50%) var(--py,20%),rgba(255,190,70,.09),transparent 62%)}
.stars{z-index:1;transition:transform 1.4s cubic-bezier(.2,.8,.2,1)}
.shoot{position:absolute;z-index:1;height:1.6px;width:150px;border-radius:2px;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,236,190,.9));opacity:0;transform-origin:100% 50%;filter:drop-shadow(0 0 4px rgba(255,220,150,.8))}

/* first paint stays hidden until the entrance runs */
.js body:not(.enter) .wrap>*:not(#card):not(#actions),.js body:not(.enter) .foot{opacity:0}
@keyframes hUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes hFade{from{opacity:0}to{opacity:1}}

/* logo */
.logo{position:relative}
.logo::before{content:"";position:absolute;left:50%;top:50%;width:300px;height:140px;margin:-70px 0 0 -150px;border-radius:50%;
  background:radial-gradient(closest-side,rgba(255,150,50,.38),rgba(255,90,140,.12) 60%,transparent);filter:blur(12px);z-index:-1;animation:hHalo 3.5s ease-in-out infinite alternate}
@media (min-width:600px){.logo::before{left:110px}}
@keyframes hHalo{from{opacity:.55;transform:scale(.92)}to{opacity:1;transform:scale(1.06)}}
.enter .wordmark{animation:hLogo 1.1s cubic-bezier(.2,1.25,.3,1) both}
@keyframes hLogo{from{opacity:0;transform:translateY(-34px) scale(.8) rotate(-4deg);filter:blur(12px)}to{opacity:1;transform:none;filter:none}}
.sub .ch{display:inline-block;white-space:pre}
.enter .sub .ch{animation:hChar .45s calc(.55s + var(--c) * .02s) cubic-bezier(.2,1,.3,1) both}
@keyframes hChar{from{opacity:0;transform:translateY(8px);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
.sub .slay{color:var(--gold);font-weight:700}
.enter .sub{animation:none}

/* date + live moon */
.enter .date{animation:hUp .8s .35s cubic-bezier(.2,.9,.3,1) both}
.date b{background:linear-gradient(100deg,#fff 0,#fff 42%,#FFE29A 50%,#fff 58%,#fff 100%);background-size:260% 100%;background-position:100% 0;
  -webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:hShine 7s 1.6s ease-in-out infinite;filter:drop-shadow(0 2px 10px rgba(0,0,0,.6))}
@keyframes hShine{0%{background-position:100% 0}35%,100%{background-position:0 0}}
.mchip{display:inline-flex;align-items:center;gap:8px;margin-top:10px;padding:6px 13px 6px 11px;border-radius:999px;border:1px solid var(--goldline);
  background:rgba(10,7,26,.66);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font:600 13px/1.2 Outfit,sans-serif;color:var(--gold2);letter-spacing:.01em;align-self:flex-start}
@media (max-width:599px){.mchip{align-self:center}}
.mchip i{width:7px;height:7px;border-radius:50%;background:#62E89A;flex:none;animation:hLive 2s ease-out infinite}
@keyframes hLive{0%{box-shadow:0 0 0 0 rgba(98,232,154,.6)}100%{box-shadow:0 0 0 9px rgba(98,232,154,0)}}

/* the question + toggle */
.pick{position:relative;gap:12px}
.qh{margin:4px 0 0;font:900 clamp(27px,7.6vw,34px)/1.1 Fraunces,Georgia,serif;letter-spacing:-.015em;text-wrap:balance;color:#fff}
.qh em{font-style:italic;background:linear-gradient(180deg,#FFF0B8,#FFC93C 60%,#F29A22);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;padding-right:.08em}
@media (max-width:599px){.qh{text-align:center}}
.enter .qh{animation:hUp .8s .5s cubic-bezier(.2,.9,.3,1) both}
.seg{position:relative;background:rgba(8,6,20,.72);border:1px solid var(--goldline);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);margin-bottom:0}
.seg::before{content:"";position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 6px);border-radius:12px;
  background:linear-gradient(180deg,#FFE48F,#FFC23C 58%,#EE9F1C);box-shadow:0 6px 22px rgba(255,175,40,.35),inset 0 1px 0 rgba(255,255,255,.65);
  transition:transform .5s cubic-bezier(.3,1.35,.4,1)}
.seg[data-m=s]::before{transform:translateX(calc(100% + 4px))}
.seg button{position:relative;z-index:1;background:transparent!important;transition:color .35s}
.seg button.on{color:#1A1233}
.enter .seg{animation:hUp .8s .6s cubic-bezier(.2,.9,.3,1) both}
#signLbl{font:700 12px Outfit,sans-serif;letter-spacing:.22em;text-transform:uppercase;color:var(--gold2);opacity:.85;margin-top:4px;text-align:center}
.enter #signLbl{animation:hFade .8s .7s both}
.pick .sel{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* zodiac tiles */
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;perspective:900px}
@media (min-width:400px){.tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}
.tile{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:96px;padding:10px 4px 9px;border-radius:16px;
  border:1px solid var(--goldline);background:linear-gradient(180deg,rgba(32,22,70,.62),rgba(9,6,24,.82));backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  color:var(--text);text-align:center;transition:transform .4s cubic-bezier(.2,1.3,.4,1),border-color .3s,box-shadow .35s,opacity .3s;-webkit-tap-highlight-color:transparent}
.tile::before{content:"";position:absolute;inset:0;background:radial-gradient(130px circle at var(--x,50%) var(--y,0%),rgba(255,201,60,.2),transparent 62%);opacity:0;transition:opacity .3s;pointer-events:none}
.tile::after{content:"";position:absolute;left:18%;right:18%;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,226,150,.7),transparent);opacity:.6}
.tile .gy{font:400 31px/1 "Segoe UI Symbol","Noto Sans Symbols",serif;background:linear-gradient(180deg,#FFF3C8,#FFC93C 55%,#E58A22);-webkit-background-clip:text;background-clip:text;
  color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 7px rgba(255,185,60,.35));transition:transform .45s cubic-bezier(.2,1.5,.4,1),filter .3s;padding:2px}
.tile .nm{font-weight:700;font-size:14px;line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile .sb{font-size:10.5px;line-height:1.2;color:var(--soft);font-weight:600;letter-spacing:.02em;white-space:nowrap}
@media (hover:hover) and (pointer:fine){
  .tile:hover{transform:translateY(-5px);border-color:rgba(255,201,60,.7);box-shadow:0 14px 30px rgba(0,0,0,.45),0 0 0 1px rgba(255,201,60,.25),0 0 26px rgba(255,180,60,.18)}
  .tile:hover::before{opacity:1}
  .tile:hover .gy{transform:scale(1.15) rotate(-8deg);filter:drop-shadow(0 0 12px rgba(255,190,60,.75))}}
.tile:active{transform:scale(.95)}
.tile:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.enter .tile{animation:hDeal .7s calc(var(--base,.75s) + var(--k) * .045s) cubic-bezier(.2,1.15,.3,1) both}
@keyframes hDeal{from{opacity:0;transform:translateY(34px) rotateX(70deg) scale(.82)}to{opacity:1;transform:none}}
.tiles .tile.chosen{z-index:3;border-color:#FFE08A;color:#1A1233;background:linear-gradient(180deg,#FFE48F,#FFC23C 58%,#EE9F1C);
  box-shadow:0 0 0 2px rgba(255,220,120,.5),0 0 40px rgba(255,180,50,.55);animation:hChosen .6s cubic-bezier(.2,1.3,.3,1) both}
.tiles .tile.chosen .gy{background:linear-gradient(180deg,#3A1F00,#1A1233);-webkit-background-clip:text;background-clip:text;filter:none;transform:scale(1.15)}
.tiles .tile.chosen .sb{color:#4A3320}
@keyframes hChosen{0%{transform:scale(1)}45%{transform:scale(1.2) rotate(-2deg)}100%{transform:scale(1.1)}}
.tiles.picking .tile:not(.chosen){animation:hGone .45s calc(var(--dd) * .04s) cubic-bezier(.5,0,.8,.4) both;pointer-events:none}
@keyframes hGone{to{opacity:0;transform:scale(.55) translateY(14px);filter:blur(5px)}}
.tile .rip{position:absolute;left:50%;top:50%;width:20px;height:20px;margin:-10px;border-radius:50%;border:2px solid rgba(255,255,255,.9);animation:hRip .7s ease-out forwards;pointer-events:none}
@keyframes hRip{to{transform:scale(9);opacity:0}}
body.leaving .qh,body.leaving .seg,body.leaving #signLbl,body.leaving .birth,body.leaving .ad-home{transition:opacity .35s,transform .35s;opacity:0;transform:translateY(-10px)}

/* birth details */
.birth{background:transparent;border:0;padding:0;border-radius:18px}
.enter .birth{animation:hUp .8s 1.2s cubic-bezier(.2,.9,.3,1) both}
.birth>summary{list-style:none;position:relative;isolation:isolate;overflow:hidden;border-radius:16px;padding:0 18px;min-height:62px;display:flex;align-items:center;gap:12px;
  font:700 18px/1.2 Outfit,sans-serif;color:var(--gold2);background:transparent;transition:transform .2s}
.birth>summary::-webkit-details-marker{display:none}
.birth>summary::before{content:"";position:absolute;left:50%;top:50%;width:200%;aspect-ratio:1;margin:-100% 0 0 -100%;z-index:-2;
  background:conic-gradient(from 0deg,rgba(255,201,60,.18) 0 62%,rgba(255,226,150,1) 75%,rgba(255,120,170,.8) 82%,rgba(255,201,60,.18) 92%);animation:hSpin 4.5s linear infinite}
.birth>summary::after{content:"";position:absolute;inset:1.5px;border-radius:14.5px;z-index:-1;background:linear-gradient(180deg,#1B1340,#0A0720)}
@keyframes hSpin{to{transform:rotate(360deg)}}
.birth>summary .sp{font-size:20px;color:var(--gold);animation:hTw 2.4s ease-in-out infinite}
@keyframes hTw{50%{transform:scale(.7) rotate(45deg);opacity:.6}}
.birth>summary .chev{margin-left:auto;width:10px;height:10px;border-right:2.5px solid var(--gold);border-bottom:2.5px solid var(--gold);transform:rotate(45deg) translate(-2px,-2px);transition:transform .35s}
.birth[open]>summary .chev{transform:rotate(225deg)}
.birth>summary:active{transform:scale(.98)}
.birth form{margin-top:12px;padding:18px 16px;border-radius:18px;background:rgba(10,7,26,.78);border:1px solid var(--goldline);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.birth[open] form>*{animation:hUp .55s cubic-bezier(.2,.9,.3,1) both}
.birth[open] form>:nth-child(2){animation-delay:.08s}.birth[open] form>:nth-child(3){animation-delay:.16s}
.birth[open] form>:nth-child(4){animation-delay:.24s}.birth[open] form>:nth-child(5){animation-delay:.3s}
.birth[open] form>:nth-child(n+6){animation-delay:.36s}
.rows{background:rgba(0,0,0,.3);border-color:rgba(255,201,60,.16)}
.fr{transition:background .25s,box-shadow .25s}
.fr:focus-within{box-shadow:inset 3px 0 0 var(--gold);background:rgba(255,201,60,.06)}
.gl{color:var(--gold2);opacity:.8}
.pills button{border-color:rgba(255,201,60,.28);transition:background .25s,color .25s,transform .25s}
.pills button[aria-checked=true]{background:linear-gradient(180deg,#FFE48F,#FFC23C 58%,#EE9F1C);border-color:#FFC23C;transform:scale(1.03)}
#placeList{background:#120C2C;border-color:var(--goldline)}

/* buttons */
.btn{position:relative;overflow:hidden;isolation:isolate;background:linear-gradient(180deg,#FFE48F,#FFC23C 58%,#EE9F1C);color:#1A1233;
  box-shadow:0 10px 26px rgba(255,170,40,.22),inset 0 1px 0 rgba(255,255,255,.65)}
.btn::after{content:"";position:absolute;top:0;bottom:0;left:-45%;width:32%;z-index:-1;background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);transform:skewX(-20deg);animation:hBtn 5s 2.2s ease-in-out infinite}
@keyframes hBtn{0%,72%{left:-45%}100%{left:135%}}
.btn:not(.ghost):not(:disabled):hover{box-shadow:0 0 0 3px rgba(255,201,60,.25),0 14px 32px rgba(255,170,40,.42)}
.btn.ghost{background:rgba(10,7,26,.6);color:var(--gold2);border:1px solid var(--goldline);box-shadow:none}
.btn.ghost::after{display:none}
.btn.ghost:hover{border-color:rgba(255,201,60,.6)}

/* loader + chrome */
.card.loading{background:rgba(10,7,26,.78);border:1px solid var(--goldline);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:hUp .5s both}
.card.prompt{display:none}
.enter .foot{animation:hFade 1s 1.4s both}
.foot{border-top-color:rgba(255,201,60,.14)}
.ov-in{background:#100A26;border:1px solid var(--goldline)}

@media (prefers-reduced-motion:reduce){
  .enter *,.enter .tile,.birth[open] form>*,.btn::after,.birth>summary::before,.date b,.logo::before,.mchip i{animation:none!important}
  .js body:not(.enter) .wrap>*,.js body:not(.enter) .foot{opacity:1}
  .shoot{display:none}}

/* ===== sound toggle ===== */
.sndt{position:fixed;z-index:46;left:max(12px,env(safe-area-inset-left,0px));top:calc(12px + env(safe-area-inset-top,0px));width:40px;height:40px;border-radius:50%;
  display:grid;place-items:center;padding:0;border:1px solid var(--goldline);background:rgba(10,7,26,.7);color:var(--gold2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  transition:transform .2s,border-color .3s,box-shadow .3s}
.sndt:hover{border-color:rgba(255,201,60,.7)}
.sndt:active{transform:scale(.92)}
.sndt svg{width:20px;height:20px}
.sndt .w{opacity:0;transition:opacity .3s}
.sndt[aria-pressed=true] .w{opacity:1}
.sndt[aria-pressed=true] .x{opacity:0}
.sndt[aria-pressed=true]{box-shadow:0 0 0 3px rgba(255,201,60,.15),0 0 18px rgba(255,190,60,.3)}
.enter .sndt{animation:hFade .8s 1.3s both}

/* ===== team CTA on home ===== */
.tcta{display:flex;align-items:center;gap:14px;width:100%;margin-top:6px;padding:14px 16px;border-radius:18px;text-align:left;color:var(--text);
  border:1px solid rgba(255,111,165,.35);background:linear-gradient(120deg,rgba(255,111,165,.14),rgba(20,12,50,.75) 55%);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  transition:transform .3s cubic-bezier(.2,1.3,.4,1),border-color .3s,box-shadow .3s}
.tcta:hover{transform:translateY(-3px);border-color:rgba(255,111,165,.7);box-shadow:0 12px 30px rgba(255,80,150,.18)}
.tcta:active{transform:scale(.98)}
.tcta .ti{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:linear-gradient(180deg,#FF8DB8,#C2185B);color:#fff;font-size:15px;letter-spacing:-2px;box-shadow:0 6px 18px rgba(194,24,91,.4)}
.tcta .tt{display:flex;flex-direction:column;gap:2px;min-width:0}
.tcta b{font-size:17px;line-height:1.25}
.tcta small{font-size:13px;line-height:1.35;color:var(--soft)}
.tcta .ta{margin-left:auto;flex:none;width:9px;height:9px;border-right:2.5px solid #FF8DB8;border-top:2.5px solid #FF8DB8;transform:rotate(45deg)}
.enter .tcta{animation:hUp .8s 1.35s cubic-bezier(.2,.9,.3,1) both}

/* ===== team builder ===== */
#teamBox{display:none;flex-direction:column;gap:14px}
.team #teamBox{display:flex}
.team #pickBox,.team #birth,.res #teamBox{display:none!important}
.team #teamBox>*{animation:hUp .55s cubic-bezier(.2,.9,.3,1) both}
.team #teamBox>:nth-child(2){animation-delay:.05s}.team #teamBox>:nth-child(3){animation-delay:.1s}.team #teamBox>:nth-child(4){animation-delay:.15s}.team #teamBox>:nth-child(n+5){animation-delay:.2s}
.tback{align-self:flex-start;background:none;border:0;padding:6px 0;color:var(--gold2);font-weight:600;font-size:15px}
.tsub{margin:-4px 0 0;color:var(--soft);font-size:15px;line-height:1.45}
@media (max-width:599px){.tsub{text-align:center}}
.trows{display:flex;flex-direction:column;gap:8px}
.trow{display:grid;grid-template-columns:28px minmax(0,1fr) minmax(0,1.15fr) 34px;align-items:center;gap:8px;padding:8px 8px 8px 10px;border-radius:16px;
  background:rgba(10,7,26,.72);border:1px solid var(--goldline);animation:hUp .4s cubic-bezier(.2,1.1,.3,1) both;transition:opacity .2s,transform .2s,border-color .3s}
.trow.out{opacity:0;transform:translateX(30px)}
.trow.miss{border-color:#FF6F91;box-shadow:0 0 0 2px rgba(255,111,145,.2)}
.tn{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:rgba(255,201,60,.14);color:var(--gold);font-weight:700;font-size:13px}
.tname{min-width:0;width:100%;min-height:44px;border:0;border-radius:10px;background:rgba(255,255,255,.06);color:var(--text);font:600 16px Outfit,sans-serif;padding:0 10px}
.tname::placeholder{color:rgba(185,173,217,.6);font-weight:400}
.tname:focus-visible,.tsign:focus-visible{outline:2px solid var(--gold);outline-offset:0}
.tsel{position:relative;min-width:0}
.tsign{width:100%;min-height:44px;appearance:none;-webkit-appearance:none;border:0;border-radius:10px;background:rgba(255,201,60,.1);color:var(--gold2);font:600 15px Outfit,sans-serif;padding:0 26px 0 10px;text-overflow:ellipsis}
.tsign option{color:#1A1233;background:#fff}
.tsel::after{content:"";position:absolute;right:11px;top:50%;width:7px;height:7px;border-right:2px solid var(--gold);border-bottom:2px solid var(--gold);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.tdel{width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.18);background:transparent;color:var(--soft);font-size:20px;line-height:1;padding:0}
.tdel:hover{color:#fff;border-color:rgba(255,111,145,.6)}
.tadd{align-self:flex-start;background:none;border:1px dashed rgba(255,201,60,.45);border-radius:999px;padding:10px 16px;color:var(--gold2);font-weight:700;font-size:14px}
.tadd:hover{border-style:solid}
.trole{display:flex;flex-direction:column;gap:6px}
.trole>span{font:700 12px Outfit,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--gold2);opacity:.85}
.trole .pills{grid-template-columns:1fr 1fr 1.25fr}
.terr{margin:0;color:#FF9CB8;font-weight:600;font-size:14px;min-height:0}
.terr:empty{display:none}

/* ===== pair + team cards ===== */
.match p{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.match .pct{font:900 clamp(54px,15vw,68px)/1 Fraunces,Georgia,serif;color:#C2185B;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.match .pt{font-weight:700;font-size:17px}
.cast{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.cast li{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border-radius:14px;background:#F6ECDF}
.cast .cg{flex:none;font:400 26px/1.1 "Segoe UI Symbol","Noto Sans Symbols",serif;color:#D88A12}
.cast .cb{min-width:0}
.cast b{font-size:16px}
.cast em{font-style:normal;font-weight:700;font-size:14px;color:#C2185B}
.cast small{display:block;font-size:13.5px;line-height:1.4;color:#5B4A6B;margin-top:2px}
.card.in.fx .cast li{animation:fxLeft .55s calc(var(--t1) + var(--j) * .12s) cubic-bezier(.2,1.1,.3,1) both}
.card.in .cast li{animation:fup .5s calc(.6s + var(--j) * .1s) both}

/* ===== share buttons ===== */
#actions{display:flex;flex-direction:column;gap:10px}
.shr{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.shr .btn{display:flex;align-items:center;justify-content:center;gap:10px;text-decoration:none}
.shr svg{width:20px;height:20px;flex:none}
.btn.shwa{background:linear-gradient(180deg,#3BE07A,#1FAF55);color:#04230F;box-shadow:0 10px 26px rgba(30,180,90,.28),inset 0 1px 0 rgba(255,255,255,.5)}
.btn.shwa:hover{box-shadow:0 0 0 3px rgba(60,224,122,.25),0 14px 32px rgba(30,180,90,.4)!important}
.btn.shteam{color:#FF9CC4;border-color:rgba(255,111,165,.45)}
.btn.home{margin-top:0}
.shov .ov-in{align-items:center;text-align:center}
.shimg{display:block;width:auto;max-width:100%;max-height:68vh;border-radius:14px;box-shadow:0 12px 40px rgba(0,0,0,.6)}
.shhelp{margin:0;color:#E9E1FF;font-size:15px;line-height:1.45}
.shov .btn{width:100%;display:flex;align-items:center;justify-content:center;text-decoration:none}
.ov.shov{z-index:70}
.shov .ov-in{padding:14px 14px 16px;gap:10px}
.shimg{max-height:72vh;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}

/* ===== install card ===== */
.inst{display:flex;align-items:center;gap:12px;padding:12px 10px 12px 14px;border-radius:18px;border:1px solid var(--goldline);background:rgba(10,7,26,.78);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:hUp .5s cubic-bezier(.2,1.1,.3,1) both}
.inst .ii{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:rgba(255,201,60,.14);color:var(--gold)}
.inst .ii svg{width:22px;height:22px}
.inst .it{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.inst b{font-size:15px;line-height:1.25}
.inst small{font-size:12.5px;line-height:1.35;color:var(--soft)}
.inst .ig{width:auto;min-height:40px;padding:0 16px;font-size:15px;flex:none}
.inst .ix{flex:none;width:32px;height:32px;border-radius:50%;border:0;background:transparent;color:var(--soft);font-size:20px;line-height:1;padding:0}
.instov h2{margin:0;font:900 22px/1.2 Fraunces,Georgia,serif;color:#fff}
.isteps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.isteps li{display:flex;gap:12px;align-items:center}
.isteps span{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:rgba(255,201,60,.14);color:var(--gold);font-weight:700}
.isteps svg{width:22px;height:22px}
.isteps p{margin:0;color:#E9E1FF;font-size:15px;line-height:1.45}
.ov.instov{z-index:70}
/* ===== AstroSlay result reveal (fx) ===== */
.fxc{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:40}

/* card arrives from deep space showing its back, then flips */
.card.in.fx{--t0:1s;--t1:2s;transform-origin:50% 180px;
  animation:fxArrive 1.1s both,fxShake .38s calc(var(--t0) + .32s) both,fxShake .38s calc(var(--t1) + .78s) both}
.card.in.fx.settled{animation:none;transition:transform .5s cubic-bezier(.2,.8,.2,1)}
@keyframes fxArrive{
  0%{opacity:0;transform:perspective(1200px) translateY(90px) scale(.5) rotateY(180deg) rotateZ(-10deg);animation-timing-function:cubic-bezier(.15,.8,.3,1)}
  14%{opacity:1}
  50%{transform:perspective(1200px) translateY(0) scale(.93) rotateY(180deg) rotateZ(0);animation-timing-function:cubic-bezier(.55,0,1,.6)}
  70%{transform:perspective(1200px) scale(1.03) rotateY(90deg);animation-timing-function:cubic-bezier(0,.4,.3,1.35)}
  100%{opacity:1;transform:perspective(1200px) scale(1) rotateY(0)}}
@keyframes fxShake{0%,100%{translate:0 0}20%{translate:-4px 2px}45%{translate:4px -1px}70%{translate:-2px 1px}}

/* the back of the card (tarot style) */
.card>.cback{position:absolute;inset:0;z-index:8;border-radius:inherit;pointer-events:none;overflow:hidden;transform:scaleX(-1);
  background:radial-gradient(circle at 50% 170px,#4A2496 0,#21114F 38%,#0E0828 75%);
  animation:fxBack 1.1s linear both}
.cback::before{content:"";position:absolute;inset:10px;border:1.5px solid rgba(255,201,60,.75);border-radius:15px;
  box-shadow:inset 0 0 0 5px rgba(14,8,40,.6),inset 0 0 0 6px rgba(255,201,60,.35)}
.cback::after{content:"";position:absolute;inset:0;opacity:.7;
  background-image:radial-gradient(1.2px 1.2px at 20% 30%,#fff,transparent),radial-gradient(1px 1px at 70% 15%,#ffe9a8,transparent),radial-gradient(1.4px 1.4px at 85% 60%,#fff,transparent),radial-gradient(1px 1px at 35% 75%,#fff,transparent),radial-gradient(1.2px 1.2px at 60% 90%,#ffe9a8,transparent),radial-gradient(1px 1px at 10% 85%,#fff,transparent);
  background-size:180px 180px}
.cback .o{position:absolute;top:60px;left:50%;width:220px;height:220px;margin-left:-110px;border:1px dashed rgba(255,201,60,.55);border-radius:50%;animation:fxSpin 7s linear infinite}
.cback .o.b{top:85px;width:170px;height:170px;margin-left:-85px;border-style:solid;border-color:rgba(255,201,60,.25);animation-duration:11s;animation-direction:reverse}
.cback .o::before{content:"";position:absolute;top:-5px;left:50%;width:9px;height:9px;margin-left:-4.5px;border-radius:50%;background:#FFC93C;box-shadow:0 0 12px #FFC93C}
.cback .g{position:absolute;top:110px;left:0;right:0;text-align:center;font:400 112px/1 "Segoe UI Symbol","Noto Sans Symbols",serif;color:#FFC93C;text-shadow:0 0 28px rgba(255,180,60,.7)}
.cback .n{position:absolute;top:310px;left:0;right:0;text-align:center;font:700 13px Outfit,sans-serif;letter-spacing:.45em;color:#FFD86B}
@keyframes fxBack{0%,69.5%{opacity:1}70%,100%{opacity:0}}
@keyframes fxSpin{to{transform:rotate(360deg)}}

/* light sweep after the flip, and hover sheen */
.card>.glint{position:absolute;inset:0;z-index:7;pointer-events:none;border-radius:inherit;overflow:hidden}
.glint::before{content:"";position:absolute;top:0;bottom:0;left:-45%;width:60%;transform:skewX(-18deg) translateX(0);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.55) 45%,rgba(255,236,180,.35) 55%,transparent);width:38%;
  animation:fxGlint 1.05s calc(var(--t0) - .1s) cubic-bezier(.35,.1,.25,1) both}
@keyframes fxGlint{from{transform:skewX(-18deg) translateX(0)}to{transform:skewX(-18deg) translateX(420%)}}
.glint::after{content:"";position:absolute;inset:0;opacity:0;transition:opacity .4s;
  background:radial-gradient(circle at var(--mx,50%) var(--my,30%),rgba(255,255,255,.45),rgba(255,220,140,.12) 28%,transparent 55%);mix-blend-mode:soft-light}
.card.tilt .glint::after{opacity:1}

/* stamp slams in */
.card.in.fx .stamp{animation:fxStamp .55s calc(var(--t0) + .15s) cubic-bezier(.2,1.5,.3,1) both}
@keyframes fxStamp{from{opacity:0;transform:scale(3.2) rotate(-35deg);filter:blur(4px) drop-shadow(0 20px 20px rgba(120,30,0,.3))}to{opacity:1;transform:rotate(8deg)}}

/* text */
.card.in.fx .who{animation:fxTrack .7s var(--t0) cubic-bezier(.2,.8,.2,1) both}
@keyframes fxTrack{from{opacity:0;letter-spacing:.7em;filter:blur(3px)}to{opacity:1;letter-spacing:.1em;filter:none}}
.card.in.fx .tag{animation:fxUp .6s calc(var(--t0) + .15s) both}
.card.in.fx .headline{animation:none}
.headline .w{display:inline-block;animation:fxWord .55s calc(var(--t0) + .25s + var(--d) * .05s) cubic-bezier(.2,1,.3,1.25) both}
@keyframes fxWord{from{opacity:0;transform:translateY(.55em) rotate(6deg) scale(.9);filter:blur(7px)}to{opacity:1;transform:none;filter:none}}
.card.in.fx .beat{animation:fxLeft .6s var(--t1) cubic-bezier(.2,.9,.3,1) both}
.card.in.fx .avoid{overflow:hidden;animation:fxRight .65s calc(var(--t1) + .22s) cubic-bezier(.2,1.25,.3,1) both}
.card.in.fx .avoid::after{content:"";position:absolute;inset:0;transform:translateX(-110%);
  background:linear-gradient(100deg,transparent 25%,rgba(255,255,255,.75) 50%,transparent 75%);animation:fxSweep .9s calc(var(--t1) + .55s) ease-out both}
.card.in.fx .final{transform-origin:0 50%;animation:fxSlam .55s calc(var(--t1) + .55s) cubic-bezier(.2,1.2,.3,1) both}
.card.in.fx .hook{animation:fxUp .55s calc(var(--t1) + .85s) both}
.card.in.fx .lu{animation:none}
.card.in.fx .lu li:first-child{animation:fxLeft .55s calc(var(--t1) + .95s) cubic-bezier(.2,.9,.3,1) both}
.card.in.fx .lu li:last-child{animation:fxRight .55s calc(var(--t1) + 1.03s) cubic-bezier(.2,.9,.3,1) both}
.card.in.fx .note,.card.in.fx .chapter{animation:fxUp .55s calc(var(--t1) + 1.1s) both}
.card.in.fx .rate{animation:fxUp .55s calc(var(--t1) + 1.15s) both}
.card.in.fx .stars5 b{animation:fxUp .4s calc(var(--t1) + 1.2s) both}
.card.in.fx .stars5 b.on{animation:fxPop .55s calc(var(--t1) + 1.3s + var(--i) * .12s) cubic-bezier(.2,1.6,.3,1) both}
.stars5.meh b.on{animation:fxDroop 1s cubic-bezier(.3,1.6,.5,1) both!important}
.stars5.meh b.on:nth-child(2){animation-delay:.08s!important}
.stars5.glow b.on{animation:fxGlow 1.6s ease-in-out infinite alternate!important}
@keyframes fxUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes fxLeft{from{opacity:0;transform:translateX(-36px)}to{opacity:1;transform:none}}
@keyframes fxRight{from{opacity:0;transform:translateX(44px) rotate(3deg)}to{opacity:1;transform:none}}
@keyframes fxSweep{to{transform:translateX(110%)}}
@keyframes fxSlam{0%{opacity:0;transform:scale(1.45);filter:blur(8px)}55%{opacity:1;transform:scale(.96);filter:none}100%{opacity:1;transform:none}}
@keyframes fxPop{0%{opacity:0;transform:scale(0) rotate(-200deg)}65%{opacity:1;transform:scale(1.5) rotate(15deg)}100%{opacity:1;transform:none}}
@keyframes fxDroop{0%{transform:none}25%{transform:rotate(-18deg)}50%{transform:rotate(14deg)}100%{transform:rotate(32deg) translateY(5px);filter:grayscale(.5)}}
@keyframes fxGlow{from{text-shadow:0 1px 0 #B87400,0 0 0 rgba(255,190,40,0)}to{text-shadow:0 1px 0 #B87400,0 0 14px rgba(255,190,40,.9)}}

/* page chrome during the reveal */
body.fxing #actions{opacity:0;pointer-events:none}
#actions{transition:opacity .5s}
.fxskip{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:45;padding:8px 16px;border-radius:999px;
  background:rgba(20,12,50,.75);border:1px solid rgba(255,255,255,.18);color:#E9DFFF;font:600 13px Outfit,sans-serif;letter-spacing:.02em;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;transition:opacity .4s;pointer-events:none}
body.fxing .fxskip{animation:fxHint 2.2s .3s both}
@keyframes fxHint{0%,100%{opacity:0}15%,75%{opacity:1}}

@media (prefers-reduced-motion:reduce){.cback,.glint,.fxc,.fxskip{display:none!important}}
