633 lines
11 KiB
CSS
633 lines
11 KiB
CSS
/* ================================================
|
||
building.css – Charakter, Equipment, Inventar
|
||
Dynasty of Knights
|
||
Popup/Tooltip/Notification → popup.css
|
||
================================================ */
|
||
|
||
/* =========================
|
||
Base
|
||
========================= */
|
||
|
||
body {
|
||
margin: 0;
|
||
height: 100vh;
|
||
font-family: "Cinzel", serif;
|
||
color: #2b1b0f;
|
||
}
|
||
|
||
/* =========================
|
||
Progress Bar
|
||
========================= */
|
||
|
||
.progress-bar {
|
||
width: 100%;
|
||
height: 12px;
|
||
background: #5b3a1f;
|
||
border: 1px solid #8b6a3c;
|
||
margin-top: 8px;
|
||
}
|
||
|
||
.progress-fill {
|
||
height: 100%;
|
||
background: linear-gradient(#3cff3c, #1ea01e);
|
||
box-shadow: 0 0 6px #3cff3c;
|
||
}
|
||
|
||
/* =========================
|
||
Character Window
|
||
========================= */
|
||
|
||
#character-ui {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 14px;
|
||
padding: 8px 0 4px 0;
|
||
}
|
||
|
||
/* Linke & Rechte Slot-Spalte */
|
||
|
||
.equip-col {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 8px;
|
||
align-items: center;
|
||
}
|
||
|
||
/* Avatar in der Mitte */
|
||
|
||
.character-center {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
gap: 8px;
|
||
position: relative;
|
||
}
|
||
|
||
/* ========================
|
||
Avatar Wrapper
|
||
======================== */
|
||
|
||
.avatar-wrapper {
|
||
position: relative;
|
||
width: 160px;
|
||
height: 270px;
|
||
border-radius: 8px;
|
||
border: 2px solid #8b6a3c;
|
||
background: radial-gradient(ellipse at center, #2a1f14 0%, #0d0a07 100%);
|
||
box-shadow:
|
||
0 0 20px rgba(0, 0, 0, 0.8),
|
||
inset 0 0 30px rgba(0, 0, 0, 0.5);
|
||
overflow: hidden;
|
||
}
|
||
|
||
.avatar-base {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
object-fit: contain;
|
||
display: block;
|
||
opacity: 0.9;
|
||
}
|
||
|
||
/* Item Overlays */
|
||
|
||
.avatar-overlay {
|
||
position: absolute;
|
||
pointer-events: none;
|
||
display: none;
|
||
z-index: 2;
|
||
}
|
||
|
||
.avatar-overlay.visible {
|
||
display: block;
|
||
animation: overlayFadeIn 0.25s ease;
|
||
}
|
||
|
||
.avatar-overlay img {
|
||
width: 100%;
|
||
height: 100%;
|
||
object-fit: contain;
|
||
filter: drop-shadow(0 0 4px rgba(255, 200, 80, 0.5))
|
||
drop-shadow(0 2px 6px rgba(0, 0, 0, 0.9));
|
||
}
|
||
|
||
@keyframes overlayFadeIn {
|
||
from {
|
||
opacity: 0;
|
||
transform: scale(1.15);
|
||
}
|
||
to {
|
||
opacity: 1;
|
||
transform: scale(1);
|
||
}
|
||
}
|
||
|
||
/* Positionen der Item-Overlays (180x320px) */
|
||
|
||
.avatar-overlay[data-slot="helmet"] {
|
||
top: 1%;
|
||
left: 22%;
|
||
width: 56%;
|
||
height: 20%;
|
||
}
|
||
.avatar-overlay[data-slot="amulet"] {
|
||
top: 21%;
|
||
left: 58%;
|
||
width: 30%;
|
||
height: 11%;
|
||
}
|
||
.avatar-overlay[data-slot="shoulder"] {
|
||
top: 19%;
|
||
left: 3%;
|
||
width: 30%;
|
||
height: 13%;
|
||
}
|
||
.avatar-overlay[data-slot="weapon"] {
|
||
top: 38%;
|
||
left: 56%;
|
||
width: 40%;
|
||
height: 32%;
|
||
}
|
||
.avatar-overlay[data-slot="gloves"] {
|
||
top: 54%;
|
||
left: 2%;
|
||
width: 30%;
|
||
height: 13%;
|
||
}
|
||
.avatar-overlay[data-slot="shield"] {
|
||
top: 36%;
|
||
left: 4%;
|
||
width: 36%;
|
||
height: 30%;
|
||
}
|
||
.avatar-overlay[data-slot="belt"] {
|
||
top: 51%;
|
||
left: 18%;
|
||
width: 64%;
|
||
height: 11%;
|
||
}
|
||
.avatar-overlay[data-slot="ring"] {
|
||
top: 67%;
|
||
left: 3%;
|
||
width: 24%;
|
||
height: 9%;
|
||
}
|
||
.avatar-overlay[data-slot="boots"] {
|
||
top: 80%;
|
||
left: 12%;
|
||
width: 76%;
|
||
height: 18%;
|
||
}
|
||
|
||
/* Top-Slots (Helm + Amulett) über dem Avatar */
|
||
|
||
.equip-top {
|
||
display: flex;
|
||
gap: 8px;
|
||
justify-content: center;
|
||
}
|
||
|
||
/* Bottom-Slots (Gürtel + Stiefel) unter dem Avatar */
|
||
|
||
.equip-bottom {
|
||
display: flex;
|
||
gap: 8px;
|
||
justify-content: center;
|
||
}
|
||
|
||
/* =========================
|
||
Equipment Slots
|
||
========================= */
|
||
|
||
.slot {
|
||
width: 68px;
|
||
height: 68px;
|
||
position: relative;
|
||
|
||
background-image: url("/images/items/slot_mittel.png");
|
||
background-size: cover;
|
||
background-position: center;
|
||
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
|
||
border-radius: 4px;
|
||
transition: 0.2s;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.slot:hover {
|
||
filter: brightness(1.3);
|
||
box-shadow: 0 0 8px rgba(200, 160, 60, 0.5);
|
||
}
|
||
|
||
.slot.drag-over {
|
||
outline: 3px solid gold;
|
||
box-shadow: 0 0 14px gold;
|
||
}
|
||
|
||
.slot.has-item {
|
||
box-shadow: 0 0 8px rgba(255, 200, 60, 0.4);
|
||
}
|
||
|
||
.slot-label {
|
||
position: absolute;
|
||
bottom: 4px;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
white-space: nowrap;
|
||
|
||
color: #ffffff;
|
||
font-family: "Cinzel", serif;
|
||
font-size: 9px;
|
||
font-weight: bold;
|
||
|
||
text-shadow:
|
||
0 0 3px #000,
|
||
0 0 6px #000;
|
||
|
||
pointer-events: none;
|
||
background: rgba(0, 0, 0, 0.45);
|
||
padding: 1px 4px;
|
||
border-radius: 3px;
|
||
}
|
||
|
||
.slot.has-item .slot-label {
|
||
display: none;
|
||
}
|
||
|
||
.slot img {
|
||
width: 80%;
|
||
height: 80%;
|
||
object-fit: contain;
|
||
}
|
||
|
||
/* =========================
|
||
Inventory
|
||
========================= */
|
||
|
||
.inventory-section-title {
|
||
font-family: "Tangerine", serif;
|
||
font-size: 26px;
|
||
color: #3b2412;
|
||
text-align: center;
|
||
margin: 4px 0 2px 0;
|
||
border-top: 1px solid #8b6a3c;
|
||
padding-top: 6px;
|
||
letter-spacing: 1px;
|
||
}
|
||
|
||
#inventory-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(8, 56px);
|
||
grid-auto-rows: 56px;
|
||
gap: 5px;
|
||
width: max-content;
|
||
margin: 0 auto;
|
||
padding: 6px;
|
||
}
|
||
|
||
#inventory-wrapper {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
|
||
#inventory-page {
|
||
font-family: "Cinzel", serif;
|
||
font-size: 14px;
|
||
font-weight: bold;
|
||
color: #3b2412;
|
||
display: flex;
|
||
align-items: center;
|
||
min-width: 100px;
|
||
justify-content: center;
|
||
}
|
||
|
||
#inv-left,
|
||
#inv-right {
|
||
background: none;
|
||
border: none;
|
||
font-size: 22px;
|
||
cursor: pointer;
|
||
padding: 4px 8px;
|
||
margin: 0;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: #5c3b20;
|
||
transition: 0.2s;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
#inv-left:hover,
|
||
#inv-right:hover {
|
||
color: #f0d9a6;
|
||
background: rgba(90, 60, 20, 0.4);
|
||
transform: scale(1.1);
|
||
}
|
||
|
||
#inv-left:disabled,
|
||
#inv-right:disabled {
|
||
opacity: 0.25;
|
||
cursor: not-allowed;
|
||
transform: none;
|
||
}
|
||
|
||
#inventory-nav {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 10px;
|
||
margin-top: 8px;
|
||
padding: 6px;
|
||
background: rgba(0, 0, 0, 0.1);
|
||
border-top: 1px solid #8b6a3c;
|
||
border-radius: 0 0 6px 6px;
|
||
}
|
||
|
||
.inventory-slot {
|
||
width: 56px;
|
||
height: 56px;
|
||
background-image: url("/images/items/slot_mittel.png");
|
||
background-size: cover;
|
||
background-position: center;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
cursor: grab;
|
||
border-radius: 3px;
|
||
transition: 0.2s;
|
||
}
|
||
|
||
.inventory-slot:active {
|
||
cursor: grabbing;
|
||
}
|
||
|
||
.inventory-slot:hover {
|
||
filter: brightness(1.25);
|
||
box-shadow: 0 0 6px rgba(200, 160, 60, 0.4);
|
||
}
|
||
|
||
.inventory-slot img {
|
||
width: 80%;
|
||
height: 80%;
|
||
object-fit: contain;
|
||
}
|
||
|
||
.item-common {
|
||
box-shadow: 0 0 0 2px #9d9d9d inset;
|
||
}
|
||
.item-rare {
|
||
box-shadow: 0 0 0 2px #0070dd inset;
|
||
}
|
||
.item-epic {
|
||
box-shadow: 0 0 0 2px #a335ee inset;
|
||
}
|
||
.item-legendary {
|
||
box-shadow: 0 0 0 2px #ff8000 inset;
|
||
}
|
||
|
||
/* =========================
|
||
Tooltip (Items)
|
||
========================= */
|
||
|
||
#item-tooltip {
|
||
position: fixed;
|
||
pointer-events: none;
|
||
|
||
background: rgba(0, 0, 0, 0.85);
|
||
color: #fff;
|
||
|
||
padding: 8px 12px;
|
||
border-radius: 6px;
|
||
|
||
font-size: 14px;
|
||
|
||
display: none;
|
||
z-index: 9999;
|
||
|
||
max-width: 200px;
|
||
|
||
border: 1px solid #555;
|
||
|
||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
|
||
}
|
||
|
||
/* =========================
|
||
Schwarzmarkt Tabs
|
||
========================= */
|
||
|
||
.market-tabs {
|
||
display: flex;
|
||
gap: 6px;
|
||
margin-bottom: 16px;
|
||
border-bottom: 2px solid #8b6a3c;
|
||
padding-bottom: 8px;
|
||
}
|
||
|
||
.market-tab {
|
||
padding: 8px 20px;
|
||
|
||
background: linear-gradient(#5c3b20, #3a2513);
|
||
color: #e7d9b4;
|
||
|
||
border: 1px solid #8b6a3c;
|
||
border-radius: 4px;
|
||
|
||
cursor: pointer;
|
||
font-family: "Cinzel", serif;
|
||
font-size: 13px;
|
||
font-weight: bold;
|
||
|
||
letter-spacing: 0.5px;
|
||
transition: 0.2s;
|
||
}
|
||
|
||
.market-tab:hover {
|
||
background: linear-gradient(#8b6a3c, #5c3b20);
|
||
box-shadow: 0 0 8px rgba(200, 160, 80, 0.4);
|
||
}
|
||
|
||
.market-tab.active {
|
||
background: linear-gradient(#d4b97a, #9c7a3a);
|
||
color: #2b1b0f;
|
||
border-color: #f0d9a6;
|
||
}
|
||
|
||
/* =========================
|
||
Schwarzmarkt Tab Inhalte
|
||
========================= */
|
||
|
||
.market-tab-content {
|
||
display: none;
|
||
}
|
||
|
||
.market-tab-content.active {
|
||
display: block;
|
||
}
|
||
|
||
/* =========================
|
||
Schwarzmarkt Seiten Grid
|
||
========================= */
|
||
|
||
#market-pages {
|
||
display: grid;
|
||
grid-template-columns: repeat(4, 1fr);
|
||
gap: 16px;
|
||
padding: 10px 4px;
|
||
}
|
||
|
||
/* =========================
|
||
Schwarzmarkt Slot Karten
|
||
========================= */
|
||
|
||
.market-slot {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
|
||
padding: 14px 10px;
|
||
gap: 8px;
|
||
|
||
border-radius: 8px;
|
||
border: 2px solid #8b6a3c;
|
||
|
||
background: linear-gradient(
|
||
160deg,
|
||
rgba(80, 50, 20, 0.6),
|
||
rgba(40, 25, 10, 0.8)
|
||
);
|
||
|
||
box-shadow:
|
||
0 4px 12px rgba(0, 0, 0, 0.4),
|
||
inset 0 1px 0 rgba(255, 220, 100, 0.1);
|
||
|
||
transition: 0.2s;
|
||
min-height: 150px;
|
||
position: relative;
|
||
}
|
||
|
||
/* Besessen */
|
||
|
||
.market-slot.owned {
|
||
border-color: #3caa3c;
|
||
background: linear-gradient(
|
||
160deg,
|
||
rgba(20, 60, 20, 0.6),
|
||
rgba(10, 35, 10, 0.8)
|
||
);
|
||
}
|
||
|
||
.market-slot.owned .bag-status {
|
||
font-size: 22px;
|
||
color: #3cff3c;
|
||
text-shadow: 0 0 8px #3cff3c;
|
||
}
|
||
|
||
/* Kaufbar */
|
||
|
||
.market-slot.buy {
|
||
cursor: pointer;
|
||
border-color: #caa24b;
|
||
}
|
||
|
||
.market-slot.buy:hover {
|
||
transform: translateY(-3px);
|
||
border-color: #f0d060;
|
||
box-shadow:
|
||
0 8px 20px rgba(0, 0, 0, 0.5),
|
||
0 0 15px rgba(200, 160, 60, 0.3);
|
||
}
|
||
|
||
/* Gesperrt */
|
||
|
||
.market-slot.locked {
|
||
opacity: 0.4;
|
||
filter: grayscale(60%);
|
||
}
|
||
|
||
/* =========================
|
||
Schwarzmarkt Slot Inhalt
|
||
========================= */
|
||
|
||
.bag-icon {
|
||
width: 64px;
|
||
height: 64px;
|
||
object-fit: contain;
|
||
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.6));
|
||
}
|
||
|
||
.bag-label {
|
||
font-family: "Cinzel", serif;
|
||
font-size: 12px;
|
||
font-weight: bold;
|
||
color: #e7d9b4;
|
||
letter-spacing: 0.5px;
|
||
}
|
||
|
||
.bag-price {
|
||
font-family: "Cinzel", serif;
|
||
font-size: 14px;
|
||
font-weight: bold;
|
||
color: #ffd700;
|
||
text-shadow: 0 0 6px rgba(255, 215, 0, 0.5);
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 4px;
|
||
}
|
||
|
||
.buy-button {
|
||
padding: 6px 16px !important;
|
||
font-size: 12px !important;
|
||
font-family: "Cinzel", serif !important;
|
||
font-weight: bold !important;
|
||
background: linear-gradient(#7a5a2a, #caa24b) !important;
|
||
border: 1px solid #e0c67b !important;
|
||
border-radius: 4px;
|
||
color: #1a1206 !important;
|
||
cursor: pointer;
|
||
transition: 0.2s;
|
||
margin-top: 0 !important;
|
||
width: 100%;
|
||
}
|
||
|
||
.buy-button:hover {
|
||
transform: scale(1.05);
|
||
box-shadow:
|
||
0 0 8px #ffd66b,
|
||
0 0 18px #caa24b;
|
||
}
|
||
|
||
/* Info Text über den Taschen */
|
||
|
||
.market-info-text {
|
||
font-family: "Cinzel", serif;
|
||
font-size: 20px;
|
||
color: #5c3b20;
|
||
text-align: center;
|
||
margin: 0 0 12px 0;
|
||
padding: 10px 16px;
|
||
border-bottom: 1px solid rgba(139, 106, 60, 0.4);
|
||
letter-spacing: 0.3px;
|
||
line-height: 1.6;
|
||
font-style: italic;
|
||
}
|
||
|
||
/* Placeholder Texte */
|
||
|
||
.market-placeholder {
|
||
text-align: center;
|
||
padding: 30px 20px;
|
||
color: #8b6a3c;
|
||
font-family: "Cinzel", serif;
|
||
font-size: 14px;
|
||
font-style: italic;
|
||
letter-spacing: 0.5px;
|
||
}
|