dok/public/css/1v1.css
2026-03-17 15:13:15 +00:00

464 lines
11 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
width: 100vw;
height: 100vh;
overflow: hidden;
font-family: "Cinzel", serif;
}
.board {
width: 1800px;
height: 900px;
position: absolute;
top: 0;
left: 0;
transform-origin: top left;
}
.board::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(
to bottom,
rgba(0, 0, 0, 0.1) 0%,
rgba(0, 0, 0, 0.05) 50%,
rgba(0, 0, 0, 0.65) 100%
);
z-index: 0;
}
/* ── TOP BAR ── */
.top-bar {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 48px;
background: rgba(0, 0, 0, 0.55);
backdrop-filter: blur(6px);
border-bottom: 1px solid rgba(255, 215, 80, 0.3);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
z-index: 20;
}
.top-bar .game-title {
font-size: 14px;
letter-spacing: 6px;
color: rgba(255, 215, 80, 0.9);
text-transform: uppercase;
text-shadow: 0 1px 8px rgba(0, 0, 0, 0.8);
}
.top-bar .top-icons {
display: flex;
gap: 8px;
}
.top-bar .top-icon {
width: 34px;
height: 34px;
border-radius: 6px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 215, 80, 0.3);
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
cursor: pointer;
transition: background 0.2s;
}
.top-bar .top-icon:hover {
background: rgba(255, 215, 80, 0.2);
}
.end-turn-btn {
background: linear-gradient(135deg, #8b1a1a, #c0392b);
border: 2px solid rgba(255, 100, 100, 0.5);
border-radius: 8px;
color: #fff;
font-family: "Cinzel", serif;
font-size: 12px;
letter-spacing: 2px;
padding: 7px 20px;
cursor: pointer;
text-transform: uppercase;
box-shadow: 0 0 14px rgba(200, 0, 0, 0.4);
transition: all 0.2s;
}
.end-turn-btn:hover {
background: linear-gradient(135deg, #a02020, #e74c3c);
box-shadow: 0 0 24px rgba(200, 0, 0, 0.7);
}
/* ── AVATAR (rectangular) ── */
/* Card area: 2 rows × 145px + 16px gap = 306px. Half = 153px */
.avatar {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 150px;
height: 200px;
border-radius: 10px;
border: 2px solid rgba(255, 215, 80, 0.7);
background: rgba(0, 0, 0, 0.45);
backdrop-filter: blur(8px);
display: flex;
flex-direction: column;
overflow: hidden;
cursor: pointer;
z-index: 10;
box-shadow:
0 0 24px rgba(255, 215, 80, 0.2),
inset 0 0 20px rgba(0, 0, 0, 0.5);
transition:
border-color 0.3s,
box-shadow 0.3s;
}
.avatar:hover {
border-color: rgba(255, 215, 80, 1);
box-shadow: 0 0 38px rgba(255, 215, 80, 0.5);
}
.avatar-left {
left: 40px;
}
.avatar-right {
right: 40px;
}
.avatar input[type="file"] {
position: absolute;
inset: 0;
opacity: 0;
cursor: pointer;
z-index: 3;
}
.avatar .av-img {
width: 100%;
flex: 1;
object-fit: cover;
display: none;
}
.avatar .av-placeholder {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 6px;
}
.avatar .av-placeholder .av-icon {
font-size: 38px;
opacity: 0.5;
pointer-events: none;
}
.avatar .av-placeholder .av-lbl {
font-size: 9px;
color: rgba(255, 215, 80, 0.75);
letter-spacing: 2px;
text-transform: uppercase;
pointer-events: none;
}
/* Stats bar inside avatar */
.avatar .av-stats {
background: rgba(0, 0, 0, 0.6);
border-top: 1px solid rgba(255, 215, 80, 0.3);
display: flex;
justify-content: space-around;
padding: 4px 6px;
z-index: 2;
}
.stat {
display: flex;
align-items: center;
gap: 3px;
font-size: 11px;
color: #fff;
}
.stat .s-icon {
font-size: 13px;
}
.stat .s-val {
font-weight: 700;
font-size: 13px;
}
.hp .s-val {
color: #e74c3c;
}
.mana .s-val {
color: #3498db;
}
/* HP orb bottom-left/right of avatar */
.hp-orb {
position: absolute;
bottom: -18px;
width: 36px;
height: 36px;
border-radius: 50%;
background: radial-gradient(circle at 40% 35%, #e74c3c, #8b0000);
border: 2px solid rgba(255, 100, 100, 0.6);
display: flex;
align-items: center;
justify-content: center;
font-size: 11px;
font-weight: 700;
color: #fff;
box-shadow: 0 0 12px rgba(220, 0, 0, 0.6);
z-index: 11;
}
.avatar-left .hp-orb {
left: -10px;
}
.avatar-right .hp-orb {
right: -10px;
}
/* ── CENTER CARD AREA ── */
.card-area {
position: absolute;
left: 220px;
right: 220px;
top: 50%;
transform: translateY(-50%);
display: flex;
flex-direction: column;
gap: 16px;
align-items: center;
z-index: 10;
}
.row-label {
font-size: 9px;
letter-spacing: 3px;
color: rgba(255, 215, 80, 0.45);
text-transform: uppercase;
align-self: flex-start;
margin-left: 4px;
margin-bottom: -10px;
}
.card-row {
display: flex;
gap: 10px;
}
.card-slot {
width: 180px;
height: 260px;
border-radius: 10px;
border: 2px dashed rgba(255, 215, 80, 0.35);
background: rgba(0, 0, 0, 0.25);
backdrop-filter: blur(3px);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.22s ease;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
position: relative;
overflow: hidden;
}
.card-slot::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(
135deg,
rgba(255, 255, 255, 0.05) 0%,
transparent 55%
);
}
.card-slot .slot-num {
font-size: 9px;
color: rgba(255, 255, 255, 0.2);
letter-spacing: 1px;
position: absolute;
bottom: 6px;
}
.card-slot .slot-icon {
font-size: 18px;
opacity: 0.2;
}
/* ── BOTTOM BAR ── */
.bottom-bar {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 160px;
background: linear-gradient(
to top,
rgba(0, 0, 0, 0.82) 0%,
rgba(0, 0, 0, 0.5) 70%,
transparent 100%
);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px;
z-index: 15;
}
/* Left side: portrait + resources */
.player-hud {
display: flex;
align-items: center;
gap: 14px;
min-width: 200px;
}
.portrait {
width: 80px;
height: 80px;
border-radius: 50%;
border: 3px solid rgba(255, 215, 80, 0.7);
background: rgba(0, 0, 0, 0.5);
overflow: hidden;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
font-size: 30px;
cursor: pointer;
position: relative;
box-shadow: 0 0 18px rgba(255, 215, 80, 0.3);
}
.portrait input[type="file"] {
position: absolute;
inset: 0;
opacity: 0;
cursor: pointer;
z-index: 2;
}
.portrait img {
width: 100%;
height: 100%;
object-fit: cover;
display: none;
border-radius: 50%;
}
.res-bars {
display: flex;
flex-direction: column;
gap: 6px;
}
.res-bar-wrap {
display: flex;
align-items: center;
gap: 6px;
}
.res-bar-wrap .res-icon {
font-size: 14px;
width: 20px;
text-align: center;
}
.res-bar {
width: 90px;
height: 12px;
background: rgba(0, 0, 0, 0.5);
border-radius: 6px;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, 0.15);
}
.res-fill {
height: 100%;
border-radius: 6px;
}
.res-fill.hp-fill {
width: 75%;
background: linear-gradient(to right, #8b0000, #e74c3c);
}
.res-fill.mana-fill {
width: 60%;
background: linear-gradient(to right, #1a237e, #3498db);
}
.res-fill.armor-fill {
width: 40%;
background: linear-gradient(to right, #4a4a00, #f1c40f);
}
.res-val {
font-size: 11px;
color: #fff;
font-weight: 700;
min-width: 28px;
}
/* Hand cards */
.hand-area {
display: flex;
gap: 8px;
align-items: flex-end;
flex: 1;
justify-content: center;
}
.hand-slot {
width: 180px;
height: 260px;
border-radius: 9px;
border: 2px dashed rgba(255, 215, 80, 0.35);
background: rgba(0, 0, 0, 0.4);
backdrop-filter: blur(4px);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s ease;
position: relative;
overflow: hidden;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}
.hand-slot::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(
160deg,
rgba(255, 255, 255, 0.06) 0%,
transparent 50%
);
}
.hand-slot:hover {
border-color: rgba(255, 215, 80, 0.9);
transform: translateY(-10px);
box-shadow: 0 16px 28px rgba(255, 215, 80, 0.2);
}
.hand-slot .hs-icon {
font-size: 22px;
opacity: 0.2;
}
/* Right side: action icons */
.action-hud {
display: flex;
flex-direction: column;
gap: 6px;
align-items: flex-end;
min-width: 140px;
}
.action-row {
display: flex;
gap: 6px;
}
.action-btn {
width: 40px;
height: 40px;
border-radius: 8px;
background: rgba(0, 0, 0, 0.5);
border: 1px solid rgba(255, 215, 80, 0.35);
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
cursor: pointer;
transition: all 0.2s;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}
.action-btn:hover {
background: rgba(255, 215, 80, 0.18);
border-color: rgba(255, 215, 80, 0.8);
transform: scale(1.1);
}