This commit is contained in:
Michal Vrba
2026-09-16 22:20:44 +02:00
commit 121d013d14
53 changed files with 10410 additions and 0 deletions
+724
View File
@@ -0,0 +1,724 @@
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,600;0,700;0,800;0,900;1,700&family=Plus+Jakarta+Sans:wght@600;700;800;900&display=swap');
:root {
/* Exact VS Code Dark+ Palette */
--vscode-bg-editor: #181a1f;
--vscode-bg-sidebar: #21252b;
--vscode-bg-activitybar: #1e2227;
--vscode-bg-statusbar: #007acc;
--vscode-bg-titlebar: #282c34;
--vscode-bg-tab-active: #181a1f;
--vscode-bg-tab-inactive: #21252b;
--vscode-bg-input: #282c34;
--vscode-border: #383e4a;
--vscode-active-border: #007acc;
--vscode-text-main: #abb2bf;
--vscode-text-muted: #828997;
--vscode-text-bright: #ffffff;
/* VS Code C# Syntax Colors */
--syn-keyword: #61afef;
--syn-control: #c678dd;
--syn-type: #56b6c2;
--syn-string: #98c379;
--syn-method: #e5c07b;
--syn-var: #e06c75;
--syn-comment: #7f848e;
--syn-num: #d19a66;
/* Badges & Status */
--vsc-error: #e06c75;
--vsc-warning: #e5c07b;
--vsc-info: #61afef;
--vsc-success: #98c379;
--card-w: 245px;
--card-h: 335px;
}
* {
box-sizing: border-box;
}
body {
background-color: var(--vscode-bg-editor);
color: var(--vscode-text-bright);
font-family: 'Plus Jakarta Sans', 'Segoe UI', -apple-system, sans-serif;
font-weight: 700;
user-select: none;
overflow: hidden;
margin: 0;
padding: 0;
height: 100vh;
}
code, pre, .font-mono {
font-family: 'JetBrains Mono', 'Consolas', monospace;
font-weight: 700;
}
/* Floating Damage & Shield Numbers */
.floating-vfx-container {
position: absolute;
top: -30px;
left: 50%;
transform: translateX(-50%);
pointer-events: none;
z-index: 200;
display: flex;
flex-direction: column;
align-items: center;
gap: 4px;
}
.floating-dmg-number {
font-family: 'JetBrains Mono', monospace;
font-size: 2.6rem;
font-weight: 900;
color: #ff4757;
text-shadow: 0 0 12px rgba(0, 0, 0, 1), 0 0 25px rgba(255, 71, 87, 0.9);
animation: float-damage-up 1.3s cubic-bezier(0.18, 0.89, 0.32, 1.28) forwards;
white-space: nowrap;
letter-spacing: -1.5px;
}
.floating-dmg-number.crit {
font-size: 3.2rem;
color: #ffa502;
text-shadow: 0 0 15px rgba(0, 0, 0, 1), 0 0 35px rgba(255, 165, 2, 1);
animation: float-crit-up 1.3s cubic-bezier(0.18, 0.89, 0.32, 1.28) forwards;
}
.floating-dmg-number.pierce {
color: #00f0ff;
text-shadow: 0 0 15px rgba(0, 0, 0, 1), 0 0 25px rgba(0, 240, 255, 0.9);
}
.floating-dmg-number.shield {
color: #61afef;
text-shadow: 0 0 12px rgba(0, 0, 0, 1), 0 0 25px rgba(97, 175, 239, 0.9);
}
@keyframes float-damage-up {
0% {
opacity: 0;
transform: translateY(15px) scale(0.6);
}
20% {
opacity: 1;
transform: translateY(-12px) scale(1.3);
}
40% {
transform: translateY(-28px) scale(1.0);
}
100% {
opacity: 0;
transform: translateY(-75px) scale(0.85);
}
}
@keyframes float-crit-up {
0% {
opacity: 0;
transform: translateY(15px) scale(0.5) rotate(-8deg);
}
20% {
opacity: 1;
transform: translateY(-18px) scale(1.5) rotate(4deg);
}
40% {
transform: translateY(-34px) scale(1.1) rotate(0deg);
}
100% {
opacity: 0;
transform: translateY(-90px) scale(0.9);
}
}
/* Slower Dramatic Enemy Attack Lunge Animation */
.enemy-attacking-lunge {
animation: enemy-attack-strike 0.9s cubic-bezier(0.25, 1, 0.5, 1) forwards !important;
z-index: 120 !important;
border-color: #ff4757 !important;
box-shadow: 0 0 45px rgba(255, 71, 87, 1), 0 20px 40px rgba(0, 0, 0, 0.8) !important;
}
@keyframes enemy-attack-strike {
0% {
transform: translateY(0) scale(1);
}
30% {
transform: translateY(-20px) scale(1.12);
box-shadow: 0 0 50px rgba(255, 71, 87, 1), 0 0 25px rgba(255, 255, 255, 0.8);
}
55% {
transform: translateY(75px) scale(1.24);
box-shadow: 0 0 70px rgba(255, 71, 87, 1);
}
75% {
transform: translateY(55px) scale(1.16);
}
100% {
transform: translateY(0) scale(1);
}
}
.acting-enemy-banner {
position: absolute;
top: -32px;
left: 50%;
transform: translateX(-50%);
background: linear-gradient(90deg, #e06c75, #b31d28);
color: #ffffff;
font-size: 0.75rem;
font-weight: 900;
padding: 3px 12px;
border-radius: 12px;
box-shadow: 0 0 15px rgba(224, 108, 117, 0.9);
white-space: nowrap;
animation: pulse-banner 0.8s infinite alternate;
}
@keyframes pulse-banner {
0% { transform: translateX(-50%) scale(0.95); opacity: 0.9; }
100% { transform: translateX(-50%) scale(1.05); opacity: 1; }
}
/* Hit Impact Screen & Card Shake */
.hit-shake {
animation: shake-element 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
}
@keyframes shake-element {
10%, 90% { transform: translate3d(-4px, 0, 0) scale(0.98); }
20%, 80% { transform: translate3d(6px, 0, 0) scale(1.02); }
30%, 50%, 70% { transform: translate3d(-7px, 0, 0); }
40%, 60% { transform: translate3d(7px, 0, 0); }
}
/* Flash Impact Overlay */
.impact-flash {
position: absolute;
inset: 0;
border-radius: inherit;
background: radial-gradient(circle, rgba(255, 71, 87, 0.75) 0%, transparent 80%);
pointer-events: none;
z-index: 150;
animation: flash-fade 0.4s ease-out forwards;
}
@keyframes flash-fade {
0% { opacity: 1; transform: scale(1.15); }
100% { opacity: 0; transform: scale(1); }
}
/* Card Launch Fly Animation */
.card-launched {
animation: card-launch-swoosh 0.5s ease-out forwards;
pointer-events: none;
}
@keyframes card-launch-swoosh {
0% {
transform: scale(1) translateY(0);
opacity: 1;
}
50% {
transform: scale(1.2) translateY(-140px);
opacity: 0.9;
box-shadow: 0 0 35px rgba(0, 122, 204, 0.9);
}
100% {
transform: scale(0.2) translateY(-300px);
opacity: 0;
}
}
/* VS Code Title Bar */
.vsc-titlebar {
height: 38px;
background-color: var(--vscode-bg-titlebar);
border-bottom: 1px solid var(--vscode-border);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 14px;
font-size: 0.85rem;
font-weight: 800;
color: var(--vscode-text-bright);
}
.vsc-search-palette {
background: var(--vscode-bg-input);
border: 1px solid #484f58;
border-radius: 6px;
padding: 4px 28px;
color: var(--vscode-text-main);
font-size: 0.82rem;
font-weight: 800;
min-width: 360px;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
/* VS Code Shell Layout */
.vsc-shell {
display: flex;
height: calc(100vh - 38px - 26px);
overflow: hidden;
}
/* Activity Bar */
.vsc-activitybar {
width: 52px;
background-color: var(--vscode-bg-activitybar);
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
padding: 8px 0;
border-right: 1px solid var(--vscode-border);
flex-shrink: 0;
}
.activity-icon {
width: 44px;
height: 44px;
display: flex;
align-items: center;
justify-content: center;
color: var(--vscode-text-muted);
font-size: 1.4rem;
cursor: pointer;
position: relative;
transition: color 0.15s ease;
}
.activity-icon:hover {
color: #ffffff;
}
.activity-icon.active {
color: #ffffff;
}
.activity-icon.active::before {
content: '';
position: absolute;
left: 0;
top: 6px;
bottom: 6px;
width: 3px;
background-color: #007acc;
}
/* VS Code Tabs Bar */
.vsc-tabs-bar {
height: 38px;
background-color: var(--vscode-bg-sidebar);
display: flex;
align-items: center;
border-bottom: 1px solid var(--vscode-border);
overflow-x: auto;
font-size: 0.85rem;
font-weight: 800;
}
.vsc-tab {
height: 100%;
display: flex;
align-items: center;
gap: 8px;
padding: 0 16px;
background-color: var(--vscode-bg-tab-inactive);
color: var(--vscode-text-muted);
border-right: 1px solid var(--vscode-border);
cursor: pointer;
white-space: nowrap;
position: relative;
}
.vsc-tab:hover {
color: var(--vscode-text-bright);
}
.vsc-tab.active {
background-color: var(--vscode-bg-tab-active);
color: var(--vscode-text-bright);
}
.vsc-tab.active::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 2.5px;
background-color: var(--vscode-active-border);
}
/* Breadcrumbs Bar */
.vsc-breadcrumbs {
height: 28px;
background-color: var(--vscode-bg-editor);
padding: 0 18px;
display: flex;
align-items: center;
gap: 8px;
font-size: 0.8rem;
font-weight: 700;
color: var(--vscode-text-muted);
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
/* Debug Floating Action Toolbar */
.vsc-debug-toolbar {
background-color: #21252b;
border: 1.5px solid #484f58;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.7);
border-radius: 8px;
padding: 5px 12px;
display: flex;
align-items: center;
gap: 10px;
z-index: 100;
}
.vsc-debug-btn {
background: transparent;
border: none;
color: var(--vscode-text-bright);
font-size: 1.1rem;
cursor: pointer;
padding: 4px 8px;
border-radius: 6px;
transition: background 0.15s ease;
display: flex;
align-items: center;
gap: 6px;
font-weight: 800;
}
.vsc-debug-btn:hover:not(:disabled) {
background: rgba(255, 255, 255, 0.15);
color: #ffffff;
}
.vsc-debug-btn:disabled {
opacity: 0.35;
cursor: not-allowed;
}
/* VS Code Status Bar (Bottom) */
.vsc-statusbar {
height: 26px;
background-color: var(--vscode-bg-statusbar);
color: #ffffff;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 12px;
font-size: 0.78rem;
font-weight: 800;
}
.statusbar-item {
display: flex;
align-items: center;
gap: 6px;
padding: 0 8px;
height: 100%;
cursor: pointer;
}
.statusbar-item:hover {
background-color: rgba(255, 255, 255, 0.2);
}
/* Card Visual Window with Art Box */
.game-card {
width: var(--card-w);
height: var(--card-h);
background-color: #1e2227;
border: 2px solid #383e4a;
border-radius: 10px;
display: flex;
flex-direction: column;
position: relative;
cursor: pointer;
transition: all 0.22s cubic-bezier(0.2, 0.8, 0.2, 1);
box-shadow: 0 10px 28px rgba(0, 0, 0, 0.6);
overflow: hidden;
flex-shrink: 0;
}
.game-card:hover {
transform: translateY(-26px) scale(1.06);
z-index: 50;
border-color: #61afef;
box-shadow: 0 20px 40px rgba(0, 122, 204, 0.5);
}
.game-card.playable {
border-color: #007acc;
box-shadow: 0 0 16px rgba(0, 122, 204, 0.4);
}
.game-card.selected {
transform: translateY(-46px) scale(1.1) !important;
border-color: #98c379 !important;
box-shadow: 0 0 30px rgba(152, 195, 121, 0.8) !important;
z-index: 60;
}
.game-card.unaffordable {
opacity: 0.45;
filter: grayscale(80%);
cursor: not-allowed;
}
/* Card VS Code Tab Header */
.card-vsc-header {
background-color: #282c34;
height: 32px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 10px;
border-bottom: 1.5px solid #181a1f;
}
.card-tab-label {
display: flex;
align-items: center;
gap: 6px;
font-size: 0.82rem;
font-weight: 800;
color: #ffffff;
}
.card-cost-badge {
background: #007acc;
color: #ffffff;
font-weight: 900;
font-size: 0.85rem;
padding: 2px 8px;
border-radius: 6px;
box-shadow: 0 0 8px rgba(0, 122, 204, 0.6);
}
.type-attack .card-cost-badge { background: #e06c75; box-shadow: 0 0 8px rgba(224, 108, 117, 0.6); }
.type-skill .card-cost-badge { background: #61afef; box-shadow: 0 0 8px rgba(97, 175, 239, 0.6); }
.type-power .card-cost-badge { background: #c678dd; box-shadow: 0 0 8px rgba(198, 120, 221, 0.6); }
/* Card Art Box (Visual Illustration) */
.card-art-box {
height: 80px;
background: linear-gradient(135deg, #181a1f 0%, #21252b 100%);
border-bottom: 1px solid #383e4a;
display: flex;
align-items: center;
justify-content: center;
position: relative;
overflow: hidden;
}
.card-art-icon {
font-size: 2.8rem;
filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.7));
transition: transform 0.2s ease;
}
.game-card:hover .card-art-icon {
transform: scale(1.12);
}
/* Editor Gutter and Lines inside Card */
.card-editor-viewport {
background-color: #181a1f;
flex-grow: 1;
display: flex;
padding: 6px 0;
font-size: 0.74rem;
font-weight: 700;
line-height: 1.45;
}
.card-gutter {
width: 26px;
color: #5c6370;
font-weight: 800;
text-align: right;
padding-right: 6px;
user-select: none;
border-right: 1px solid rgba(255, 255, 255, 0.08);
display: flex;
flex-direction: column;
}
.card-code-content {
flex-grow: 1;
padding: 0 8px;
color: var(--syn-var);
word-break: break-word;
font-weight: 700;
}
.card-vsc-footer {
background-color: #21252b;
padding: 8px 10px;
border-top: 1.5px solid #383e4a;
font-size: 0.88rem;
font-weight: 800;
color: #ffffff;
min-height: 52px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
letter-spacing: -0.2px;
}
/* Enemy Bug VS Code Problem Card */
.enemy-card {
background-color: #21252b;
border: 2px solid #383e4a;
border-radius: 12px;
padding: 16px;
width: 255px;
display: flex;
flex-direction: column;
align-items: center;
position: relative;
cursor: pointer;
transition: all 0.25s ease;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
}
.enemy-card:hover {
border-color: #e06c75;
box-shadow: 0 14px 32px rgba(224, 108, 117, 0.3);
}
.enemy-card.targeted {
border-color: #e06c75 !important;
box-shadow: 0 0 30px rgba(224, 108, 117, 0.9) !important;
transform: scale(1.06);
}
.enemy-avatar-wrap {
width: 90px;
height: 90px;
border-radius: 50%;
background: radial-gradient(circle, rgba(224, 108, 117, 0.2) 0%, transparent 70%);
display: flex;
align-items: center;
justify-content: center;
font-size: 4.2rem;
margin: 6px 0;
filter: drop-shadow(0 6px 12px rgba(0, 0, 0, 0.7));
}
.error-squiggle {
text-decoration: underline wavy #e06c75;
font-weight: 900;
}
/* Intent Forecast Ribbon */
.intent-badge {
background: #181a1f;
border: 1.5px solid #383e4a;
border-radius: 20px;
padding: 6px 14px;
font-size: 0.88rem;
font-weight: 900;
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 10px;
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.6);
}
.intent-attack { color: #e06c75; border-color: rgba(224, 108, 117, 0.7); box-shadow: 0 0 15px rgba(224, 108, 117, 0.4); }
.intent-defend { color: #61afef; border-color: rgba(97, 175, 239, 0.7); box-shadow: 0 0 15px rgba(97, 175, 239, 0.4); }
.intent-debuff { color: #e5c07b; border-color: rgba(229, 192, 123, 0.7); box-shadow: 0 0 15px rgba(229, 192, 123, 0.4); }
.intent-buff { color: #98c379; border-color: rgba(152, 195, 121, 0.7); box-shadow: 0 0 15px rgba(152, 195, 121, 0.4); }
/* Health / SLA Progress Bar */
.hp-bar-container {
width: 100%;
height: 22px;
background: #181a1f;
border-radius: 11px;
overflow: hidden;
position: relative;
border: 1.5px solid #383e4a;
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.7);
}
.hp-bar-fill {
height: 100%;
background: linear-gradient(90deg, #e06c75 0%, #e5c07b 50%, #98c379 100%);
transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.hp-bar-text {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.82rem;
font-weight: 900;
color: #ffffff;
text-shadow: 0 1px 3px rgba(0,0,0,1);
}
.shield-pill {
display: inline-flex;
align-items: center;
gap: 5px;
color: #61afef;
font-weight: 900;
font-size: 0.95rem;
background: rgba(97, 175, 239, 0.18);
padding: 3px 10px;
border-radius: 8px;
border: 1.5px solid rgba(97, 175, 239, 0.5);
}
/* CPU Core Orb */
.cpu-reactor {
width: 86px;
height: 86px;
border-radius: 50%;
background: radial-gradient(circle at 35% 35%, #007acc, #181a1f);
border: 3px solid #61afef;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
box-shadow: 0 0 25px rgba(0, 122, 204, 0.7);
}
/* Custom Scrollbar for VS Code look */
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-track {
background: #181a1f;
}
::-webkit-scrollbar-thumb {
background: #383e4a;
}
::-webkit-scrollbar-thumb:hover {
background: #484f58;
}