:root {
    --dojo-red: #ff3b38;
    --dojo-crimson: #a9132b;
    --dojo-cyan: #4ee8ff;
    --dojo-gold: #ffd675;
    --dojo-ivory: #fff3cf;
    --dojo-ink: #050611;
    color-scheme: dark;
    font-family: "Arial Narrow", "Roboto Condensed", Impact, system-ui, sans-serif;
}

* { box-sizing: border-box; }

html,
body {
    width: 100%;
    min-width: 320px;
    min-height: 100%;
    margin: 0;
    overflow: hidden;
    color: #fff9e8;
    background: #020308;
}

button,
a {
    color: inherit;
    font: inherit;
    -webkit-tap-highlight-color: transparent;
}

.dojo-shell {
    display: flex;
    justify-content: center;
    width: 100%;
    min-height: 100dvh;
    background:
        radial-gradient(ellipse at center, rgba(33, 62, 105, .27), transparent 60%),
        #020308;
}

.dojo-stage {
    position: relative;
    width: min(100%, calc(100dvh * .5625));
    height: 100dvh;
    min-height: 540px;
    overflow: hidden;
    background: #07101b;
    box-shadow: 0 0 0 1px rgba(255, 208, 128, .12), 0 0 90px rgba(15, 73, 126, .22);
    isolation: isolate;
    touch-action: none;
}

.dojo-stage:fullscreen,
.dojo-stage:-webkit-full-screen {
    width: min(100vw, calc(100dvh * .5625));
    height: 100dvh;
    margin: auto;
}

.dojo-arena,
.dojo-arena__backdrop,
.dojo-arena__rain,
.dojo-arena__mist,
.dojo-arena__floor-glow {
    position: absolute;
    inset: 0;
}

.dojo-arena {
    z-index: 0;
    overflow: hidden;
    background: #07101b;
}

.dojo-arena__backdrop {
    inset: -2%;
    background: url("/public/assets/images/sleep-live/dojo-clash/neon-shogun-arena.png") center 54% / cover no-repeat;
    filter: saturate(1.08) contrast(1.04);
    transform: scale(1.04);
    animation: dojo-arena-breathe 9s ease-in-out infinite alternate;
}

.dojo-arena__moon-glow {
    position: absolute;
    z-index: 1;
    top: 4%;
    left: 50%;
    width: 46%;
    aspect-ratio: 1;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(126, 197, 255, .22), rgba(74, 133, 255, .08) 36%, transparent 70%);
    filter: blur(12px);
    transform: translateX(-50%);
    animation: dojo-moon-pulse 4s ease-in-out infinite alternate;
}

.dojo-arena__rain {
    z-index: 2;
    inset: -20% -30%;
    background-image: repeating-linear-gradient(103deg, transparent 0 18px, rgba(192, 225, 255, .32) 19px 20px, transparent 21px 38px);
    background-size: 53px 97px;
    transform: rotate(-8deg);
    pointer-events: none;
}

.dojo-arena__rain--far {
    opacity: .25;
    animation: dojo-rain-far .7s linear infinite;
}

.dojo-arena__rain--near {
    background-size: 89px 155px;
    opacity: .3;
    filter: blur(.4px);
    animation: dojo-rain-near .46s linear infinite;
}

.dojo-arena__mist {
    z-index: 2;
    top: 43%;
    height: 32%;
    background:
        radial-gradient(ellipse at 12% 48%, rgba(114, 186, 220, .13), transparent 35%),
        radial-gradient(ellipse at 85% 52%, rgba(111, 139, 194, .15), transparent 38%);
    filter: blur(12px);
    animation: dojo-mist 8s ease-in-out infinite alternate;
}

.dojo-arena__floor-glow {
    z-index: 2;
    top: 59%;
    background:
        radial-gradient(ellipse at 22% 64%, rgba(255, 30, 34, .18), transparent 28%),
        radial-gradient(ellipse at 78% 62%, rgba(37, 187, 255, .18), transparent 29%),
        linear-gradient(transparent, rgba(3, 5, 12, .24));
    mix-blend-mode: screen;
}

#dojoFxCanvas {
    position: absolute;
    z-index: 5;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.dojo-scanlines,
.dojo-vignette {
    position: absolute;
    z-index: 30;
    inset: 0;
    pointer-events: none;
}

.dojo-scanlines {
    opacity: .12;
    background: repeating-linear-gradient(180deg, rgba(255,255,255,.22) 0 1px, transparent 1px 4px);
    mix-blend-mode: overlay;
}

.dojo-vignette {
    background:
        radial-gradient(ellipse at center, transparent 42%, rgba(0, 0, 0, .34) 100%),
        linear-gradient(90deg, rgba(255, 27, 27, .05), transparent 25% 75%, rgba(43, 190, 255, .05));
}

.dojo-marquee,
.dojo-scoreboard,
.dojo-round-pips,
.dojo-move-feed,
.dojo-controls,
.dojo-fullscreen-prompt {
    position: absolute;
    z-index: 10;
}

.dojo-marquee {
    top: max(10px, env(safe-area-inset-top));
    right: 12px;
    left: 12px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 52px;
    padding: 6px 10px;
    border: 1px solid rgba(255, 220, 150, .33);
    border-top: 2px solid rgba(255, 222, 143, .66);
    background:
        linear-gradient(90deg, rgba(82, 9, 18, .93), rgba(8, 9, 18, .93) 43% 57%, rgba(5, 40, 58, .93)),
        #080912;
    box-shadow: 0 5px 0 rgba(0,0,0,.35), inset 0 1px rgba(255,255,255,.08), 0 0 25px rgba(255, 28, 33, .09);
    clip-path: polygon(8px 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 0 100%, 0 8px);
    backdrop-filter: blur(9px);
}

.dojo-brand,
.dojo-live {
    display: flex;
    align-items: center;
}

.dojo-brand { gap: 8px; }
.dojo-brand > span:last-child { display: grid; }
.dojo-brand strong {
    color: var(--dojo-ivory);
    font-size: clamp(10px, 3.2vw, 15px);
    font-style: italic;
    font-weight: 1000;
    letter-spacing: .09em;
    line-height: .9;
    text-shadow: 2px 2px #6e1420, 0 0 13px rgba(255, 67, 53, .43);
    transform: skewX(-7deg);
}

.dojo-brand small {
    margin-top: 4px;
    color: #da9f67;
    font-size: 5px;
    font-weight: 1000;
    letter-spacing: .25em;
}

.dojo-brand__crest,
.dojo-audio-gate__crest {
    position: relative;
    display: grid;
    place-items: center;
    width: 35px;
    height: 35px;
    border: 2px solid var(--dojo-gold);
    border-radius: 50%;
    background: radial-gradient(circle, #8e1821, #33060c);
    box-shadow: 0 0 0 2px rgba(74, 7, 12, .9), 0 0 15px rgba(255, 59, 39, .35);
}

.dojo-brand__crest::before,
.dojo-brand__crest::after,
.dojo-brand__crest i::before,
.dojo-brand__crest i::after,
.dojo-audio-gate__crest::before,
.dojo-audio-gate__crest::after,
.dojo-audio-gate__crest i::before,
.dojo-audio-gate__crest i::after {
    position: absolute;
    width: 3px;
    height: 21px;
    background: var(--dojo-gold);
    content: "";
    transform: rotate(45deg);
}

.dojo-brand__crest::after,
.dojo-audio-gate__crest::after { transform: rotate(-45deg); }
.dojo-brand__crest i::before,
.dojo-audio-gate__crest i::before { transform: rotate(90deg) scaleY(.72); }
.dojo-brand__crest i::after,
.dojo-audio-gate__crest i::after { transform: rotate(0) scaleY(.72); }

.dojo-live {
    display: grid;
    grid-template-columns: auto auto;
    gap: 2px 5px;
    text-align: right;
}

.dojo-live i {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--dojo-red);
    box-shadow: 0 0 9px var(--dojo-red);
    animation: dojo-live-pulse .75s ease-in-out infinite alternate;
}

.dojo-live span { color: #ff8c72; font-size: 5px; font-weight: 1000; letter-spacing: .13em; }
.dojo-live strong { grid-column: 1 / 3; color: #e7d5b2; font-size: 10px; letter-spacing: .08em; }

.dojo-scoreboard {
    top: calc(max(10px, env(safe-area-inset-top)) + 61px);
    right: 12px;
    left: 12px;
    display: grid;
    grid-template-columns: 1fr 52px 1fr;
    gap: 5px;
}

.dojo-player__name {
    display: flex;
    align-items: center;
    gap: 4px;
    height: 19px;
}

.dojo-player--raiden .dojo-player__name { justify-content: end; }
.dojo-player__name span {
    padding: 2px 4px;
    color: #190508;
    background: var(--dojo-gold);
    font-size: 5px;
    font-weight: 1000;
}

.dojo-player__name strong {
    font-size: clamp(9px, 2.75vw, 13px);
    font-style: italic;
    font-weight: 1000;
    letter-spacing: .08em;
    text-shadow: 2px 2px #4c0b12;
}

.dojo-player--vesper .dojo-player__name strong { color: #ffd4b0; }
.dojo-player--raiden .dojo-player__name strong { color: #b9f1ff; text-shadow: 2px 2px #063f54; }
.dojo-player__name small {
    margin-left: auto;
    color: rgba(255,255,255,.56);
    font-size: 4px;
    font-weight: 1000;
    letter-spacing: .08em;
}
.dojo-player--raiden .dojo-player__name small { order: -1; margin: 0 auto 0 0; }

.dojo-health {
    position: relative;
    height: 22px;
    overflow: hidden;
    border: 2px solid #e9c075;
    background: #2e0710;
    box-shadow: inset 0 0 0 2px #120208, 0 3px 0 rgba(0,0,0,.48);
    clip-path: polygon(0 0, 100% 0, calc(100% - 9px) 100%, 0 100%);
}

.dojo-health--right { clip-path: polygon(0 0, 100% 0, 100% 100%, 9px 100%); }
.dojo-health i,
.dojo-health b {
    position: absolute;
    inset: 3px;
    display: block;
    transform-origin: left;
}

.dojo-health i {
    z-index: 2;
    background:
        linear-gradient(180deg, rgba(255,255,255,.44), transparent 42%),
        linear-gradient(90deg, #5be481, #d6ed54 57%, #ffbc43);
    box-shadow: 0 0 8px rgba(118, 235, 98, .4);
    transition: transform .18s linear;
}

.dojo-health b {
    z-index: 1;
    background: #e8372d;
    transition: transform .62s ease-out;
}

.dojo-health--right i,
.dojo-health--right b { transform-origin: right; }

.dojo-super {
    height: 7px;
    margin-top: 4px;
    overflow: hidden;
    border: 1px solid rgba(126, 221, 255, .52);
    background: rgba(2, 12, 21, .87);
}

.dojo-super i {
    display: block;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, #295fff, #40e9ff 65%, #fff);
    box-shadow: 0 0 9px #33bfff;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .2s linear;
}

.dojo-super--right i { transform-origin: right; }

.dojo-round {
    position: relative;
    display: grid;
    justify-items: center;
    align-content: center;
    height: 57px;
    margin-top: 16px;
    border: 2px solid #d19d4c;
    background: radial-gradient(circle, #65101a, #16050a 70%);
    box-shadow: 0 0 0 2px rgba(15, 3, 5, .9), 0 0 16px rgba(255, 53, 35, .35);
    clip-path: polygon(50% 0, 100% 20%, 89% 84%, 50% 100%, 11% 84%, 0 20%);
}

.dojo-round span { color: #da9f67; font-size: 4px; font-weight: 1000; letter-spacing: .14em; }
.dojo-round strong { color: var(--dojo-ivory); font: 1000 18px/.9 Georgia, serif; text-shadow: 2px 2px #7d1521; }
.dojo-round small { color: var(--dojo-gold); font-size: 6px; font-weight: 1000; }

.dojo-round-pips {
    top: calc(max(10px, env(safe-area-inset-top)) + 139px);
    right: 18px;
    left: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 11px;
}

.dojo-round-pips > span { display: flex; gap: 4px; }
.dojo-round-pips > span:last-child { flex-direction: row-reverse; }
.dojo-round-pips i {
    display: block;
    width: 8px;
    height: 8px;
    border: 1px solid rgba(255, 211, 121, .62);
    border-radius: 50%;
    background: rgba(7, 8, 15, .8);
    transform: rotate(45deg);
}

.dojo-round-pips i.is-won {
    background: var(--dojo-gold);
    box-shadow: 0 0 8px rgba(255, 214, 117, .8);
}

.dojo-round-pips strong { color: rgba(255, 235, 194, .54); font-size: 4px; letter-spacing: .12em; }

.dojo-fight-space {
    position: absolute;
    z-index: 3;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
}

.dojo-fighter {
    --fighter-x: 0px;
    --fighter-y: 0px;
    --fighter-rotate: 0deg;
    --fighter-scale: 1;
    --pose-x: 0%;
    --sprite-url: url("/public/assets/images/sleep-live/dojo-clash/vesper-motion.png");
    position: absolute;
    bottom: 15.2%;
    width: 55%;
    height: 50%;
    transform: translate3d(var(--fighter-x), var(--fighter-y), 0) rotate(var(--fighter-rotate)) scale(var(--fighter-scale));
    transform-origin: 50% 100%;
    will-change: transform, filter;
}

.dojo-fighter--vesper { left: -1.5%; }
.dojo-fighter--raiden {
    --sprite-url: url("/public/assets/images/sleep-live/dojo-clash/raiden-motion.png");
    right: -2.5%;
}

.dojo-fighter__sprite {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background-image: var(--sprite-url);
    background-position: var(--pose-x) center;
    background-repeat: no-repeat;
    background-size: 300% 100%;
    filter: drop-shadow(0 15px 8px rgba(0,0,0,.72));
    transition: filter .12s;
    will-change: background-position, filter;
}

.dojo-fighter.is-hit .dojo-fighter__sprite {
    filter: brightness(2.1) saturate(.4) drop-shadow(0 0 12px #fff) drop-shadow(0 15px 8px rgba(0,0,0,.72));
}

.dojo-fighter.is-blocking .dojo-fighter__sprite {
    filter: brightness(.78) saturate(.8) drop-shadow(0 0 10px rgba(87, 218, 255, .6)) drop-shadow(0 15px 8px rgba(0,0,0,.72));
}

.dojo-fighter__aura {
    position: absolute;
    z-index: -1;
    inset: 12% 12% 4%;
    border-radius: 45%;
    background: radial-gradient(ellipse, rgba(255,255,255,.48), rgba(255, 37, 52, .19) 35%, transparent 70%);
    filter: blur(16px);
    opacity: 0;
    transform: scale(.8);
}

.dojo-fighter--raiden .dojo-fighter__aura {
    background: radial-gradient(ellipse, rgba(255,255,255,.5), rgba(38, 190, 255, .2) 35%, transparent 70%);
}

.dojo-fighter.is-super .dojo-fighter__aura {
    opacity: 1;
    transform: scale(1.16);
    animation: dojo-aura .3s ease-in-out infinite alternate;
}

.dojo-shadow {
    position: absolute;
    bottom: 14.5%;
    width: 39%;
    height: 5%;
    border-radius: 50%;
    background: radial-gradient(ellipse, rgba(0,0,0,.78), rgba(0,0,0,.28) 48%, transparent 72%);
    filter: blur(4px);
    opacity: .74;
    transform: scaleX(var(--shadow-scale, 1)) translateX(var(--shadow-x, 0));
}

.dojo-shadow--vesper { left: 4%; }
.dojo-shadow--raiden { right: 4%; }

.dojo-impact {
    position: absolute;
    z-index: 7;
    top: 53%;
    left: 50%;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 0 12px 6px #ffef89, 0 0 34px 18px rgba(255, 50, 30, .82);
    opacity: 0;
    transform: translate(-50%, -50%) scale(.2);
}

.dojo-impact.is-visible {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
    animation: dojo-impact .24s ease-out forwards;
}

.dojo-impact i {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 64px;
    height: 3px;
    background: linear-gradient(90deg, #fff, #ffb52f, transparent);
    transform: rotate(calc(var(--spark-angle, 0) * 1deg));
    transform-origin: 0 50%;
}

.dojo-impact i:nth-child(1) { --spark-angle: 5; }
.dojo-impact i:nth-child(2) { --spark-angle: 54; }
.dojo-impact i:nth-child(3) { --spark-angle: 117; }
.dojo-impact i:nth-child(4) { --spark-angle: 174; }
.dojo-impact i:nth-child(5) { --spark-angle: 231; }
.dojo-impact i:nth-child(6) { --spark-angle: 304; }

.dojo-projectile {
    position: absolute;
    z-index: 6;
    top: 57%;
    left: 28%;
    width: 45px;
    height: 45px;
    border: 2px solid #c9f7ff;
    border-radius: 50%;
    background: radial-gradient(circle, #fff 0 12%, #5be9ff 30%, rgba(12, 96, 218, .6) 55%, transparent 72%);
    box-shadow: 0 0 15px #5be9ff, 0 0 40px rgba(42, 110, 255, .75);
    opacity: 0;
}

.dojo-projectile i {
    position: absolute;
    top: 50%;
    right: 70%;
    width: 90px;
    height: 18px;
    background: linear-gradient(90deg, transparent, rgba(78, 232, 255, .65));
    filter: blur(5px);
    transform: translateY(-50%);
}

.dojo-projectile.is-active {
    opacity: 1;
    animation: dojo-projectile .68s cubic-bezier(.3, .04, .6, .94) forwards;
}

.dojo-projectile.is-reversed {
    left: auto;
    right: 28%;
    animation-name: dojo-projectile-reverse;
}

.dojo-projectile.is-reversed i {
    right: auto;
    left: 70%;
    background: linear-gradient(90deg, rgba(255, 68, 50, .65), transparent);
}

.dojo-special-wash {
    position: absolute;
    z-index: 4;
    inset: 0;
    background:
        radial-gradient(circle at 50% 52%, rgba(255,255,255,.72), rgba(70, 130, 255, .32) 23%, transparent 58%),
        rgba(4, 11, 29, .48);
    opacity: 0;
    mix-blend-mode: screen;
}

.dojo-special-wash.is-visible { animation: dojo-special-wash .72s ease-out forwards; }

.dojo-combo {
    position: absolute;
    z-index: 12;
    top: 35%;
    left: -42%;
    display: grid;
    padding: 7px 16px 8px 12px;
    border-left: 3px solid var(--dojo-gold);
    background: linear-gradient(90deg, rgba(68, 5, 13, .93), rgba(8, 8, 16, .86), transparent);
    opacity: 0;
    transform: skewX(-8deg);
    transition: .22s cubic-bezier(.2,.9,.3,1);
}

.dojo-combo.is-visible { left: 0; opacity: 1; }
.dojo-combo strong {
    color: var(--dojo-gold);
    font-size: clamp(20px, 6vw, 30px);
    font-style: italic;
    font-weight: 1000;
    letter-spacing: -.04em;
    line-height: .9;
    text-shadow: 3px 3px #83121c, 0 0 15px rgba(255, 62, 42, .54);
}
.dojo-combo em { font-style: normal; }
.dojo-combo span { margin-top: 4px; color: #fff1cc; font-size: 5px; font-weight: 1000; letter-spacing: .18em; }
.dojo-combo.is-right { right: -42%; left: auto; border-right: 3px solid var(--dojo-cyan); border-left: 0; text-align: right; }
.dojo-combo.is-right.is-visible { right: 0; }
.dojo-combo.is-right strong { color: var(--dojo-cyan); text-shadow: 3px 3px #063c58, 0 0 15px rgba(65, 207, 255, .54); }

.dojo-callout {
    position: absolute;
    z-index: 14;
    top: 47%;
    left: 50%;
    display: grid;
    justify-items: center;
    width: 92%;
    padding: 12px;
    text-align: center;
    opacity: 0;
    transform: translate(-50%, -50%) scale(.75) rotate(-2deg);
    pointer-events: none;
}

.dojo-callout::before,
.dojo-callout::after {
    position: absolute;
    top: 50%;
    right: 0;
    left: 0;
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--dojo-gold) 15%, transparent 42% 58%, var(--dojo-gold) 85%, transparent);
    content: "";
    transform: translateY(-50%);
}

.dojo-callout::after { height: 62px; border-top: 1px solid rgba(255, 214, 117, .38); border-bottom: 1px solid rgba(255, 214, 117, .38); background: linear-gradient(90deg, transparent, rgba(6, 5, 13, .92) 15% 85%, transparent); }
.dojo-callout > * { position: relative; z-index: 1; }
.dojo-callout.is-visible { animation: dojo-callout .42s cubic-bezier(.17,.88,.28,1.25) forwards; }
.dojo-callout span { color: #e0a86b; font-size: 6px; font-weight: 1000; letter-spacing: .28em; }
.dojo-callout strong {
    margin: 4px 0 1px;
    color: var(--dojo-ivory);
    font-size: clamp(31px, 10vw, 52px);
    font-style: italic;
    font-weight: 1000;
    letter-spacing: -.04em;
    line-height: .82;
    text-shadow: 4px 4px #7d101c, 0 0 18px rgba(255, 54, 35, .38);
}
.dojo-callout small { color: var(--dojo-gold); font-size: 10px; font-weight: 1000; letter-spacing: .3em; }

.dojo-move-feed {
    right: 12px;
    bottom: calc(max(75px, env(safe-area-inset-bottom) + 68px));
    left: 12px;
    min-height: 39px;
    padding: 7px 10px;
    border: 1px solid rgba(240, 197, 117, .22);
    border-left: 3px solid var(--dojo-red);
    background: linear-gradient(90deg, rgba(51, 6, 13, .87), rgba(6, 8, 17, .83));
    box-shadow: 0 5px 18px rgba(0,0,0,.32);
    backdrop-filter: blur(8px);
}
.dojo-move-feed span { display: block; color: #ac7f71; font-size: 5px; font-weight: 1000; letter-spacing: .14em; }
.dojo-move-feed span i { display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: var(--dojo-red); box-shadow: 0 0 7px var(--dojo-red); }
.dojo-move-feed strong { display: block; margin-top: 3px; overflow: hidden; color: #efe4cc; font-size: 7px; letter-spacing: .03em; text-overflow: ellipsis; white-space: nowrap; }

.dojo-pause,
.dojo-audio-gate {
    position: absolute;
    z-index: 40;
    inset: 0;
    align-content: center;
    justify-items: center;
    padding: 32px;
    text-align: center;
    background: rgba(3, 4, 10, .91);
    backdrop-filter: blur(12px);
}

.dojo-pause:not([hidden]) { display: grid; }
.dojo-pause span { color: var(--dojo-red); font-size: 8px; font-weight: 1000; letter-spacing: .22em; }
.dojo-pause strong { margin: 9px 0 18px; font-size: 15px; }
.dojo-pause button,
.dojo-audio-gate button {
    min-width: 190px;
    min-height: 41px;
    border: 1px solid rgba(255, 214, 117, .54);
    color: #1d0608;
    background: linear-gradient(135deg, #ffd779, #ff5b3e);
    box-shadow: 0 8px 20px rgba(130, 14, 24, .38);
    font-size: 7px;
    font-weight: 1000;
    letter-spacing: .09em;
    clip-path: polygon(6px 0, 100% 0, calc(100% - 6px) 100%, 0 100%);
    cursor: pointer;
}

.dojo-audio-gate {
    display: grid;
    background:
        radial-gradient(circle at 50% 43%, rgba(117, 14, 27, .45), rgba(3, 4, 10, .96) 58%),
        rgba(3, 4, 10, .96);
}

.dojo-audio-gate.is-dismissed { display: none; }
.dojo-audio-gate__crest { width: 67px; height: 67px; margin-bottom: 18px; }
.dojo-audio-gate__crest::before,
.dojo-audio-gate__crest::after,
.dojo-audio-gate__crest i::before,
.dojo-audio-gate__crest i::after { width: 5px; height: 38px; }
.dojo-audio-gate > span:nth-child(2) { color: #df9e66; font-size: 6px; font-weight: 1000; letter-spacing: .19em; text-transform: uppercase; }
.dojo-audio-gate strong { margin-top: 8px; color: var(--dojo-ivory); font-size: 24px; font-style: italic; font-weight: 1000; letter-spacing: -.03em; text-transform: uppercase; text-shadow: 3px 3px #75121c; }
.dojo-audio-gate p { max-width: 285px; margin: 9px 0 20px; color: #a39285; font-size: 7px; line-height: 1.65; }
.dojo-audio-gate button + button { margin-top: 8px; border-color: rgba(210, 182, 132, .25); color: #d8c7ad; background: rgba(255,255,255,.045); box-shadow: none; }

.dojo-controls {
    right: 12px;
    bottom: max(12px, env(safe-area-inset-bottom));
    left: 12px;
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 4px;
    padding: 5px;
    border: 1px solid rgba(229, 185, 111, .28);
    border-bottom-color: rgba(255, 76, 56, .42);
    background: linear-gradient(90deg, rgba(63, 7, 14, .92), rgba(6, 8, 16, .94) 50%, rgba(3, 36, 51, .92));
    box-shadow: 0 -8px 28px rgba(0,0,0,.38);
    backdrop-filter: blur(10px);
}

.dojo-controls a,
.dojo-controls button {
    display: grid;
    place-items: center;
    min-width: 0;
    height: 35px;
    padding: 0;
    border: 1px solid rgba(218, 182, 121, .18);
    color: #bda98b;
    background: rgba(255,255,255,.035);
    text-decoration: none;
    cursor: pointer;
}
.dojo-controls button:hover,
.dojo-controls a:hover { border-color: rgba(255, 214, 117, .52); color: var(--dojo-gold); }
.dojo-controls svg { width: 16px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
.dojo-controls span { font-size: 7px; font-weight: 1000; }
.dojo-controls .icon-play,
.dojo-controls .icon-muted,
.dojo-controls .icon-exit-fullscreen { display: none; }
.dojo-stage.is-paused .dojo-controls .icon-pause { display: none; }
.dojo-stage.is-paused .dojo-controls .icon-play,
.dojo-controls .is-muted .icon-muted { display: block; }
.dojo-controls .is-muted .icon-sound { display: none; }
.dojo-stage.is-fullscreen .icon-enter-fullscreen { display: none; }
.dojo-stage.is-fullscreen .icon-exit-fullscreen { display: block; }

.dojo-fullscreen-prompt {
    right: 17px;
    bottom: calc(max(12px, env(safe-area-inset-bottom)) + 51px);
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    border: 1px solid rgba(255, 214, 117, .29);
    color: var(--dojo-gold);
    background: rgba(26, 6, 11, .83);
    box-shadow: 0 0 20px rgba(255, 48, 38, .08);
    cursor: pointer;
    transition: opacity .2s ease;
}
.dojo-fullscreen-prompt svg { width: 16px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.dojo-fullscreen-prompt span { display: grid; color: #9a8773; font-size: 5px; text-align: left; }
.dojo-fullscreen-prompt strong { color: #f4e5ca; font-size: 7px; }
.dojo-stage.is-fullscreen .dojo-fullscreen-prompt { opacity: 0; pointer-events: none; }

@keyframes dojo-arena-breathe {
    to { transform: scale(1.065) translateY(-.35%); }
}

@keyframes dojo-moon-pulse {
    to { opacity: .65; transform: translateX(-50%) scale(1.12); }
}

@keyframes dojo-rain-far {
    to { background-position: -17px 97px; }
}

@keyframes dojo-rain-near {
    to { background-position: -28px 155px; }
}

@keyframes dojo-mist {
    to { transform: translateX(5%); }
}

@keyframes dojo-live-pulse {
    to { opacity: .35; transform: scale(.75); }
}

@keyframes dojo-aura {
    to { opacity: .52; transform: scale(1.26); }
}

@keyframes dojo-impact {
    0% { opacity: 1; transform: translate(-50%, -50%) scale(.25) rotate(0); }
    70% { opacity: .9; transform: translate(-50%, -50%) scale(1.45) rotate(18deg); }
    100% { opacity: 0; transform: translate(-50%, -50%) scale(2) rotate(28deg); }
}

@keyframes dojo-projectile {
    0% { transform: translateX(0) scale(.6); }
    48% { transform: translateX(190%) scale(1.25); }
    100% { transform: translateX(390%) scale(.7); opacity: 0; }
}

@keyframes dojo-projectile-reverse {
    0% { transform: translateX(0) scale(.6); }
    48% { transform: translateX(-190%) scale(1.25); }
    100% { transform: translateX(-390%) scale(.7); opacity: 0; }
}

@keyframes dojo-special-wash {
    0% { opacity: 0; }
    18% { opacity: 1; }
    100% { opacity: 0; }
}

@keyframes dojo-callout {
    0% { opacity: 0; transform: translate(-50%, -50%) scale(.75) rotate(-3deg); }
    100% { opacity: 1; transform: translate(-50%, -50%) scale(1) rotate(-1deg); }
}

@media (max-height: 700px) {
    .dojo-round-pips { display: none; }
    .dojo-fighter { bottom: 14.5%; height: 52%; }
}

@media (prefers-reduced-motion: reduce) {
    .dojo-arena__backdrop,
    .dojo-arena__rain,
    .dojo-arena__mist,
    .dojo-arena__moon-glow,
    .dojo-live i,
    .dojo-fighter__aura {
        animation: none;
    }

    .dojo-combo,
    .dojo-health i,
    .dojo-health b,
    .dojo-super i {
        transition: none;
    }
}
