/* HOODRAID tokens
   palette: plum dungeon + hot candle red + trophy gold (pulled from the avatar/banner)
   type: Bungee (game-title display), Chakra Petch (HUD + body), Share Tech Mono (CA, numbers)
   shape: 3px black outlines, 6px corners, hard 0 4px 0 offset shadows (the art's cheap plastic bevel)
   spacing: 8 / 16 / 24 / 40 px
   motion: hit-shake, rage glow, floating damage numbers; all off under prefers-reduced-motion */
@font-face{font-family:"Bungee";font-weight:400;font-display:swap;src:url("assets/fonts/bungee-latin-400-normal.woff2") format("woff2");}
@font-face{font-family:"Chakra Petch";font-weight:500;font-display:swap;src:url("assets/fonts/chakra-petch-latin-500-normal.woff2") format("woff2");}
@font-face{font-family:"Chakra Petch";font-weight:700;font-display:swap;src:url("assets/fonts/chakra-petch-latin-700-normal.woff2") format("woff2");}
@font-face{font-family:"Share Tech Mono";font-weight:400;font-display:swap;src:url("assets/fonts/share-tech-mono-latin-400-normal.woff2") format("woff2");}

:root{
  --plum-950:#1B0B26; --plum-900:#2A1238; --plum-800:#3A1B4F; --plum-600:#6A3590;
  --candle:#E8261A; --candle-hot:#FF5A1F; --gold:#FFC928; --afk:#FFD23F;
  --bone:#F6E9D4; --dead:#6C6477; --ink:#0B0410;
  --rage:0;
  --display:"Bungee","Impact",sans-serif;
  --body:"Chakra Petch","Trebuchet MS",sans-serif;
  --mono:"Share Tech Mono",ui-monospace,Menlo,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--plum-950);color:var(--bone);font-family:var(--body);font-weight:500}
body{min-height:100vh;overflow-x:hidden}
.mono{font-family:var(--mono)}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

/* ---------- arena ---------- */
.arena{position:relative;min-height:100svh;display:grid;
  grid-template-columns:minmax(150px,210px) 1fr minmax(180px,230px);
  grid-template-rows:auto auto 1fr auto auto;
  grid-template-areas:"bar bar bar" "youbar youbar youbar" "party stage side" "bottom bottom bottom" "event event event";
  gap:16px 24px;padding:16px 24px 12px;overflow:hidden;isolation:isolate}
.youbar{grid-area:youbar;display:flex;align-items:center;gap:14px}
.youbar-title{font-family:var(--display);font-size:14px;letter-spacing:.04em;color:var(--gold);flex:none}
.hpbar-you{flex:1;height:22px;box-shadow:0 0 0 2px #9ad8c4,0 4px 0 2px var(--ink)}
.hpfill-you{background:linear-gradient(180deg,#5be8bd,#1f9e78)}
.hpbar-you .hpnum{font-size:12px}
.youbar-hint{font-family:var(--mono);font-size:11px;color:#b9a9cc;flex:none;letter-spacing:.03em}
.arena-bg{position:absolute;inset:0;z-index:-1;background:
  radial-gradient(ellipse at 50% 60%,rgba(232,38,26,calc(.10 + var(--rage)*.35)) 0,transparent 60%),
  linear-gradient(rgba(27,11,38,.55),rgba(27,11,38,.82)),url("assets/arena.jpg") center/cover}

.bossbar{grid-area:bar;display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center}
.bossbar-name{display:flex;flex-direction:column;line-height:1}
.bossbar-title{font-family:var(--display);font-size:clamp(18px,2.4vw,30px);letter-spacing:.02em;color:var(--bone);text-shadow:0 3px 0 var(--ink)}
.bossbar-lv{font-family:var(--display);font-size:13px;color:var(--gold);margin-top:6px}
.hpbar{position:relative;height:34px;background:var(--ink);border:3px solid var(--ink);border-radius:6px;box-shadow:0 0 0 3px #d7c9e6,0 5px 0 3px var(--ink);overflow:hidden}
.hpfill{position:absolute;inset:0 auto 0 0;width:100%;
  background:repeating-linear-gradient(115deg,rgba(0,0,0,0) 0 14px,rgba(0,0,0,.16) 14px 20px),linear-gradient(90deg,#1FA94B 0%,#C7C21A 38%,var(--candle-hot) 70%,var(--candle) 100%);
  background-size:auto,100vw 100%;transition:width .28s cubic-bezier(.2,.8,.2,1)}
.hpbar.low .hpfill{animation:blink .5s steps(2) infinite}
.hpnum{position:absolute;inset:0;display:grid;place-items:center;font-size:16px;letter-spacing:.08em;color:#fff;text-shadow:0 2px 0 var(--ink),0 0 4px var(--ink)}
.timer{display:flex;flex-direction:column;align-items:center;background:var(--gold);color:var(--ink);border:3px solid var(--ink);border-radius:50%;width:64px;height:64px;justify-content:center;box-shadow:0 4px 0 var(--ink);line-height:1}
.timer-label{font-family:var(--display);font-size:10px}
.timer-val{font-size:18px;margin-top:3px}

/* party */
.party{grid-area:party;display:flex;flex-direction:column;gap:12px;align-self:start;padding-top:8px}
.member{display:flex;align-items:center;gap:12px;background:rgba(11,4,16,.72);border:3px solid var(--ink);border-radius:6px;padding:8px 10px;box-shadow:0 4px 0 var(--ink)}
.portrait{width:48px;height:48px;border-radius:50%;border:3px solid var(--ink);display:grid;place-items:center;flex:none;box-shadow:inset 0 -5px 0 rgba(0,0,0,.25)}
.portrait svg{width:26px;height:26px;fill:currentColor}
.member-info{display:flex;flex-direction:column;gap:3px;min-width:0}
.member-name{font-family:var(--display);font-size:12px;letter-spacing:.03em}
.member.dead{filter:grayscale(.9)}
.member.dead .portrait{background:var(--dead);color:#1d1624}
.hp0{display:inline-block;background:var(--candle);color:#fff;padding:1px 8px;border:2px solid var(--ink);border-radius:3px;font-size:14px;width:max-content}
.member.afk{border-color:var(--afk);background:rgba(60,45,0,.78);animation:afkglow 2.6s ease-in-out infinite}
.member.afk .portrait{background:var(--afk);color:var(--ink)}
.afk-tag{background:var(--afk);color:var(--ink);font-weight:700;font-size:12px;line-height:1.2;padding:3px 7px;border:2px solid var(--ink);border-radius:3px}

/* stage / boss */
.stage{grid-area:stage;position:relative;display:grid;place-items:start center;min-height:460px;padding-top:6px}
.aura{position:absolute;left:50%;top:26%;width:min(52%,340px);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;
  background:radial-gradient(circle,rgba(255,90,31,calc(.18 + var(--rage)*.6)) 0,transparent 66%);filter:blur(6px);pointer-events:none}
/* owner, 2026-10-01: push the boss further back in the arena, smaller and higher,
   so there is real floor between it and the player to fire across */
.boss{position:relative;z-index:2;width:min(32vw,260px,34svh);background:none;padding:0;transform-origin:50% 100%;margin-top:4px;
  --amp:calc(1px + var(--rage)*5px);
  filter:drop-shadow(0 0 calc(8px + var(--rage)*34px) rgba(255,70,20,calc(.35 + var(--rage)*.65))) saturate(calc(1 + var(--rage)*.5)) brightness(calc(1 + var(--rage)*.12));
  animation:tremble calc(1.4s - var(--rage)*1s) ease-in-out infinite;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.boss img{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none}
.boss-foot{position:absolute;left:21%;right:21%;bottom:-6px;height:12px;background:var(--ink);border-radius:0 0 3px 3px}
.boss.hit{animation:hit .22s linear 1}
.boss.crit{animation:crit .32s linear 1}

/* dodge lanes: the open floor between the distant boss and the player */
.lanes{position:absolute;left:8%;right:8%;top:58%;bottom:70px;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;pointer-events:none}
.lane{border-left:2px dashed rgba(255,255,255,.08);border-right:2px dashed rgba(255,255,255,.08)}
.lane:first-child{border-left:none}.lane:last-child{border-right:none}
.shots-layer{position:absolute;inset:0;z-index:2}
.shot{position:absolute;width:22px;height:22px;border-radius:50%;left:50%;top:0;transform:translate(-50%,-50%);
  background:radial-gradient(circle at 35% 30%,#ffd98a,var(--candle) 60%,#6b0f08 100%);
  box-shadow:0 0 10px 3px rgba(255,90,31,.7);will-change:transform}
.shot.you-shot{width:10px;height:22px;border-radius:5px;
  background:linear-gradient(180deg,#fff8d8,var(--gold) 55%,#a8780f 100%);
  box-shadow:0 0 10px 3px rgba(255,201,40,.75)}
.you{position:absolute;z-index:3;bottom:72px;left:50%;width:46px;height:46px;border-radius:50%;background:var(--gold);
  border:3px solid var(--ink);display:grid;place-items:center;box-shadow:0 4px 0 var(--ink);color:var(--ink);
  transition:left .16s cubic-bezier(.3,1.4,.4,1)}
.you svg{width:26px;height:26px;fill:currentColor}
.you.hurt{animation:hit .22s linear 1}
.dodge-hint{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:3;margin:0;
  font-family:var(--mono);font-size:11px;color:#c8b9dc;letter-spacing:.03em;pointer-events:none;text-align:center}
.floor{position:absolute;z-index:3;left:-2%;right:-2%;bottom:-4px;height:clamp(30px,5svh,48px);
  background:linear-gradient(var(--plum-800),var(--plum-950));border-top:4px solid var(--ink);
  box-shadow:inset 0 6px 0 var(--plum-600)}
.floaters{position:absolute;inset:0;z-index:5;pointer-events:none}
.floater{position:absolute;font-family:var(--display);font-size:clamp(22px,3vw,34px);color:#fff;
  -webkit-text-stroke:2px var(--ink);paint-order:stroke fill;text-shadow:0 4px 0 var(--ink);animation:rise .9s ease-out forwards;white-space:nowrap}
.floater.crit{color:var(--gold);font-size:clamp(30px,4.4vw,52px)}
.banner-ko{position:absolute;z-index:6;left:50%;top:38%;transform:translate(-50%,-50%) rotate(-3deg);text-align:center;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.banner-ko[hidden]{display:none}
.ko-big{white-space:nowrap;font-family:var(--display);font-size:clamp(34px,7vw,84px);color:var(--gold);-webkit-text-stroke:4px var(--ink);paint-order:stroke fill;text-shadow:0 7px 0 var(--ink);animation:slam .5s cubic-bezier(.2,1.6,.4,1) both}
.ko-sub{font-weight:700;font-size:clamp(14px,1.6vw,18px);background:var(--ink);color:var(--bone);padding:6px 12px;border-radius:4px;max-width:30ch}
.arena.volley .stage{animation:volley-shake .26s ease-out}
.arena.volley .lanes::after{content:"";position:absolute;inset:0;background:var(--candle);opacity:.14;animation:volley-flash .26s ease-out;pointer-events:none}
@keyframes volley-shake{0%,100%{transform:translate(0,0)}25%{transform:translate(-5px,2px)}50%{transform:translate(5px,-2px)}75%{transform:translate(-3px,1px)}}
@keyframes volley-flash{0%{opacity:.38}100%{opacity:0}}
.arena[data-state="dead"] .boss{animation:fall 1.1s ease-in forwards;pointer-events:none}
.arena[data-state="dead"] .aura{opacity:0}
.arena[data-state="respawn"] .boss{animation:respawn .9s ease-out both}
.banner-lose{position:absolute;z-index:6;left:50%;top:44%;transform:translate(-50%,-50%) rotate(2deg);text-align:center;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.banner-lose[hidden]{display:none}
.lose-big{white-space:nowrap;font-family:var(--display);font-size:clamp(24px,8vw,56px);color:var(--candle);-webkit-text-stroke:4px var(--ink);paint-order:stroke fill;text-shadow:0 7px 0 var(--ink);animation:slam .5s cubic-bezier(.2,1.6,.4,1) both}
.lose-sub{font-weight:700;font-size:clamp(14px,1.6vw,18px);background:var(--ink);color:var(--bone);padding:6px 12px;border-radius:4px;max-width:30ch}

/* side menu */
.side{grid-area:side;display:flex;flex-direction:column;gap:16px;align-self:start;padding-top:8px;align-items:stretch}
.badge{display:flex;align-items:center;gap:12px;align-self:flex-end}
.badge img{width:72px;height:72px;border-radius:16px;border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink)}
.badge-text{display:flex;flex-direction:column;font-family:var(--display);line-height:.95;font-size:26px;color:var(--gold);-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;text-shadow:0 4px 0 var(--ink)}
.menu{display:flex;flex-direction:column;gap:12px}
.mbtn{display:flex;align-items:center;gap:10px;text-decoration:none;font-family:var(--display);font-size:13px;letter-spacing:.03em;background:var(--plum-600);color:#fff;padding:11px 14px;border:3px solid var(--ink);border-radius:6px;box-shadow:0 5px 0 var(--ink);transition:transform .08s,box-shadow .08s}
.mbtn svg{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:square}
.mbtn:hover{background:#7d41a8}
.mbtn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--ink)}
.mbtn-buy{background:var(--gold);color:var(--ink)}
.mbtn-buy:hover{background:#ffd95a}
.minimap{position:relative;align-self:flex-end;width:112px;height:112px;background:rgba(11,4,16,.7);border:3px solid var(--ink);border-radius:6px;box-shadow:0 0 0 2px var(--plum-600),0 4px 0 2px var(--ink);
  background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:14px 14px}
.dot{position:absolute;width:12px;height:12px;border-radius:50%;border:2px solid var(--ink)}
.d-boss{left:46px;top:30px;width:20px;height:28px;border-radius:2px;background:var(--candle);animation:blink 1.1s steps(2) infinite}
.d-dead{background:var(--dead)}
.d1{left:14px;bottom:14px}.d2{left:36px;bottom:8px}.d3{left:58px;bottom:16px}
.d-afk{right:10px;top:10px;background:var(--afk)}

/* bottom HUD */
.hud-bottom{grid-area:bottom;display:grid;grid-template-columns:1fr auto 1fr;gap:16px 24px;align-items:end}
.stats{display:flex;flex-direction:column;gap:4px;font-size:17px;color:#cdb9e0}
.stats b{color:var(--gold);font-weight:400;margin-left:4px}
.attack{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:min(300px,60vw);padding:14px 40px 10px;background:linear-gradient(var(--candle-hot),var(--candle) 55%,#B81610);color:#fff;border:4px solid var(--ink);border-radius:10px;box-shadow:0 8px 0 var(--ink),inset 0 4px 0 rgba(255,255,255,.35);transition:transform .06s,box-shadow .06s;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.attack-main{font-family:var(--display);font-size:clamp(28px,4vw,44px);letter-spacing:.04em;text-shadow:0 4px 0 var(--ink)}
.attack-sub{font-size:12px;letter-spacing:.14em;text-transform:uppercase;opacity:.85}
.attack:active,.attack.down{transform:translateY(6px);box-shadow:0 2px 0 var(--ink),inset 0 4px 0 rgba(255,255,255,.35)}
.attack:disabled{filter:grayscale(1) brightness(.7);cursor:default}
.ca{justify-self:end;text-align:left;display:flex;flex-direction:column;gap:2px;background:rgba(11,4,16,.82);border:3px solid var(--ink);border-radius:6px;padding:8px 14px;box-shadow:0 4px 0 var(--ink),0 0 0 2px var(--gold);max-width:100%}
.ca-label{font-family:var(--display);font-size:11px;color:var(--gold);letter-spacing:.06em}
.ca-value{font-size:clamp(14px,1.6vw,19px);color:var(--bone);overflow-wrap:anywhere;word-break:break-all}
.ca-hint{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#a58cc0}
.ca:hover .ca-hint{color:var(--gold)}
.ca.copied .ca-hint{color:#46e07a}
.event{grid-area:event;font-size:14px;color:#cdb9e0;min-height:1.4em;border-top:2px dashed rgba(255,255,255,.14);padding-top:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}

/* ---------- below the fold ---------- */
.wrap{max-width:1040px;margin:0 auto;padding:0 24px}
.h{font-family:var(--display);font-size:clamp(26px,4vw,44px);color:var(--bone);text-shadow:0 4px 0 var(--ink);letter-spacing:.02em}
.log-sec{background:var(--ink);border-top:6px solid var(--plum-600);padding:64px 0 56px}
.log{list-style:none;margin-top:24px;max-width:760px;font-size:17px;line-height:1.7;border-left:4px solid var(--candle);padding-left:20px}
.log li{padding:2px 0}
.log time{color:var(--gold);margin-right:10px}
.l-dim{color:#8d7fa0}
.l-afk{color:var(--afk)}
.l-you{color:#46e07a}
.log li.new{animation:flash .6s ease-out}
.faq-sec{background:var(--plum-900);padding:56px 0}
.faq-grid{display:grid;grid-template-columns:minmax(200px,1fr) 2fr;gap:24px 56px;align-items:start}
.faq details{background:var(--bone);color:var(--ink);border:3px solid var(--ink);border-radius:6px;box-shadow:0 4px 0 #000;margin-bottom:14px}
.faq details:nth-child(2n){transform:rotate(.4deg)}
.faq details:nth-child(3n){transform:rotate(-.5deg)}
.faq summary{cursor:pointer;list-style:none;font-family:var(--display);font-size:15px;padding:12px 16px;display:flex;justify-content:space-between;gap:12px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--candle)}
.faq details[open] summary::after{content:"-"}
.faq p{padding:0 16px 14px;font-size:17px;line-height:1.5}
.foot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:18px 24px;background:var(--ink);font-size:14px;color:#8d7fa0;border-top:2px solid var(--plum-800)}
#foot-ca{color:var(--bone);overflow-wrap:anywhere}

/* ---------- motion ---------- */
@keyframes tremble{0%,100%{transform:translate(0,0)}25%{transform:translate(var(--amp),0) rotate(calc(var(--rage)*.8deg))}75%{transform:translate(calc(var(--amp)*-1),0) rotate(calc(var(--rage)*-.8deg))}}
@keyframes hit{0%{transform:translate(0,0) scale(1)}20%{transform:translate(-14px,3px) scale(.96,1.02)}45%{transform:translate(12px,-2px) scale(1.02,.98)}70%{transform:translate(-7px,0)}100%{transform:translate(0,0)}}
@keyframes crit{0%{transform:translate(0,0) scale(1)}15%{transform:translate(-26px,6px) scale(.92,1.05) rotate(-3deg)}40%{transform:translate(22px,-4px) scale(1.05,.95) rotate(3deg)}65%{transform:translate(-12px,2px) rotate(-1deg)}100%{transform:translate(0,0)}}
@keyframes rise{0%{opacity:0;transform:translate(-50%,10px) scale(.6)}15%{opacity:1;transform:translate(-50%,-6px) scale(1.15)}100%{opacity:0;transform:translate(-50%,-90px) scale(1)}}
@keyframes slam{0%{transform:scale(3);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes fall{0%{transform:rotate(0);opacity:1;filter:none}60%{transform:rotate(14deg) translateY(10px);opacity:1}100%{transform:rotate(90deg) translate(30%,40%);opacity:0;filter:grayscale(1)}}
@keyframes respawn{0%{transform:scale(.4);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes blink{50%{opacity:.35}}
@keyframes afkglow{0%,100%{box-shadow:0 4px 0 var(--ink),0 0 0 0 rgba(255,210,63,0)}50%{box-shadow:0 4px 0 var(--ink),0 0 18px 2px rgba(255,210,63,.55)}}
@keyframes flash{0%{background:rgba(255,201,40,.35)}100%{background:transparent}}

/* ---------- small screens ---------- */
@media (max-width:900px){
  .arena{grid-template-columns:1fr;grid-template-rows:auto auto auto auto auto auto auto;
    grid-template-areas:"bar" "youbar" "stage" "party" "side" "bottom" "event";gap:14px;padding:12px 14px 10px}
  .bossbar{grid-template-columns:1fr auto;gap:8px 12px}
  .bossbar-name{flex-direction:row;align-items:baseline;gap:10px}
  .hpbar{grid-column:1/-1;grid-row:2;height:30px}
  .timer{width:60px;height:60px}.timer-val{font-size:15px}
  .party{flex-direction:row;gap:8px;padding-top:0}
  .member{flex:1;flex-direction:column;text-align:center;gap:6px;padding:8px 4px;min-width:0}
  .member-info{align-items:center}
  .member-name{font-size:10px}
  .afk-tag{font-size:10px}
  .hp0{font-size:12px;padding:0 5px}
  .stage{min-height:min(440px,62svh)}
  .boss{width:min(46vw,190px)}
  .lanes{top:46%;left:2%;right:2%}
  .youbar{gap:8px}.youbar-hint{display:none}
  .party .member{padding:6px 2px}
  .side{flex-direction:row;flex-wrap:wrap;align-items:center;padding-top:0}
  .badge{display:none}
  .minimap{display:none}
  .menu{flex-direction:row;flex-wrap:wrap;flex:1}
  .mbtn{flex:1 1 auto;justify-content:center;font-size:11px;padding:10px}
  .hud-bottom{grid-template-columns:1fr;justify-items:stretch}
  .stats{flex-direction:row;justify-content:space-between;order:2;font-size:14px}
  .attack{position:fixed;left:14px;right:14px;bottom:max(10px,env(safe-area-inset-bottom));z-index:60;width:auto;padding-top:8px;padding-bottom:8px}
  .attack-sub{display:none}
  .foot{padding-bottom:96px}
  .event{margin-bottom:6px}
  .ca{order:3;justify-self:stretch}
  .faq-grid{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  .boss,.boss.hit,.boss.crit,.member.afk,.d-boss,.hpbar.low .hpfill{animation:none!important}
  .floater{animation-duration:.01s}
  .ko-big{animation:none}
  .hpfill{transition:none}
  .arena[data-state="dead"] .boss{animation:none!important;opacity:.25}
  .arena[data-state="respawn"] .boss{animation:none!important}
}
