1970 lines
38 KiB
CSS
1970 lines
38 KiB
CSS
:root {
|
|
color-scheme: dark;
|
|
font-family:
|
|
Inter, Pretendard, "Noto Sans KR", system-ui, -apple-system, BlinkMacSystemFont,
|
|
"Segoe UI", sans-serif;
|
|
background: #080a07;
|
|
color: #fff5db;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html {
|
|
min-width: 320px;
|
|
min-height: 100%;
|
|
background: #080a07;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
min-width: 320px;
|
|
min-height: 100vh;
|
|
overflow: hidden;
|
|
}
|
|
|
|
button,
|
|
input,
|
|
textarea {
|
|
font: inherit;
|
|
}
|
|
|
|
button {
|
|
border: 0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
button:focus-visible,
|
|
input:focus-visible,
|
|
textarea:focus-visible {
|
|
outline: 3px solid rgb(238 185 73 / 0.46);
|
|
outline-offset: 3px;
|
|
}
|
|
|
|
#app {
|
|
--arena-gap: 18px;
|
|
--score-band-height: 134px;
|
|
--score-panel-left: 14px;
|
|
--score-panel-width: 224px;
|
|
--score-rail-width: calc(var(--score-panel-left) + var(--score-panel-width));
|
|
--drawer-width: min(430px, 100vw);
|
|
--drawer-live-width: min(340px, calc(100vw - 48px));
|
|
position: relative;
|
|
min-height: 100vh;
|
|
overflow: hidden;
|
|
background:
|
|
linear-gradient(180deg, rgb(8 10 7 / 0.18), rgb(3 5 4 / 0.84)),
|
|
#080a07;
|
|
}
|
|
|
|
#app.match-live {
|
|
--drawer-width: var(--drawer-live-width);
|
|
}
|
|
|
|
.arena-shell {
|
|
position: fixed;
|
|
inset: 0;
|
|
display: grid;
|
|
place-items: center;
|
|
overflow: hidden;
|
|
background: #090b08;
|
|
}
|
|
|
|
.arena-shell::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: 1;
|
|
background:
|
|
radial-gradient(circle at 50% 50%, rgb(255 211 122 / 0.06), transparent 42%),
|
|
linear-gradient(90deg, rgb(3 5 4 / 0.48), rgb(3 5 4 / 0.08) 45%, rgb(3 5 4 / 0.48)),
|
|
linear-gradient(180deg, rgb(3 5 4 / 0.08), rgb(3 5 4 / 0.5));
|
|
pointer-events: none;
|
|
transition:
|
|
background 520ms ease,
|
|
opacity 520ms ease;
|
|
}
|
|
|
|
#app.match-live .arena-shell::before {
|
|
opacity: 0.24;
|
|
}
|
|
|
|
#app.match-live .arena-shell {
|
|
place-items: center;
|
|
}
|
|
|
|
#game {
|
|
position: relative;
|
|
z-index: 0;
|
|
width: max(100vw, 100vh);
|
|
height: max(100vw, 100vh);
|
|
overflow: hidden;
|
|
opacity: 0.68;
|
|
filter: saturate(1) contrast(1.08) brightness(1.08);
|
|
transform: scale(1.04);
|
|
transform-origin: center;
|
|
transition:
|
|
width 620ms cubic-bezier(0.2, 0.8, 0.2, 1),
|
|
height 620ms cubic-bezier(0.2, 0.8, 0.2, 1),
|
|
opacity 520ms ease,
|
|
filter 520ms ease,
|
|
transform 700ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
}
|
|
|
|
#app.match-live #game {
|
|
width: min(100vw, 100vh);
|
|
height: min(100vw, 100vh);
|
|
margin-left: 0;
|
|
opacity: 1;
|
|
filter: none;
|
|
transform: scale(1);
|
|
}
|
|
|
|
#game canvas {
|
|
display: block;
|
|
width: 100% !important;
|
|
height: 100% !important;
|
|
image-rendering: pixelated;
|
|
}
|
|
|
|
.battle-preview {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 2;
|
|
overflow: hidden;
|
|
opacity: 0.84;
|
|
pointer-events: none;
|
|
transition:
|
|
opacity 420ms ease,
|
|
transform 700ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
}
|
|
|
|
#app.match-live .battle-preview {
|
|
opacity: 0;
|
|
transform: scale(1.08);
|
|
}
|
|
|
|
.preview-fighter {
|
|
position: absolute;
|
|
width: 100px;
|
|
height: 100px;
|
|
background-repeat: no-repeat;
|
|
background-size: auto 100px;
|
|
image-rendering: pixelated;
|
|
transform-origin: center;
|
|
filter:
|
|
drop-shadow(0 18px 22px rgb(0 0 0 / 0.68))
|
|
saturate(1.14)
|
|
brightness(1.12);
|
|
animation:
|
|
preview-attack var(--sprite-speed) steps(var(--sprite-steps)) infinite,
|
|
preview-breathe 1800ms ease-in-out infinite;
|
|
}
|
|
|
|
.preview-knight {
|
|
--sprite-end: -600px;
|
|
--sprite-scale: 5.2;
|
|
--sprite-speed: 840ms;
|
|
--sprite-steps: 6;
|
|
left: 10vw;
|
|
top: 48vh;
|
|
background-image: url("/assets/characters/knight/Knight-Attack01.png");
|
|
transform: scale(var(--sprite-scale));
|
|
}
|
|
|
|
.preview-orc {
|
|
--sprite-end: -500px;
|
|
--sprite-scale: 5.35;
|
|
--sprite-speed: 760ms;
|
|
--sprite-steps: 5;
|
|
right: 9vw;
|
|
top: 46vh;
|
|
background-image: url("/assets/characters/orc/Orc-Attack01.png");
|
|
transform: scaleX(-1) scale(var(--sprite-scale));
|
|
}
|
|
|
|
.preview-wizard {
|
|
--sprite-end: -500px;
|
|
--sprite-scale: 4.35;
|
|
--sprite-speed: 980ms;
|
|
--sprite-steps: 5;
|
|
left: 56vw;
|
|
top: 24vh;
|
|
background-image: url("/assets/characters/wizard/Wizard-Attack01.png");
|
|
opacity: 0.58;
|
|
transform: scaleX(-1) scale(var(--sprite-scale));
|
|
}
|
|
|
|
.preview-strike {
|
|
position: absolute;
|
|
width: 160px;
|
|
height: 5px;
|
|
border-radius: 999px;
|
|
background: linear-gradient(90deg, transparent, rgb(255 229 156 / 0.86), transparent);
|
|
box-shadow: 0 0 24px rgb(227 89 59 / 0.5);
|
|
opacity: 0;
|
|
transform-origin: center;
|
|
animation: preview-strike 980ms ease-in-out infinite;
|
|
}
|
|
|
|
.preview-strike-a {
|
|
left: 38vw;
|
|
top: 54vh;
|
|
transform: rotate(-18deg);
|
|
}
|
|
|
|
.preview-strike-b {
|
|
right: 31vw;
|
|
top: 42vh;
|
|
transform: rotate(22deg);
|
|
animation-delay: 260ms;
|
|
}
|
|
|
|
.intro-stage {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 5;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: clamp(24px, 5vw, 56px);
|
|
pointer-events: none;
|
|
transition:
|
|
opacity 420ms ease,
|
|
transform 620ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
}
|
|
|
|
#app.match-live .intro-stage {
|
|
opacity: 0;
|
|
transform: scale(0.96);
|
|
}
|
|
|
|
#app.match-live .intro-content {
|
|
pointer-events: none;
|
|
}
|
|
|
|
.intro-content {
|
|
display: grid;
|
|
justify-items: center;
|
|
gap: 22px;
|
|
text-align: center;
|
|
pointer-events: auto;
|
|
animation: intro-rise 760ms cubic-bezier(0.2, 0.8, 0.2, 1) both;
|
|
transition:
|
|
transform 560ms cubic-bezier(0.2, 0.8, 0.2, 1),
|
|
opacity 360ms ease;
|
|
}
|
|
|
|
#app.options-open:not(.match-live) .intro-content {
|
|
opacity: 0.72;
|
|
}
|
|
|
|
.arena-logo {
|
|
margin: 0;
|
|
color: #fff4d1;
|
|
font-size: clamp(4rem, 16vw, 11rem);
|
|
font-weight: 950;
|
|
letter-spacing: 0;
|
|
line-height: 0.9;
|
|
text-shadow:
|
|
0 2px 0 #ad4d37,
|
|
0 14px 42px rgb(0 0 0 / 0.72),
|
|
0 0 40px rgb(230 173 71 / 0.28);
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.arena-logo .small-text {
|
|
font-size: 0.7em; /* 원래 크기의 85%로 축소 (원하는 만큼 숫자를 조절해 보세요) */
|
|
margin-top: 0.05em; /* 글자가 줄어들면서 생긴 간격을 미세하게 조정하고 싶다면 사용 */
|
|
}
|
|
|
|
.arena-logo span {
|
|
display: block;
|
|
}
|
|
|
|
.arena-meta {
|
|
position: fixed;
|
|
right: clamp(10px, 2vw, 18px);
|
|
bottom: clamp(10px, 2vw, 18px);
|
|
z-index: 10;
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
gap: 8px;
|
|
pointer-events: none;
|
|
transition: opacity 220ms ease;
|
|
}
|
|
|
|
.visitor-count,
|
|
.about-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 28px;
|
|
margin: 0;
|
|
border: 1px solid rgb(238 185 73 / 0.22);
|
|
border-radius: 999px;
|
|
padding: 5px 12px;
|
|
background: rgb(8 10 7 / 0.68);
|
|
color: #e7c879;
|
|
font-size: 0.72rem;
|
|
font-weight: 800;
|
|
line-height: 1;
|
|
text-decoration: none;
|
|
backdrop-filter: blur(10px);
|
|
pointer-events: auto;
|
|
transition:
|
|
background 180ms ease,
|
|
border-color 180ms ease,
|
|
transform 180ms ease,
|
|
opacity 220ms ease;
|
|
}
|
|
|
|
.visitor-count {
|
|
opacity: 0;
|
|
transform: translateY(8px);
|
|
}
|
|
|
|
#app.match-live .visitor-count {
|
|
opacity: 0.86;
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.about-button {
|
|
min-width: 72px;
|
|
color: #ffe8b4;
|
|
font-weight: 900;
|
|
box-shadow: 0 4px 12px rgb(0 0 0 / 0.22);
|
|
}
|
|
|
|
.about-button:hover {
|
|
border-color: rgb(238 185 73 / 0.42);
|
|
background: rgb(255 246 216 / 0.14);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.start-button,
|
|
form button[type="submit"],
|
|
.pause-button,
|
|
.restart-button {
|
|
min-height: 52px;
|
|
border-radius: 8px;
|
|
background: linear-gradient(180deg, #e56443, #b93c2f);
|
|
color: #fff7df;
|
|
font-weight: 900;
|
|
box-shadow:
|
|
0 18px 44px rgb(0 0 0 / 0.36),
|
|
inset 0 1px 0 rgb(255 255 255 / 0.2);
|
|
transition:
|
|
background 180ms ease,
|
|
transform 180ms ease,
|
|
box-shadow 180ms ease;
|
|
}
|
|
|
|
.start-button {
|
|
min-width: 180px;
|
|
padding: 0 30px;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
#app.options-open:not(.match-live) .start-button {
|
|
pointer-events: none;
|
|
visibility: hidden;
|
|
}
|
|
|
|
.start-button:hover,
|
|
form button[type="submit"]:hover,
|
|
.pause-button:hover,
|
|
.restart-button:hover {
|
|
background: linear-gradient(180deg, #f0754f, #c84636);
|
|
transform: translateY(-1px);
|
|
box-shadow:
|
|
0 22px 52px rgb(0 0 0 / 0.42),
|
|
inset 0 1px 0 rgb(255 255 255 / 0.24);
|
|
}
|
|
|
|
.pause-button,
|
|
.restart-button {
|
|
display: none;
|
|
border: 1px solid rgb(238 185 73 / 0.3);
|
|
background: rgb(255 246 216 / 0.08);
|
|
color: #ffe8b4;
|
|
}
|
|
|
|
.pause-button:hover,
|
|
.restart-button:hover {
|
|
background: rgb(255 246 216 / 0.14);
|
|
}
|
|
|
|
#app.match-live .pause-button,
|
|
#app.match-live .restart-button {
|
|
display: block;
|
|
}
|
|
|
|
#app.match-live .match-actions {
|
|
grid-template-columns: 1fr 1fr;
|
|
}
|
|
|
|
#app.match-live .match-actions button[type="submit"] {
|
|
grid-column: 1 / -1;
|
|
}
|
|
|
|
#app.match-paused .pause-button {
|
|
background: linear-gradient(180deg, #e3b24f, #9a6c24);
|
|
color: #120f08;
|
|
}
|
|
|
|
#app.match-ended .pause-button {
|
|
display: none;
|
|
}
|
|
|
|
.drawer-scrim {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 6;
|
|
background: rgb(4 5 4 / 0.42);
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transition: opacity 320ms ease;
|
|
}
|
|
|
|
#app.options-open .drawer-scrim {
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
}
|
|
|
|
#app.match-live .drawer-scrim {
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.drawer-toggle {
|
|
display: none;
|
|
min-height: 40px;
|
|
border: 1px solid rgb(238 185 73 / 0.28);
|
|
border-radius: 8px;
|
|
padding: 0 12px;
|
|
background: rgb(12 15 11 / 0.84);
|
|
color: #ffe8b4;
|
|
font-size: 0.82rem;
|
|
font-weight: 900;
|
|
box-shadow: 0 16px 38px rgb(0 0 0 / 0.36);
|
|
transition:
|
|
background 180ms ease,
|
|
transform 180ms ease;
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
|
|
.drawer-toggle:hover {
|
|
background: rgb(255 246 216 / 0.14);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
#app.match-live .drawer-toggle {
|
|
display: block;
|
|
}
|
|
|
|
.fighter-entry {
|
|
position: fixed;
|
|
top: 0;
|
|
right: 0;
|
|
z-index: 7;
|
|
display: grid;
|
|
align-content: start;
|
|
gap: 24px;
|
|
width: var(--drawer-width);
|
|
height: 100vh;
|
|
overflow-y: auto;
|
|
border-left: 1px solid rgb(239 199 103 / 0.22);
|
|
padding: clamp(22px, 4vw, 34px);
|
|
background:
|
|
linear-gradient(180deg, rgb(29 33 22 / 0.94), rgb(13 16 12 / 0.96)),
|
|
#11140f;
|
|
box-shadow: -28px 0 80px rgb(0 0 0 / 0.52);
|
|
transform: translateX(104%);
|
|
transition:
|
|
opacity 260ms ease,
|
|
transform 520ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
backdrop-filter: blur(16px);
|
|
}
|
|
|
|
#app.options-open .fighter-entry {
|
|
transform: translateX(0);
|
|
}
|
|
|
|
#app.match-live .fighter-entry {
|
|
top: 24px;
|
|
right: 24px;
|
|
height: auto;
|
|
max-height: calc(100vh - 48px);
|
|
gap: 16px;
|
|
border: 1px solid rgb(239 199 103 / 0.22);
|
|
border-radius: 8px;
|
|
padding: 20px;
|
|
transform: translateX(0);
|
|
}
|
|
|
|
#app.match-live.drawer-collapsed .fighter-entry {
|
|
width: auto;
|
|
min-width: 0;
|
|
overflow: visible;
|
|
border-color: transparent;
|
|
padding: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
transform: translateX(0);
|
|
}
|
|
|
|
#app.match-live .drawer-close {
|
|
display: none;
|
|
}
|
|
|
|
#app.match-live .fighter-entry h2 {
|
|
font-size: 2rem;
|
|
}
|
|
|
|
#app.match-live .fighter-entry textarea {
|
|
min-height: 190px;
|
|
}
|
|
|
|
#app.match-live .fighter-entry fieldset {
|
|
padding: 12px;
|
|
}
|
|
|
|
#app.match-live.drawer-collapsed .entry-copy,
|
|
#app.match-live.drawer-collapsed .fighter-entry form {
|
|
display: none;
|
|
}
|
|
|
|
#app.match-live.drawer-collapsed .drawer-header {
|
|
justify-content: end;
|
|
}
|
|
|
|
.drawer-header {
|
|
display: flex;
|
|
align-items: start;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
}
|
|
|
|
.drawer-header-controls {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.entry-copy {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.eyebrow {
|
|
margin: 0;
|
|
color: #e3b24f;
|
|
font-size: 0.78rem;
|
|
font-weight: 900;
|
|
letter-spacing: 0;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
h2 {
|
|
margin: 0;
|
|
color: #fff3d2;
|
|
font-size: clamp(1.7rem, 4vw, 2.5rem);
|
|
line-height: 1.05;
|
|
letter-spacing: 0;
|
|
}
|
|
|
|
.drawer-close {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 40px;
|
|
height: 40px;
|
|
flex: 0 0 auto;
|
|
border: 1px solid rgb(238 185 73 / 0.22);
|
|
border-radius: 8px;
|
|
background: rgb(255 246 216 / 0.08);
|
|
color: #f8deb0;
|
|
font-weight: 900;
|
|
}
|
|
|
|
.drawer-close:hover {
|
|
background: rgb(255 246 216 / 0.14);
|
|
}
|
|
|
|
.about-backdrop {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 20;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: clamp(16px, 4vw, 34px);
|
|
background: rgb(3 5 4 / 0.66);
|
|
backdrop-filter: blur(8px);
|
|
}
|
|
|
|
.about-backdrop[hidden] {
|
|
display: none;
|
|
}
|
|
|
|
.about-dialog {
|
|
display: grid;
|
|
grid-template-rows: auto auto minmax(0, 1fr);
|
|
width: min(560px, calc(100vw - 32px));
|
|
max-height: min(760px, calc(100svh - 32px));
|
|
overflow: hidden;
|
|
border: 1px solid rgb(239 199 103 / 0.28);
|
|
border-radius: 8px;
|
|
background:
|
|
linear-gradient(180deg, rgb(29 33 22 / 0.98), rgb(10 13 9 / 0.98)),
|
|
#11140f;
|
|
box-shadow:
|
|
0 24px 100px rgb(0 0 0 / 0.62),
|
|
inset 0 1px 0 rgb(255 255 255 / 0.06);
|
|
outline: none;
|
|
}
|
|
|
|
.about-header {
|
|
display: flex;
|
|
align-items: start;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
padding: clamp(20px, 4vw, 28px) clamp(20px, 4vw, 30px) 14px;
|
|
}
|
|
|
|
.about-close {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 40px;
|
|
height: 40px;
|
|
flex: 0 0 auto;
|
|
border: 1px solid rgb(238 185 73 / 0.22);
|
|
border-radius: 8px;
|
|
background: rgb(255 246 216 / 0.08);
|
|
color: #f8deb0;
|
|
font-weight: 900;
|
|
}
|
|
|
|
.about-close:hover {
|
|
background: rgb(255 246 216 / 0.14);
|
|
}
|
|
|
|
.about-tabs {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 4px;
|
|
padding: 0 clamp(20px, 4vw, 30px) 14px;
|
|
border-bottom: 1px solid rgb(238 185 73 / 0.16);
|
|
}
|
|
|
|
.about-tab {
|
|
min-width: 0;
|
|
min-height: 42px;
|
|
border: 1px solid transparent;
|
|
border-radius: 6px;
|
|
padding: 8px 10px;
|
|
background: rgb(255 246 216 / 0.06);
|
|
color: #ead8ad;
|
|
font-size: 0.86rem;
|
|
font-weight: 900;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.about-tab[aria-selected="true"] {
|
|
border-color: rgb(238 185 73 / 0.36);
|
|
background: #323822;
|
|
color: #fff7df;
|
|
}
|
|
|
|
.about-panel {
|
|
min-height: 0;
|
|
overflow: auto;
|
|
padding: clamp(18px, 4vw, 26px) clamp(20px, 4vw, 30px) clamp(22px, 5vw, 34px);
|
|
}
|
|
|
|
.about-fields {
|
|
display: grid;
|
|
gap: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
.about-field-row {
|
|
display: grid;
|
|
grid-template-columns: 96px minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: 14px;
|
|
min-height: 50px;
|
|
border-bottom: 1px solid rgb(238 185 73 / 0.14);
|
|
}
|
|
|
|
.about-field-row:first-child {
|
|
border-top: 1px solid rgb(238 185 73 / 0.14);
|
|
}
|
|
|
|
.about-field-row dt {
|
|
color: #e3b24f;
|
|
font-size: 0.78rem;
|
|
font-weight: 950;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.about-field-row dd {
|
|
min-width: 0;
|
|
margin: 0;
|
|
color: #fff7df;
|
|
font-weight: 800;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.about-field-row a,
|
|
.about-markdown a {
|
|
color: #85dcc7;
|
|
text-decoration-color: rgb(133 220 199 / 0.42);
|
|
text-underline-offset: 3px;
|
|
}
|
|
|
|
.about-markdown {
|
|
display: grid;
|
|
gap: 12px;
|
|
color: #ead8ad;
|
|
font-size: 0.92rem;
|
|
font-weight: 600;
|
|
line-height: 1.56;
|
|
}
|
|
|
|
.about-markdown :is(h3, h4, h5, h6, p, ul, blockquote) {
|
|
margin: 0;
|
|
}
|
|
|
|
.about-markdown h3,
|
|
.about-markdown h4,
|
|
.about-markdown h5,
|
|
.about-markdown h6 {
|
|
color: #fff3d2;
|
|
font-size: 1rem;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
.about-markdown blockquote {
|
|
border-left: 3px solid rgb(238 185 73 / 0.36);
|
|
padding: 4px 0 4px 16px;
|
|
color: #c4b693;
|
|
font-style: italic;
|
|
}
|
|
|
|
.about-markdown hr {
|
|
margin: 8px 0;
|
|
border: 0;
|
|
border-top: 1px solid rgb(238 185 73 / 0.16);
|
|
}
|
|
|
|
.about-markdown code {
|
|
border: 1px solid rgb(238 185 73 / 0.14);
|
|
border-radius: 4px;
|
|
padding: 2px 5px;
|
|
background: rgb(255 246 216 / 0.08);
|
|
color: #f1c761;
|
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
font-size: 0.88em;
|
|
}
|
|
|
|
.about-markdown li {
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.about-markdown li strong {
|
|
color: #fff3d2;
|
|
}
|
|
|
|
.about-markdown ul {
|
|
display: grid;
|
|
gap: 8px;
|
|
padding-left: 1.2rem;
|
|
}
|
|
|
|
.about-empty {
|
|
color: #bfae83;
|
|
}
|
|
|
|
form {
|
|
display: grid;
|
|
gap: 16px;
|
|
}
|
|
|
|
.match-actions {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
fieldset {
|
|
display: grid;
|
|
gap: 10px;
|
|
min-width: 0;
|
|
margin: 0;
|
|
border: 1px solid rgb(238 185 73 / 0.22);
|
|
border-radius: 8px;
|
|
padding: 14px;
|
|
background: rgb(5 7 5 / 0.26);
|
|
}
|
|
|
|
legend {
|
|
padding: 0 6px;
|
|
color: #e3b24f;
|
|
font-size: 0.78rem;
|
|
font-weight: 900;
|
|
letter-spacing: 0;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.team-size-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
}
|
|
|
|
.team-size-number {
|
|
width: 88px;
|
|
min-width: 88px;
|
|
padding-inline: 10px;
|
|
text-align: center;
|
|
font-weight: 900;
|
|
}
|
|
|
|
label {
|
|
color: #ead8ad;
|
|
font-size: 0.92rem;
|
|
}
|
|
|
|
input:not([type="range"]):not([type="radio"]),
|
|
textarea {
|
|
min-height: 48px;
|
|
border: 1px solid rgb(238 185 73 / 0.28);
|
|
border-radius: 8px;
|
|
padding: 0 14px;
|
|
background: #232719;
|
|
color: #fff7df;
|
|
outline: none;
|
|
}
|
|
|
|
textarea {
|
|
min-height: 258px;
|
|
resize: vertical;
|
|
padding-block: 12px;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
input[type="range"] {
|
|
width: 100%;
|
|
accent-color: #e3b24f;
|
|
}
|
|
|
|
.spawn-placement-field {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.spawn-placement-label {
|
|
color: #ead8ad;
|
|
font-size: 0.92rem;
|
|
}
|
|
|
|
.spawn-placement-options {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 4px;
|
|
min-width: 0;
|
|
border: 1px solid rgb(238 185 73 / 0.2);
|
|
border-radius: 8px;
|
|
padding: 4px;
|
|
background: #1d2116;
|
|
}
|
|
|
|
.spawn-placement-option {
|
|
position: relative;
|
|
min-width: 0;
|
|
}
|
|
|
|
.spawn-placement-option input {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.spawn-placement-option span {
|
|
display: grid;
|
|
min-height: 44px;
|
|
place-items: center;
|
|
border: 1px solid transparent;
|
|
border-radius: 6px;
|
|
padding: 8px;
|
|
color: #ead8ad;
|
|
text-align: center;
|
|
font-size: 0.86rem;
|
|
font-weight: 900;
|
|
line-height: 1.25;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.spawn-placement-option input:checked + span {
|
|
border-color: rgb(238 185 73 / 0.36);
|
|
background: #323822;
|
|
color: #fff7df;
|
|
}
|
|
|
|
.spawn-placement-option input:focus-visible + span {
|
|
outline: 2px solid #f1c761;
|
|
outline-offset: -2px;
|
|
}
|
|
|
|
.scoreboard {
|
|
position: fixed;
|
|
top: clamp(14px, 3vw, 28px);
|
|
left: var(--score-panel-left);
|
|
z-index: 3;
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
width: var(--score-panel-width);
|
|
max-height: calc(100vh - 96px);
|
|
min-height: 64px;
|
|
overflow: hidden;
|
|
padding: 8px;
|
|
border: 1px solid rgb(238 185 73 / 0.18);
|
|
border-radius: 8px;
|
|
background: rgb(4 6 4 / 0.5);
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transform: translateY(-18px);
|
|
transition:
|
|
opacity 420ms ease,
|
|
transform 420ms ease;
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
|
|
#app.match-live .scoreboard {
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.score-side {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
width: max-content;
|
|
}
|
|
|
|
.score-side.right {
|
|
display: none;
|
|
}
|
|
|
|
.team-score {
|
|
display: grid;
|
|
grid-template-rows: auto 1px auto;
|
|
gap: 5px;
|
|
width: 100px;
|
|
min-height: 54px;
|
|
overflow: hidden;
|
|
border-radius: 6px;
|
|
padding: 7px 9px 6px;
|
|
color: #fff;
|
|
font-size: 0.8rem;
|
|
font-weight: 900;
|
|
text-align: left;
|
|
text-shadow: 1px 1px 2px #000;
|
|
transition:
|
|
filter 160ms ease,
|
|
transform 160ms ease;
|
|
}
|
|
|
|
.team-score:hover {
|
|
filter: brightness(1.16);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.team-score.is-focused {
|
|
box-shadow:
|
|
inset 0 0 0 2px rgb(255 244 209 / 0.92),
|
|
0 0 18px rgb(227 178 79 / 0.26);
|
|
}
|
|
|
|
.team-score:disabled {
|
|
cursor: default;
|
|
filter: grayscale(0.6) brightness(0.68);
|
|
}
|
|
|
|
.team-score:disabled:hover {
|
|
transform: none;
|
|
}
|
|
|
|
.team-score-name {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.team-score-rule {
|
|
width: 100%;
|
|
background: var(--team-color);
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.team-score-count {
|
|
justify-self: end;
|
|
color: #fff2c8;
|
|
font-size: 0.86rem;
|
|
}
|
|
|
|
.battle-notice {
|
|
position: fixed;
|
|
top: clamp(12px, 2vw, 20px);
|
|
left: 50%;
|
|
z-index: 5;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: min(420px, 72vmin, calc(100vw - 64px));
|
|
min-height: 38px;
|
|
border: 1px solid rgb(238 185 73 / 0.26);
|
|
border-radius: 8px;
|
|
padding: 8px 14px;
|
|
background: rgb(8 10 7 / 0.68);
|
|
color: #ffe8b4;
|
|
font-size: 0.8rem;
|
|
font-weight: 900;
|
|
line-height: 1.35;
|
|
text-align: center;
|
|
text-shadow: 1px 1px 2px #000;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transform: translate(-50%, -10px);
|
|
transition:
|
|
opacity 260ms ease,
|
|
transform 260ms ease;
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
|
|
#app.match-live .battle-notice.is-visible {
|
|
opacity: 1;
|
|
transform: translate(-50%, 0);
|
|
}
|
|
|
|
@media (min-width: 961px) {
|
|
#app.match-live .battle-notice {
|
|
right: auto;
|
|
left: 50%;
|
|
width: min(420px, 72vmin, calc(100vw - var(--drawer-width) - var(--score-rail-width) - 56px));
|
|
transform: translate(-50%, -10px);
|
|
}
|
|
|
|
#app.match-live .battle-notice.is-visible {
|
|
transform: translate(-50%, 0);
|
|
}
|
|
|
|
#app.match-live.drawer-collapsed .battle-notice {
|
|
right: auto;
|
|
width: min(420px, 72vmin, calc(100vw - 64px));
|
|
}
|
|
}
|
|
|
|
.kill-log {
|
|
position: fixed;
|
|
bottom: clamp(14px, 3vw, 26px);
|
|
left: var(--score-panel-left);
|
|
z-index: 4;
|
|
width: min(370px, calc(100vw - 32px));
|
|
max-height: min(34vh, 292px);
|
|
overflow-y: auto;
|
|
scrollbar-width: thin;
|
|
scrollbar-color: rgb(238 185 73 / 0.3) transparent;
|
|
border: 1px solid rgb(238 185 73 / 0.2);
|
|
border-radius: 8px;
|
|
padding: 10px;
|
|
background: rgb(4 6 4 / 0.58);
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transform: translateY(16px);
|
|
transition:
|
|
opacity 260ms ease,
|
|
transform 260ms ease;
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
|
|
.kill-log::-webkit-scrollbar {
|
|
width: 4px;
|
|
}
|
|
|
|
.kill-log::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
.kill-log::-webkit-scrollbar-thumb {
|
|
border-radius: 10px;
|
|
background: rgb(238 185 73 / 0.3);
|
|
}
|
|
|
|
#app.match-live .kill-log.has-entries {
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.kill-log-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
min-height: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.kill-log-item {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) 54px minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-height: 54px;
|
|
border: 1px solid rgb(255 244 209 / 0.12);
|
|
border-radius: 6px;
|
|
padding: 7px 9px;
|
|
background: rgb(8 10 7 / 0.74);
|
|
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.06);
|
|
animation: kill-log-entry 180ms ease both;
|
|
}
|
|
|
|
.kill-log-fighter {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.kill-log-fighter.killer {
|
|
border-left: 3px solid var(--killer-color);
|
|
padding-left: 6px;
|
|
}
|
|
|
|
.kill-log-fighter.victim {
|
|
flex-direction: row-reverse;
|
|
border-right: 3px solid var(--victim-color);
|
|
padding-right: 6px;
|
|
justify-content: end;
|
|
text-align: right;
|
|
}
|
|
|
|
.kill-log-avatar {
|
|
position: relative;
|
|
flex: 0 0 auto;
|
|
width: 36px;
|
|
height: 36px;
|
|
border: 1px solid rgb(255 244 209 / 0.16);
|
|
border-radius: 6px;
|
|
background-color: rgb(255 246 216 / 0.08);
|
|
background-position: left center;
|
|
background-repeat: no-repeat;
|
|
background-size: auto 36px;
|
|
image-rendering: pixelated;
|
|
box-shadow: inset 0 -10px 18px rgb(0 0 0 / 0.22);
|
|
}
|
|
|
|
.kill-log-fighter.victim .kill-log-avatar::before,
|
|
.kill-log-fighter.victim .kill-log-avatar::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 7px;
|
|
right: 1px;
|
|
width: 14px;
|
|
height: 2px;
|
|
border: 1px solid rgb(255 216 212 / 0.22);
|
|
border-radius: 999px;
|
|
background: #f24a42;
|
|
box-shadow:
|
|
0 0 0 1px rgb(48 4 3 / 0.7),
|
|
0 0 5px rgb(227 54 46 / 0.6);
|
|
transform-origin: center;
|
|
}
|
|
|
|
.kill-log-fighter.victim .kill-log-avatar::before {
|
|
transform: rotate(45deg);
|
|
}
|
|
|
|
.kill-log-fighter.victim .kill-log-avatar::after {
|
|
transform: rotate(-45deg);
|
|
}
|
|
|
|
.kill-log-copy {
|
|
display: grid;
|
|
gap: 2px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.kill-log-team,
|
|
.kill-log-member {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.kill-log-team {
|
|
min-width: 0;
|
|
color: #fff7df;
|
|
font-size: 0.78rem;
|
|
font-weight: 900;
|
|
text-shadow: 1px 1px 2px #000;
|
|
}
|
|
|
|
.kill-log-member {
|
|
flex: 0 0 auto;
|
|
color: #ead8ad;
|
|
font-size: 0.72rem;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.kill-log-action {
|
|
display: grid;
|
|
justify-items: center;
|
|
gap: 2px;
|
|
min-width: 0;
|
|
}
|
|
|
|
.kill-log-action-text {
|
|
color: #ffdc93;
|
|
font-size: 0.68rem;
|
|
font-weight: 950;
|
|
line-height: 1;
|
|
}
|
|
|
|
.kill-log-weapon {
|
|
position: relative;
|
|
display: block;
|
|
width: 28px;
|
|
height: 28px;
|
|
place-self: center;
|
|
border: 1px solid rgb(238 185 73 / 0.28);
|
|
border-radius: 999px;
|
|
background: rgb(255 246 216 / 0.08);
|
|
box-shadow: 0 0 16px rgb(227 89 59 / 0.16);
|
|
}
|
|
|
|
.kill-log-weapon::before,
|
|
.kill-log-weapon::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
width: 18px;
|
|
height: 3px;
|
|
border-radius: 999px;
|
|
background: linear-gradient(90deg, #ffe8b4 0 70%, #b93c2f 70% 100%);
|
|
box-shadow: 0 0 8px rgb(255 226 166 / 0.3);
|
|
transform-origin: center;
|
|
}
|
|
|
|
.kill-log-weapon::before {
|
|
transform: translate(-50%, -50%) rotate(42deg);
|
|
}
|
|
|
|
.kill-log-weapon::after {
|
|
transform: translate(-50%, -50%) rotate(-42deg);
|
|
}
|
|
|
|
.victory-celebration {
|
|
position: fixed;
|
|
z-index: 9;
|
|
display: grid;
|
|
overflow: hidden;
|
|
place-items: center;
|
|
inset: 0;
|
|
background: rgb(4 6 4 / 0.2);
|
|
isolation: isolate;
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
transform: scale(1);
|
|
transition:
|
|
opacity 220ms ease,
|
|
transform 220ms ease;
|
|
}
|
|
|
|
.victory-celebration.is-leaving {
|
|
opacity: 0;
|
|
transform: scale(0.98);
|
|
}
|
|
|
|
.victory-celebration::before {
|
|
content: "";
|
|
position: absolute;
|
|
z-index: -1;
|
|
width: min(122vmin, 1240px);
|
|
aspect-ratio: 1;
|
|
border-radius: 50%;
|
|
background:
|
|
radial-gradient(circle, rgb(255 233 166 / 0.18) 0 18%, rgb(227 178 79 / 0.12) 31%, transparent 66%);
|
|
animation: victory-glow 1.8s ease-out both;
|
|
}
|
|
|
|
.victory-celebration.is-draw::before {
|
|
background:
|
|
radial-gradient(circle, rgb(255 247 223 / 0.16) 0 18%, rgb(227 178 79 / 0.1) 31%, transparent 62%);
|
|
}
|
|
|
|
.victory-rays {
|
|
position: absolute;
|
|
z-index: 0;
|
|
width: min(112vmin, 1120px);
|
|
aspect-ratio: 1;
|
|
border-radius: 50%;
|
|
background: repeating-conic-gradient(
|
|
from -4deg,
|
|
rgb(255 233 166 / 0.18) 0 8deg,
|
|
transparent 8deg 18deg
|
|
);
|
|
opacity: 0.54;
|
|
mask-image: radial-gradient(circle, #000 0 18%, transparent 66%);
|
|
animation: victory-rays-in 1.1s ease-out both, victory-rays-turn 11s linear infinite;
|
|
}
|
|
|
|
.victory-celebration.is-draw .victory-rays {
|
|
opacity: 0.22;
|
|
}
|
|
|
|
.victory-confetti {
|
|
position: absolute;
|
|
z-index: 1;
|
|
inset: 0;
|
|
}
|
|
|
|
.victory-confetti-piece {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
display: block;
|
|
width: clamp(6px, 0.8vw, 11px);
|
|
height: clamp(10px, 1.2vw, 18px);
|
|
border-radius: 8px;
|
|
background: var(--confetti-color);
|
|
box-shadow: 0 0 12px rgb(255 230 166 / 0.22);
|
|
opacity: 0;
|
|
transform: translate(-50%, -50%) rotate(var(--confetti-tilt)) scale(0.3);
|
|
animation: victory-confetti-burst var(--confetti-duration) cubic-bezier(0.15, 0.84, 0.35, 1) var(--confetti-delay) both;
|
|
}
|
|
|
|
.victory-confetti-piece:nth-child(3n) {
|
|
width: clamp(10px, 1vw, 15px);
|
|
height: clamp(6px, 0.72vw, 10px);
|
|
border-radius: 2px;
|
|
}
|
|
|
|
.victory-banner {
|
|
position: relative;
|
|
z-index: 2;
|
|
display: grid;
|
|
width: min(calc(100vw - 36px), 760px);
|
|
min-height: clamp(108px, 18vw, 170px);
|
|
overflow: hidden;
|
|
place-items: center;
|
|
border: 2px solid #f1c45d;
|
|
border-radius: 8px;
|
|
padding: clamp(1.25rem, 3.8vw, 2rem) clamp(1.3rem, 5.4vw, 3.4rem);
|
|
background:
|
|
linear-gradient(135deg, rgb(18 21 13 / 0.98), rgb(3 5 4 / 0.92)),
|
|
rgb(4 6 4 / 0.9);
|
|
color: #fff7df;
|
|
font-size: clamp(1.65rem, 5vw, 3rem);
|
|
font-weight: 950;
|
|
letter-spacing: 0;
|
|
line-height: 1.12;
|
|
text-align: center;
|
|
text-wrap: balance;
|
|
text-shadow:
|
|
0 2px 0 rgb(55 36 8 / 0.56),
|
|
0 0 24px rgb(255 226 153 / 0.28);
|
|
box-shadow:
|
|
0 0 0 1px rgb(255 237 187 / 0.2) inset,
|
|
0 0 42px rgb(227 178 79 / 0.44),
|
|
0 24px 90px rgb(0 0 0 / 0.58);
|
|
animation: banner-in 0.64s cubic-bezier(0.16, 0.9, 0.25, 1.2);
|
|
backdrop-filter: blur(6px);
|
|
}
|
|
|
|
.victory-banner::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: -40% auto -40% -36%;
|
|
width: 28%;
|
|
background: linear-gradient(90deg, transparent, rgb(255 248 223 / 0.6), transparent);
|
|
transform: skewX(-18deg);
|
|
animation: victory-banner-sheen 1s 0.28s ease-out both;
|
|
}
|
|
|
|
.victory-banner::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 10px;
|
|
border: 1px solid rgb(255 225 151 / 0.24);
|
|
border-radius: 5px;
|
|
}
|
|
|
|
.victory-banner-message {
|
|
position: relative;
|
|
z-index: 1;
|
|
display: block;
|
|
max-width: 100%;
|
|
overflow-wrap: anywhere;
|
|
animation: victory-message-pulse 720ms 80ms ease-out both;
|
|
}
|
|
|
|
.victory-celebration.is-draw .victory-banner {
|
|
border-color: #d8c28d;
|
|
box-shadow:
|
|
0 0 0 1px rgb(255 237 187 / 0.14) inset,
|
|
0 0 28px rgb(227 178 79 / 0.24),
|
|
0 24px 90px rgb(0 0 0 / 0.52);
|
|
}
|
|
|
|
#app.match-paused .arena-shell::after {
|
|
content: "일시정지";
|
|
position: fixed;
|
|
top: 50%;
|
|
left: 50%;
|
|
z-index: 6;
|
|
border: 1px solid rgb(238 185 73 / 0.34);
|
|
border-radius: 8px;
|
|
padding: 14px 26px;
|
|
background: rgb(5 7 5 / 0.76);
|
|
color: #ffe8b4;
|
|
font-size: clamp(1.3rem, 4vw, 2rem);
|
|
font-weight: 950;
|
|
transform: translate(-50%, -50%);
|
|
box-shadow: 0 18px 60px rgb(0 0 0 / 0.46);
|
|
backdrop-filter: blur(8px);
|
|
}
|
|
|
|
.match-status {
|
|
position: fixed;
|
|
bottom: clamp(14px, 3vw, 26px);
|
|
left: 50%;
|
|
z-index: 4;
|
|
width: min(980px, calc(100vw - 32px));
|
|
min-height: 48px;
|
|
overflow: hidden;
|
|
border: 1px solid rgb(238 185 73 / 0.28);
|
|
border-radius: 8px;
|
|
padding: 13px 0;
|
|
background: rgb(8 10 7 / 0.74);
|
|
color: #ffe2a6;
|
|
font-weight: 900;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transform: translate(-50%, calc(100% + 28px));
|
|
transition:
|
|
opacity 420ms ease,
|
|
transform 420ms ease;
|
|
backdrop-filter: blur(10px);
|
|
}
|
|
|
|
#app.status-active:not(.match-live) .match-status {
|
|
opacity: 1;
|
|
transform: translate(-50%, 0);
|
|
}
|
|
|
|
#app.match-live .match-status {
|
|
display: none;
|
|
}
|
|
|
|
@media (min-width: 961px) {
|
|
#app.match-live .match-status {
|
|
left: calc((100vw - var(--drawer-width)) / 2);
|
|
width: min(760px, calc(100vw - var(--drawer-width) - 32px));
|
|
}
|
|
|
|
#app.match-live.drawer-collapsed .match-status {
|
|
left: 50%;
|
|
width: min(980px, calc(100vw - 32px));
|
|
}
|
|
}
|
|
|
|
.status-track {
|
|
display: flex;
|
|
width: max-content;
|
|
min-width: 200%;
|
|
gap: 64px;
|
|
animation: status-marquee 22s linear infinite;
|
|
}
|
|
|
|
.status-track span {
|
|
flex: 0 0 auto;
|
|
min-width: calc(50vw - 32px);
|
|
padding-left: 28px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
@keyframes intro-rise {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(22px) scale(0.96);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes preview-attack {
|
|
to {
|
|
background-position-x: var(--sprite-end);
|
|
}
|
|
}
|
|
|
|
@keyframes preview-breathe {
|
|
0%,
|
|
100% {
|
|
margin-top: 0;
|
|
}
|
|
50% {
|
|
margin-top: -8px;
|
|
}
|
|
}
|
|
|
|
@keyframes preview-strike {
|
|
0%,
|
|
58%,
|
|
100% {
|
|
opacity: 0;
|
|
}
|
|
64%,
|
|
76% {
|
|
opacity: 0.86;
|
|
}
|
|
}
|
|
|
|
@keyframes status-marquee {
|
|
from {
|
|
transform: translateX(0);
|
|
}
|
|
to {
|
|
transform: translateX(-50%);
|
|
}
|
|
}
|
|
|
|
@keyframes kill-log-entry {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(8px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes banner-in {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(18px) scale(0.78);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes victory-banner-sheen {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateX(0) skewX(-18deg);
|
|
}
|
|
18% {
|
|
opacity: 1;
|
|
}
|
|
to {
|
|
opacity: 0;
|
|
transform: translateX(560%) skewX(-18deg);
|
|
}
|
|
}
|
|
|
|
@keyframes victory-confetti-burst {
|
|
0% {
|
|
opacity: 0;
|
|
transform: translate(-50%, -50%) rotate(var(--confetti-tilt)) scale(0.3);
|
|
}
|
|
12% {
|
|
opacity: 1;
|
|
}
|
|
74% {
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
opacity: 0;
|
|
transform:
|
|
translate(calc(-50% + var(--confetti-x)), calc(-50% + var(--confetti-y)))
|
|
rotate(calc(var(--confetti-tilt) + var(--confetti-spin)))
|
|
scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes victory-glow {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.58);
|
|
}
|
|
35% {
|
|
opacity: 1;
|
|
}
|
|
to {
|
|
opacity: 0.8;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes victory-rays-in {
|
|
from {
|
|
transform: scale(0.56);
|
|
}
|
|
to {
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes victory-rays-turn {
|
|
to {
|
|
rotate: 360deg;
|
|
}
|
|
}
|
|
|
|
@keyframes victory-message-pulse {
|
|
from {
|
|
opacity: 0.72;
|
|
transform: scale(0.88);
|
|
}
|
|
58% {
|
|
transform: scale(1.05);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.victory-banner,
|
|
.victory-banner::before,
|
|
.victory-banner-message,
|
|
.victory-celebration::before,
|
|
.victory-confetti-piece,
|
|
.victory-rays {
|
|
animation-duration: 1ms;
|
|
animation-iteration-count: 1;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 960px) {
|
|
body {
|
|
overflow: hidden;
|
|
}
|
|
|
|
#app {
|
|
--arena-gap: 0px;
|
|
--mobile-game-size: min(100vw, calc(100svh - var(--score-band-height)));
|
|
--mobile-kill-log-top: calc(var(--score-band-height) + var(--mobile-game-size) + 10px);
|
|
--mobile-options-button-width: 54px;
|
|
--mobile-options-gap: 8px;
|
|
--mobile-team-card-width: clamp(56px, calc((100vw - 120px) / 4), 72px);
|
|
--mobile-visitor-space: calc(104px + env(safe-area-inset-bottom));
|
|
--score-band-height: 132px;
|
|
--score-panel-left: 10px;
|
|
--score-panel-width: calc(100vw - 20px);
|
|
--score-rail-width: 0px;
|
|
}
|
|
|
|
#app.match-live .arena-shell {
|
|
place-items: start center;
|
|
}
|
|
|
|
#app.match-live #game {
|
|
width: var(--mobile-game-size);
|
|
height: var(--mobile-game-size);
|
|
margin-top: var(--score-band-height);
|
|
margin-left: 0;
|
|
}
|
|
|
|
.intro-stage {
|
|
padding: 20px;
|
|
}
|
|
|
|
.arena-logo {
|
|
font-size: clamp(3.8rem, 22vw, 7rem);
|
|
}
|
|
|
|
.fighter-entry {
|
|
width: 100vw;
|
|
padding: 22px;
|
|
}
|
|
|
|
#app.match-live .fighter-entry {
|
|
top: calc(10px + env(safe-area-inset-top));
|
|
right: 10px;
|
|
left: 10px;
|
|
width: auto;
|
|
max-height: calc(100svh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
|
|
gap: 10px;
|
|
padding: 12px;
|
|
}
|
|
|
|
#app.match-live.drawer-collapsed .fighter-entry {
|
|
top: calc(22px + env(safe-area-inset-top));
|
|
right: 10px;
|
|
left: auto;
|
|
width: auto;
|
|
}
|
|
|
|
#app.match-live .fighter-entry h2 {
|
|
font-size: clamp(1.45rem, 7vw, 1.8rem);
|
|
}
|
|
|
|
#app.match-live .fighter-entry textarea {
|
|
height: 112px;
|
|
min-height: 112px;
|
|
resize: none;
|
|
}
|
|
|
|
#app.match-live .fighter-entry fieldset {
|
|
gap: 7px;
|
|
padding: 9px;
|
|
}
|
|
|
|
#app.match-live .fighter-entry form {
|
|
gap: 10px;
|
|
}
|
|
|
|
#app.match-live .entry-copy {
|
|
gap: 4px;
|
|
}
|
|
|
|
#app.match-live .eyebrow {
|
|
font-size: 0.68rem;
|
|
}
|
|
|
|
#app.match-live label,
|
|
#app.match-live .spawn-placement-label {
|
|
font-size: 0.82rem;
|
|
}
|
|
|
|
#app.match-live input:not([type="range"]):not([type="radio"]),
|
|
#app.match-live textarea {
|
|
min-height: 40px;
|
|
padding-inline: 10px;
|
|
}
|
|
|
|
#app.match-live textarea {
|
|
padding-block: 9px;
|
|
}
|
|
|
|
#app.match-live .team-size-number {
|
|
width: 64px;
|
|
min-width: 64px;
|
|
}
|
|
|
|
#app.match-live .spawn-placement-option span {
|
|
min-height: 36px;
|
|
padding: 6px;
|
|
font-size: 0.76rem;
|
|
}
|
|
|
|
#app.match-live .match-actions {
|
|
gap: 8px;
|
|
}
|
|
|
|
#app.match-live .match-actions button {
|
|
min-height: 44px;
|
|
}
|
|
|
|
#app.match-live .drawer-toggle {
|
|
min-width: 116px;
|
|
}
|
|
|
|
#app.match-live.drawer-collapsed .drawer-toggle {
|
|
width: var(--mobile-options-button-width);
|
|
min-width: var(--mobile-options-button-width);
|
|
padding-inline: 6px;
|
|
font-size: 0;
|
|
}
|
|
|
|
#app.match-live.drawer-collapsed .drawer-toggle::before {
|
|
content: "옵션";
|
|
font-size: 0.78rem;
|
|
line-height: 1;
|
|
}
|
|
|
|
.battle-preview {
|
|
opacity: 0.62;
|
|
}
|
|
|
|
.preview-knight {
|
|
left: -8vw;
|
|
top: 52vh;
|
|
}
|
|
|
|
.preview-orc {
|
|
right: -9vw;
|
|
top: 49vh;
|
|
}
|
|
|
|
.preview-wizard {
|
|
left: 48vw;
|
|
top: 21vh;
|
|
}
|
|
|
|
.scoreboard {
|
|
align-items: flex-start;
|
|
top: 10px;
|
|
left: var(--score-panel-left);
|
|
width: var(--score-panel-width);
|
|
max-height: calc(var(--score-band-height) - 12px);
|
|
overflow-x: auto;
|
|
overflow-y: hidden;
|
|
padding: 9px min(148px, 38vw) 9px 9px;
|
|
scrollbar-color: rgb(238 185 73 / 0.38) transparent;
|
|
scrollbar-width: thin;
|
|
touch-action: pan-x;
|
|
}
|
|
|
|
#app.match-live.drawer-collapsed .scoreboard {
|
|
width: calc(
|
|
100vw - 20px - var(--mobile-options-button-width) - var(--mobile-options-gap)
|
|
);
|
|
padding-right: 9px;
|
|
}
|
|
|
|
.score-side {
|
|
display: grid;
|
|
grid-auto-columns: var(--mobile-team-card-width);
|
|
grid-auto-flow: column;
|
|
grid-template-rows: repeat(2, 48px);
|
|
gap: 5px 5px;
|
|
}
|
|
|
|
.scoreboard::-webkit-scrollbar {
|
|
height: 4px;
|
|
}
|
|
|
|
.scoreboard::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
.scoreboard::-webkit-scrollbar-thumb {
|
|
border-radius: 999px;
|
|
background: rgb(238 185 73 / 0.38);
|
|
}
|
|
|
|
.team-score {
|
|
width: auto;
|
|
min-height: 0;
|
|
height: 48px;
|
|
gap: 3px;
|
|
padding: 5px 6px;
|
|
font-size: 0.66rem;
|
|
}
|
|
|
|
.team-score-count {
|
|
font-size: 0.74rem;
|
|
}
|
|
|
|
.team-score.is-focused {
|
|
box-shadow: inset 0 0 0 2px rgb(255 244 209 / 0.92);
|
|
}
|
|
|
|
.battle-notice {
|
|
top: calc(var(--score-band-height) + 8px);
|
|
right: 24px;
|
|
left: 24px;
|
|
width: auto;
|
|
padding-inline: 12px;
|
|
font-size: 0.76rem;
|
|
transform: translateY(-10px);
|
|
}
|
|
|
|
#app.match-live .battle-notice.is-visible {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.kill-log {
|
|
top: var(--mobile-kill-log-top);
|
|
bottom: auto;
|
|
left: 10px;
|
|
width: calc(100vw - 20px);
|
|
max-height: calc(100svh - var(--mobile-kill-log-top) - var(--mobile-visitor-space));
|
|
padding: 8px;
|
|
}
|
|
|
|
#app.match-live .victory-celebration {
|
|
padding:
|
|
var(--score-band-height)
|
|
14px
|
|
min(30svh, 230px);
|
|
}
|
|
|
|
.victory-banner {
|
|
width: min(calc(100vw - 48px), 520px);
|
|
min-height: 92px;
|
|
padding: 1rem 1.1rem;
|
|
font-size: clamp(1.35rem, 7vw, 2rem);
|
|
}
|
|
|
|
.match-status {
|
|
bottom: 10px;
|
|
width: calc(100vw - 20px);
|
|
}
|
|
|
|
.arena-meta {
|
|
right: 10px;
|
|
bottom: calc(10px + env(safe-area-inset-bottom));
|
|
z-index: 10;
|
|
gap: 8px;
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
}
|
|
|
|
.visitor-count {
|
|
font-size: 0.68rem;
|
|
}
|
|
|
|
.about-button {
|
|
min-width: 68px;
|
|
min-height: 26px;
|
|
font-size: 0.68rem;
|
|
}
|
|
|
|
.about-backdrop {
|
|
align-items: end;
|
|
padding: 12px;
|
|
}
|
|
|
|
.about-dialog {
|
|
width: 100%;
|
|
max-height: calc(100svh - 24px);
|
|
}
|
|
|
|
.about-header {
|
|
padding: 18px 18px 12px;
|
|
}
|
|
|
|
.about-tabs {
|
|
padding: 0 18px 12px;
|
|
}
|
|
|
|
.about-panel {
|
|
padding: 16px 18px 22px;
|
|
}
|
|
|
|
.about-field-row {
|
|
grid-template-columns: 78px minmax(0, 1fr);
|
|
min-height: 48px;
|
|
gap: 10px;
|
|
}
|
|
}
|