:root { --bg: #2c1810; --bg2: #1a0f08; --panel: #3a2f1f; --border: #5a4a2a; --accent: #d4af37; --text: #d0d0d0; } * { box-sizing: border-box } body { margin: 0; font-family: "JetBrains Mono", ui-monospace, Menlo, Consolas; background: #000; color: var(--text) } #app { width: 100%; margin: 0; padding: 0; min-height: 100vh; } h1, h2, h3 { margin: 8px 0 } .panel { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: 12px; margin: 8px 0 } .row { display: flex; gap: 12px; flex-wrap: wrap } .col { flex: 1 1 300px } .btn { background: var(--accent); color: #00123a; border: none; border-radius: 8px; padding: 8px 12px; cursor: pointer; font-weight: 700 } .btn.secondary { background: #2a3247; color: #d6d9e4 } .btn:disabled { opacity: .5; cursor: not-allowed } .grid { display: grid; gap: 10px } .map { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px } .node { padding: 8px; border-radius: 10px; border: 1px solid var(--border); background: #21283b; text-align: center; cursor: pointer } .node.locked { opacity: .5; cursor: not-allowed } .tag { font-size: 12px; opacity: .8 } .cards { display: flex; gap: 8px; flex-wrap: wrap } .card { width: 180px; background: #23293c; border: 1px solid #334064; border-radius: 10px; padding: 10px; cursor: pointer } .card:hover { transform: translateY(-2px) } .kv { display: flex; gap: 8px; align-items: center } .small { font-size: 12px; opacity: .85 } .badge { background: #2a3247; border: 1px solid #334064; border-radius: 999px; padding: 2px 8px; font-size: 12px } .badge.danger { background: #dc3545; color: white; } .badge.debuff { background: #6f42c1; color: white; } .badge.gold { background: #ffc107; color: #000; } .intent-attack { color: #dc3545; font-weight: bold; } .intent-block { color: #6ea8fe; font-weight: bold; } .intent-debuff { color: #6f42c1; font-weight: bold; } .relics { display: flex; gap: 8px; flex-wrap: wrap; } .relic { background: #2a3247; border: 1px solid #ffc107; border-radius: 8px; padding: 4px 8px; font-size: 12px; cursor: help; } .relic:hover { background: #334064; } .battle-scene { min-height: 100vh; width: 100vw; background: linear-gradient(135deg, #2c1810 0%, #1a0f08 100%); position: relative; overflow: hidden; display: grid; grid-template-rows: auto 1fr; } .fight-log-panel { position: fixed; bottom: 20px; left: 20px; width: 500px; height: 300px; background: linear-gradient(135deg, rgba(42, 42, 58, 0.4) 0%, rgba(26, 26, 42, 0.4) 100%); border: 2px solid #3a3a4a; border-radius: 8px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5); z-index: 1000; display: flex; flex-direction: column; } .fight-log-header { background: linear-gradient(135deg, #3a3a4a 0%, #2a2a3a 100%); padding: 8px 12px; border-bottom: 1px solid #4a4a5a; border-radius: 6px 6px 0 0; } .fight-log-title { color: #e0e0e0; font-size: 14px; font-weight: 600; font-family: 'JetBrains Mono', monospace; } .fight-log-content { flex: 1; padding: 8px; overflow-y: auto; overflow-x: hidden; scrollbar-width: thin; scrollbar-color: #4a4a5a #2a2a3a; } .fight-log-content::-webkit-scrollbar { width: 6px; } .fight-log-content::-webkit-scrollbar-track { background: #2a2a3a; border-radius: 3px; } .fight-log-content::-webkit-scrollbar-thumb { background: #4a4a5a; border-radius: 3px; } .fight-log-content::-webkit-scrollbar-thumb:hover { background: #5a5a6a; } .log-entry { color: #c0c0c0; font-size: 12px; font-family: 'JetBrains Mono', monospace; line-height: 1.4; margin-bottom: 4px; padding: 2px 4px; border-radius: 3px; word-wrap: break-word; } .log-entry:last-child { margin-bottom: 0; } .log-entry:hover { background: rgba(255, 255, 255, 0.05); } .top-hud { position: relative; z-index: 50; } .player-health-hud { display: flex; justify-content: space-between; align-items: center; background: linear-gradient(135deg, #3a2f1f 0%, #2a1f0f 100%); border: 2px solid #5a4a2a; border-radius: 6px; padding: 12px 20px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); } .health-section { display: flex; align-items: center; gap: 15px; flex: 1; } .health-icon { font-size: 24px; filter: drop-shadow(0 0 8px rgba(220, 53, 69, 0.6)); } .health-bar-large { position: relative; flex: 1; max-width: 300px; height: 30px; background: linear-gradient(135deg, #2a1a0a 0%, #1a0f08 100%); overflow: hidden; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5); } .health-bar { position: relative; width: 270px; height: 30px; background: linear-gradient(135deg, #2a1a0a 0%, #1a0f08 100%); border: 2px solid #4a3a2a; overflow: hidden; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5); } .health-fill-large { height: 100%; background: linear-gradient(90deg, #dc3545 0%, #c82333 100%); transition: width 0.3s ease; } .health-fill { height: 100%; background: linear-gradient(90deg, #dc3545 0%, #c82333 100%); transition: width 0.3s ease; position: relative; box-shadow: 0 0 8px rgba(220, 53, 69, 0.3); } .health-text-large { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-weight: bold; font-size: 12px; color: white; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); z-index: 2; } .health-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-weight: bold; font-size: 13px; color: white; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); z-index: 2; } .hud-stats { display: flex; align-items: center; gap: 15px; } .energy-section, .gold-section, .block-section, .relics-section { display: flex; align-items: center; gap: 4px; } .energy-label, .gold-icon, .block-icon, .relics-label { font-size: 14px; } .gold-icon-img { width: 14px; height: 14px; object-fit: contain; } .relics-label-img { width: 14px; height: 14px; object-fit: contain; } .health-icon-img { width: 24px; height: 24px; object-fit: contain; } .counter-icon-img { width: 16px; height: 16px; object-fit: contain; } .deck-header-icon { width: 20px; height: 20px; object-fit: contain; vertical-align: middle; margin-right: 8px; } .node-icon-img { width: 24px; height: 24px; object-fit: contain; filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.8)); display: block; margin: 0 auto; } .legend-icon-img { width: 16px; height: 16px; object-fit: contain; vertical-align: middle; margin-right: 4px; } .tooltip-icon-img { width: 16px; height: 16px; object-fit: contain; vertical-align: middle; margin-right: 4px; } .block-icon-img { width: 14px; height: 14px; object-fit: contain; } .shield-effect-img { width: 16px; height: 16px; object-fit: contain; } .debuff-effect-img { width: 16px; height: 16px; object-fit: contain; } .energy-orbs-top { display: flex; gap: 2px; } .energy-orb-top { width: 12px; height: 12px; border-radius: 50%; border: 1px solid #d4af37; transition: all 0.2s ease; } .energy-orb-top.active { background: linear-gradient(135deg, #d4af37 0%, #b8941f 100%); box-shadow: 0 0 6px rgba(212, 175, 55, 0.6); } .energy-orb-top.inactive { background: transparent; opacity: 0.4; } .gold-amount, .block-amount { font-weight: bold; font-size: 14px; color: #d4af37; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .block-amount { color: #8a9ba8; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .relics-top { display: flex; gap: 4px; } .relic-top { font-size: 14px; padding: 2px 4px; background: rgba(255, 193, 7, 0.2); border-radius: 4px; cursor: help; } .bg-particles { position: absolute; width: 100%; height: 100%; background: radial-gradient(2px 2px at 20px 30px, rgba(110, 168, 254, 0.3), transparent), radial-gradient(2px 2px at 40px 70px, rgba(255, 193, 7, 0.2), transparent), radial-gradient(1px 1px at 90px 40px, rgba(220, 53, 69, 0.3), transparent), radial-gradient(1px 1px at 130px 80px, rgba(110, 168, 254, 0.2), transparent); animation: sparkle 3s ease-in-out infinite alternate; } .bg-glow { position: absolute; top: 50%; left: 50%; width: 800px; height: 400px; background: radial-gradient(ellipse, rgba(110, 168, 254, 0.1) 0%, transparent 70%); transform: translate(-50%, -50%); animation: pulse 4s ease-in-out infinite; } @keyframes sparkle { 0% { opacity: 0.3; } 100% { opacity: 0.8; } } @keyframes pulse { 0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.1; } 50% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.2; } } .battle-arena { position: relative; width: 100%; height: 100vh; } .enemy-battle-zone { position: absolute; top: 490px; right: 80px; display: flex; justify-content: flex-end; align-items: flex-start; z-index: 2; } .player-battle-zone { position: absolute; top: 490px; left: 80px; display: flex; justify-content: flex-start; align-items: flex-start; z-index: 2; } .enemy-container { display: flex; gap: 40px; align-items: center; max-width: 1000px; } .player-container { display: flex; gap: 40px; align-items: center; max-width: 1000px; } .enemy-character { position: relative; } .player-character { position: relative; } .enemy-sprite { position: relative; display: flex; flex-direction: column; align-items: center; } .enemy-avatar { width: 120px; height: 120px; border-radius: 50%; overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 20px rgba(220, 53, 69, 0.5); animation: enemyIdle 2s ease-in-out infinite alternate; position: relative; z-index: 2; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #4a4a4a 0%, #2a2a2a 100%); } .enemy-avatar-img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; } .enemy-fallback-emoji { font-size: 120px; text-shadow: 0 0 20px rgba(220, 53, 69, 0.5); } .enemy-shadow { width: 80px; height: 20px; background: radial-gradient(ellipse, rgba(0, 0, 0, 0.3) 0%, transparent 70%); margin-top: -10px; animation: shadowPulse 2s ease-in-out infinite alternate; } .shield-effect { position: absolute; top: -20px; right: -20px; font-size: 32px; animation: shieldGlow 1.5s ease-in-out infinite; filter: drop-shadow(0 0 10px rgba(110, 168, 254, 0.8)); } .debuff-effect { position: absolute; top: -20px; left: -20px; font-size: 24px; animation: debuffPulse 1s ease-in-out infinite; filter: drop-shadow(0 0 8px rgba(111, 66, 193, 0.8)); } @keyframes enemyIdle { 0% { transform: translateY(0px) scale(1); } 100% { transform: translateY(-10px) scale(1.02); } } @keyframes shadowPulse { 0% { transform: scaleX(1); opacity: 0.3; } 100% { transform: scaleX(1.1); opacity: 0.2; } } @keyframes shieldGlow { 0%, 100% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.2); opacity: 1; } } @keyframes debuffPulse { 0%, 100% { transform: scale(1); opacity: 0.7; } 50% { transform: scale(1.1); opacity: 1; } } .player-sprite { position: relative; display: flex; flex-direction: column; align-items: center; } .player-avatar { width: 120px; height: 120px; border-radius: 50%; overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 20px rgba(40, 167, 69, 0.5); animation: playerIdle 2s ease-in-out infinite alternate; position: relative; z-index: 2; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #4a4a4a 0%, #2a2a2a 100%); } .player-avatar-img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; } .player-shadow { width: 80px; height: 20px; background: radial-gradient(ellipse, rgba(0, 0, 0, 0.3) 0%, transparent 70%); margin-top: -10px; animation: shadowPulse 2s ease-in-out infinite alternate; } @keyframes playerIdle { 0% { transform: translateY(0px) scale(1); } 100% { transform: translateY(-10px) scale(1.02); } } .damage-number { position: fixed; font-size: 48px; font-weight: bold; color: #ffffff; text-shadow: 3px 3px 6px rgba(0, 0, 0, 0.9); pointer-events: none; z-index: 1000; transform: translate(-50%, -50%); opacity: 0; scale: 0.5; } .damage-number-animate { animation: damageNumberPop 1s ease-out forwards; } @keyframes damageNumberPop { 0% { opacity: 0; scale: 0.5; transform: translate(-50%, -50%) translateY(0px); } 15% { opacity: 1; scale: 1.4; transform: translate(-50%, -50%) translateY(-10px); } 30% { opacity: 1; scale: 1.2; transform: translate(-50%, -50%) translateY(-20px); } 100% { opacity: 0; scale: 0.8; transform: translate(-50%, -50%) translateY(-60px); } } .player-ui-panel { background: linear-gradient(135deg, #2a4732 0%, #1b3020 100%); border: 2px solid #28a745; border-radius: 16px; padding: 20px; min-width: 320px; box-shadow: 0 8px 32px rgba(40, 167, 69, 0.4); position: relative; } .player-nameplate { text-align: center; margin-bottom: 16px; } .player-title { color: #28a745; font-size: 24px; font-weight: bold; margin: 0; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); } .player-level { background: linear-gradient(135deg, #28a745, #5cb85c); color: white; padding: 4px 12px; border-radius: 12px; font-size: 12px; font-weight: bold; display: inline-block; margin-top: 8px; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); } .player-health-section { display: flex; flex-direction: column; gap: 12px; } .player-health .health-fill { background: linear-gradient(90deg, #28a745 0%, #5cb85c 100%); } .player-energy-section { margin-top: 15px; } .energy-display { display: flex; align-items: center; gap: 10px; } .energy-label { font-size: 16px; color: #d4af37; text-shadow: 0 0 8px rgba(212, 175, 55, 0.6); } .energy-orbs { display: flex; gap: 5px; } .energy-orb { width: 20px; height: 20px; border-radius: 50%; border: 2px solid #d4af37; position: relative; transition: all 0.3s ease; } .energy-orb.active { background: linear-gradient(135deg, #d4af37 0%, #b8941f 100%); box-shadow: 0 0 12px rgba(212, 175, 55, 0.6); } .energy-orb.inactive { background: transparent; opacity: 0.4; } .event-screen { position: relative; width: 100%; min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 20px; box-sizing: border-box; } .event-background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, #1a0f08 0%, #2c1810 50%, #3a2f1f 100%); z-index: -1; } .event-background .bg-particles { position: absolute; width: 100%; height: 100%; background: radial-gradient(circle at 20% 30%, rgba(212, 175, 55, 0.1) 0%, transparent 50%), radial-gradient(circle at 80% 70%, rgba(212, 175, 55, 0.08) 0%, transparent 50%), radial-gradient(circle at 40% 80%, rgba(212, 175, 55, 0.06) 0%, transparent 50%); } .event-background .bg-glow { position: absolute; width: 100%; height: 100%; background: radial-gradient(ellipse at center, rgba(212, 175, 55, 0.05) 0%, transparent 70%); } .event-container { max-width: 900px; width: 100%; z-index: 1; } .event-header { text-align: center; margin-bottom: 40px; } .event-title-frame { position: relative; display: inline-block; padding: 20px 40px; background: linear-gradient(135deg, #3a2f1f 0%, #2c1810 100%); border: 3px solid #d4af37; border-radius: 15px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6), inset 0 2px 8px rgba(212, 175, 55, 0.2), 0 0 20px rgba(212, 175, 55, 0.3); } .event-title { font-family: 'Kreon', serif; font-size: 2.5rem; font-weight: 700; color: #d4af37; text-shadow: 0 0 10px rgba(212, 175, 55, 0.6), 2px 2px 4px rgba(0, 0, 0, 0.8); margin: 0; letter-spacing: 1px; } .title-ornament { position: absolute; bottom: -15px; left: 50%; transform: translateX(-50%); width: 60px; height: 6px; background: linear-gradient(90deg, transparent 0%, #d4af37 50%, transparent 100%); border-radius: 3px; box-shadow: 0 0 8px rgba(212, 175, 55, 0.6); } .event-story-panel { display: flex; align-items: center; gap: 30px; background: linear-gradient(135deg, #3a2f1f 0%, #2c1810 100%); border: 2px solid #5a4a2a; border-radius: 15px; padding: 30px; margin-bottom: 40px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6), inset 0 2px 8px rgba(212, 175, 55, 0.1); } .story-artwork { position: relative; flex-shrink: 0; } .event-artwork-img { width: 120px; height: 120px; object-fit: contain; border: 3px solid #d4af37; border-radius: 12px; background: linear-gradient(135deg, #2c1810 0%, #1a0f08 100%); padding: 15px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.6), 0 0 20px rgba(212, 175, 55, 0.2); } .artwork-glow { position: absolute; top: -5px; left: -5px; right: -5px; bottom: -5px; background: linear-gradient(45deg, rgba(212, 175, 55, 0.3), rgba(212, 175, 55, 0.1)); border-radius: 15px; z-index: -1; filter: blur(8px); } .story-text { flex: 1; } .event-description { font-size: 1.3rem; line-height: 1.6; color: #d0d0d0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); margin: 0; font-family: 'Kreon', serif; } .event-choices { display: flex; flex-direction: column; gap: 20px; } .event-choice-card { position: relative; cursor: pointer; transition: all 0.3s ease; } .event-choice-card:hover { transform: translateY(-3px); } .choice-frame { display: flex; align-items: center; gap: 20px; background: linear-gradient(135deg, #3a2f1f 0%, #2c1810 100%); border: 2px solid #5a4a2a; border-radius: 12px; padding: 20px; position: relative; overflow: hidden; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4), inset 0 1px 4px rgba(212, 175, 55, 0.1); } .choice-icon { flex-shrink: 0; position: relative; } .choice-icon-img { width: 50px; height: 50px; object-fit: contain; border: 2px solid #d4af37; border-radius: 8px; background: linear-gradient(135deg, #2c1810 0%, #1a0f08 100%); padding: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.6); } .choice-content { flex: 1; } .choice-text { font-size: 1.1rem; font-weight: 600; color: #d0d0d0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); margin-bottom: 8px; line-height: 1.4; } .choice-risk-indicator { font-size: 0.9rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; padding: 4px 8px; border-radius: 6px; display: inline-block; } .choice-risk-indicator.high { background: rgba(220, 53, 69, 0.2); color: #ff6b7a; border: 1px solid rgba(220, 53, 69, 0.4); } .choice-risk-indicator.medium { background: rgba(255, 193, 7, 0.2); color: #ffc107; border: 1px solid rgba(255, 193, 7, 0.4); } .choice-risk-indicator.low { background: rgba(40, 167, 69, 0.2); color: #5cb85c; border: 1px solid rgba(40, 167, 69, 0.4); } .choice-risk-indicator.none { background: rgba(108, 117, 125, 0.2); color: #adb5bd; border: 1px solid rgba(108, 117, 125, 0.4); } .choice-glow { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, rgba(212, 175, 55, 0.1), transparent); opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border-radius: 12px; } .event-choice-card:hover .choice-glow { opacity: 1; } .event-choice-card:hover .choice-frame { border-color: #d4af37; box-shadow: 0 6px 24px rgba(0, 0, 0, 0.6), inset 0 1px 4px rgba(212, 175, 55, 0.2), 0 0 20px rgba(212, 175, 55, 0.2); } .event-choice-card:hover .choice-icon-img { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.6), 0 0 12px rgba(212, 175, 55, 0.3); } @media (max-width: 768px) { .event-story-panel { flex-direction: column; text-align: center; gap: 20px; } .event-title { font-size: 2rem; } .event-description { font-size: 1.1rem; } .choice-frame { flex-direction: column; text-align: center; gap: 15px; } } .enemy-ui-panel { background: linear-gradient(135deg, #2a3247 0%, #1b2030 100%); border: 2px solid #dc3545; border-radius: 16px; padding: 20px; min-width: 320px; box-shadow: 0 8px 32px rgba(220, 53, 69, 0.4); position: relative; overflow: hidden; } .enemy-ui-panel::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, #dc3545, transparent); animation: scanline 2s linear infinite; } @keyframes scanline { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } .enemy-nameplate { text-align: center; margin-bottom: 15px; } .enemy-title { color: #dc3545; font-size: 24px; font-weight: bold; margin: 0 0 5px 0; text-shadow: 0 0 10px rgba(220, 53, 69, 0.5); } .enemy-level { color: #ffc107; font-size: 12px; font-weight: bold; background: rgba(255, 193, 7, 0.2); padding: 2px 8px; border-radius: 12px; display: inline-block; } .enemy-name { font-size: 24px; font-weight: bold; color: #dc3545; margin-bottom: 10px; } .enemy-art { font-size: 48px; margin: 15px 0; } .hp-bar { position: relative; background: #1a1d29; border: 2px solid #334064; border-radius: 20px; height: 24px; margin: 10px 0; overflow: hidden; } .hp-fill { background: linear-gradient(90deg, #dc3545, #ff6b7a); height: 100%; transition: width 0.3s ease; } .player-hp .hp-fill { background: linear-gradient(90deg, #28a745, #5cb85c); } .hp-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-weight: bold; color: white; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); font-size: 12px; } .intent-display { margin-top: 15px; padding: 10px; border-radius: 8px; border: 2px solid; } .intent-danger { border-color: #dc3545; background: rgba(220, 53, 69, 0.1); margin-top: 10px; } .intent-info { border-color: #17a2b8; background: rgba(23, 162, 184, 0.1); } .intent-warning { border-color: #ffc107; } .intent-success { border-color: #28a745; background: rgba(40, 167, 69, 0.1); } .intent-icon { font-size: 24px; margin-bottom: 5px; } .intent-text { font-size: 14px; font-weight: bold; } .player-battle-hud { display: grid; grid-template-columns: auto 1fr; gap: 20px; align-items: center; background: rgba(27, 32, 48, 0.8); border-radius: 12px; padding: 15px; border: 1px solid #2a3247; } .player-character-zone { display: flex; align-items: center; } .player-avatar { position: relative; display: flex; flex-direction: column; align-items: center; } .player-sprite { font-size: 48px; margin-bottom: 5px; } .player-shield, .player-debuff { position: absolute; font-size: 16px; top: -5px; right: -5px; } .player-hud-panel { display: flex; flex-direction: column; gap: 10px; } .hud-top-row { display: flex; gap: 20px; align-items: center; } .player-health-display, .player-energy-display { display: flex; align-items: center; gap: 10px; } .health-icon, .energy-label { font-size: 16px; } .energy-orbs-container { display: flex; gap: 4px; } .energy-orb.inactive { background: #1a1d29; } .gold-display { display: flex; align-items: center; gap: 5px; font-weight: bold; } .relics-hud { display: flex; align-items: center; gap: 10px; } .relics-row { display: flex; gap: 8px; } .relic-hud-item { background: #2a3247; border: 1px solid #ffc107; border-radius: 6px; padding: 4px; cursor: help; } .player-stats { background: #1b2030; border: 1px solid #2a3247; border-radius: 12px; padding: 15px; } .stat-group { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; } .stat-label { font-weight: bold; font-size: 14px; margin-bottom: 5px; display: block; } .energy-orbs { display: flex; gap: 5px; } .energy-orb.filled { background: radial-gradient(circle, #6ea8fe, #4c8fdf); box-shadow: 0 0 8px rgba(110, 168, 254, 0.6); } .energy-orb.empty { background: #1a1d29; } .battle-action-zone { position: fixed; bottom: 0; left: 0; right: 0; z-index: 100; pointer-events: none; } .hand-area { padding: 0 20px 0 20px; pointer-events: auto; transform: translateY(60px); } .hand-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .hand-title { display: flex; align-items: center; gap: 10px; } .hand-title h3 { margin: 0; font-size: 18px; } .hand-count { background: #6ea8fe; color: #000; padding: 2px 8px; border-radius: 12px; font-size: 12px; font-weight: bold; } .deck-counters { display: flex; gap: 15px; } .deck-counter { display: flex; align-items: center; gap: 5px; font-size: 12px; } .counter-icon { font-size: 14px; } .counter-value { font-weight: bold; color: #6ea8fe; } .cards-battlefield { display: flex; justify-content: center; align-items: flex-end; padding: 0; min-height: 200px; position: relative; overflow: visible; pointer-events: auto; } .no-cards-message { display: flex; align-items: center; justify-content: center; width: 100%; height: 200px; color: #6ea8fe; font-style: italic; text-align: center; } .battle-control-panel { display: flex; justify-content: space-between; align-items: center; background: rgba(27, 32, 48, 0.8); border: 1px solid #2a3247; border-radius: 12px; padding: 15px; } .end-turn-button { background: linear-gradient(135deg, #6ea8fe, #4c8fdf); color: #000; border: none; border-radius: 8px; padding: 12px 24px; font-weight: bold; cursor: pointer; transition: all 0.2s ease; position: relative; overflow: hidden; } .end-turn-button:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(110, 168, 254, 0.4); } .button-content { display: flex; flex-direction: column; align-items: center; gap: 2px; } .button-text { font-size: 14px; } .button-hotkey { font-size: 10px; opacity: 0.8; } .battle-tips, .battle-tips-bottom { display: flex; flex-direction: column; gap: 5px; } .battle-tips-bottom { text-align: center; opacity: 0.8; margin-top: 10px; } .tip-item { font-size: 11px; color: #6ea8fe; opacity: 0.8; } .cards-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .game-tips { display: flex; gap: 15px; } .tip { font-size: 12px; color: #6ea8fe; background: rgba(110, 168, 254, 0.1); padding: 4px 8px; border-radius: 4px; } .hand { display: flex; gap: 12px; margin-bottom: 20px; overflow-x: auto; padding: 10px 0; } .card { background: #2a3247; border: 2px solid #334064; border-radius: 12px; padding: 12px; min-width: 160px; max-width: 180px; cursor: pointer; transition: all 0.2s ease; position: relative; } .card:hover { transform: translateY(-8px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4); } .card.attack { border-color: #dc3545; background: linear-gradient(135deg, #2a3247, #3d2a2a); } .card.skill { border-color: #28a745; background: linear-gradient(135deg, #2a3247, #2a3d2a); } .card.power { border-color: #6f42c1; background: linear-gradient(135deg, #2a3247, #3d2a3d); } .card.unplayable { opacity: 0.5; cursor: not-allowed; } .card.unplayable:hover { transform: none; } .battle-card { position: relative; width: 200px; height: 300px; cursor: pointer; transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); transform-style: preserve-3d; margin-left: -60px; transform-origin: center bottom; z-index: 150; } .battle-card:first-child { margin-left: 0; } .battle-card:nth-child(1) { transform: rotate(-8deg); z-index: 1; } .battle-card:nth-child(2) { transform: rotate(-4deg); z-index: 2; } .battle-card:nth-child(3) { transform: rotate(-2deg); z-index: 3; } .battle-card:nth-child(4) { transform: rotate(0deg); z-index: 4; } .battle-card:nth-child(5) { transform: rotate(2deg); z-index: 5; } .battle-card:nth-child(6) { transform: rotate(4deg); z-index: 6; } .battle-card:nth-child(7) { transform: rotate(8deg); z-index: 7; } .battle-card:nth-child(8) { transform: rotate(12deg); z-index: 8; } .battle-card.playable:hover { transform: translateY(0px) scale(1.05) rotate(0deg) !important; z-index: 900; margin-left: -60px; margin-right: 40px; } .battle-card.playable:hover~.battle-card { transform: translateX(20px); } .hand-controls { position: fixed; bottom: 20px; right: 20px; z-index: 200; transform: translateY(-60px); } .end-turn-btn { background: linear-gradient(135deg, #5a8a3a, #4a7a2a); border: 2px solid #6a9a4a; border-radius: 6px; padding: 12px 20px; color: white; font-weight: bold; font-size: 16px; cursor: pointer; transition: all 0.15s ease; box-shadow: 0 4px 16px rgba(90, 138, 58, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.2); display: flex; align-items: center; gap: 8px; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .end-turn-btn:hover { background: linear-gradient(135deg, #6a9a4a, #5a8a3a); border-color: #7aaa5a; transform: translateY(-2px); box-shadow: 0 6px 20px rgba(90, 138, 58, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.3); } .end-turn-btn:active { transform: translateY(0); box-shadow: 0 2px 8px rgba(40, 167, 69, 0.4); } .end-turn-text { font-size: 16px; } .end-turn-hotkey { background: rgba(255, 255, 255, 0.2); border-radius: 4px; padding: 2px 6px; font-size: 12px; font-weight: bold; } .battle-card.unplayable { cursor: not-allowed; filter: grayscale(0.8) brightness(0.6); } .battle-card.unplayable .card-frame { border-color: #555; } .battle-card.unplayable .card-title { color: #aaa; } .battle-card.unplayable .card-cost-orb { background: #666 !important; border-color: #555 !important; color: #aaa !important; } .battle-card.unplayable:hover { transform: translateY(-10px) scale(1.02); } .card-glow { position: absolute; top: -3px; left: -3px; right: -3px; bottom: -3px; border-radius: 16px; opacity: 0; transition: all 0.4s ease; filter: blur(4px); } .battle-card.attack .card-glow { background: linear-gradient(45deg, #dc3545, #ff6b7a); box-shadow: 0 0 15px rgba(220, 53, 69, 0.3); } .battle-card.skill .card-glow { background: linear-gradient(45deg, #28a745, #5cb85c); box-shadow: 0 0 15px rgba(40, 167, 69, 0.3); } .battle-card.power .card-glow { background: linear-gradient(45deg, #6f42c1, #9b59b6); box-shadow: 0 0 15px rgba(111, 66, 193, 0.3); } .battle-card.card-selected { transform: translateY(-80px) scale(1.15) rotate(0deg) !important; z-index: 300; margin-left: -60px; margin-right: 40px; } .battle-card.card-selected~.battle-card { transform: translateX(20px); } .battle-card.card-selected .card-glow { opacity: 0.8; filter: blur(6px); transform: scale(1.05); } .battle-card.card-selected .card-frame { box-shadow: 0 20px 40px rgba(0, 0, 0, 0.6); } .battle-card.playable:hover .card-glow { opacity: 0.8; filter: blur(6px); transform: scale(1.05); } .card-frame { position: relative; width: 100%; height: 100%; background: linear-gradient(135deg, #4a3428 0%, #2a1f18 100%), radial-gradient(ellipse at center, rgba(139, 115, 85, 0.3) 0%, transparent 70%); border-radius: 16px; border: 3px solid #8b7355; padding: 8px; display: flex; flex-direction: column; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.15), inset 0 -2px 0 rgba(0, 0, 0, 0.4), inset 2px 0 0 rgba(255, 255, 255, 0.1), inset -2px 0 0 rgba(0, 0, 0, 0.3); transition: all 0.4s ease; overflow: hidden; } .battle-card.playable:hover .card-frame { box-shadow: 0 20px 40px rgba(0, 0, 0, 0.6); } .battle-card.attack .card-frame { border-color: #c82333; background: linear-gradient(135deg, #4a2f1f 0%, #3a1f0f 100%); } .battle-card.skill .card-frame { border-color: #5a8a3a; background: linear-gradient(135deg, #3f4a2f 0%, #2f3a1f 100%); } .battle-card.power .card-frame { border-color: #8a5aa3; background: linear-gradient(135deg, #4a3f4a 0%, #3a2f3a 100%); } .card-header-row { position: relative; margin-bottom: 12px; margin-top: 8px; } .battle-card.deck-display .card-header-row { position: relative; margin-bottom: 4px; margin-top: 8px; } .card-title { font-weight: bold; font-size: 16px; color: #ffffff; text-shadow: 2px 2px 4px rgba(0, 0, 0, 1); text-align: center; background: linear-gradient(135deg, #8b7355 0%, #6b5a45 50%, #4a3428 100%); padding: 6px 12px; margin: 0 8px; border-radius: 12px; border: 2px solid #a68b6b; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.2), inset 0 -1px 0 rgba(0, 0, 0, 0.3); position: relative; z-index: 5; } .card-cost-orb { width: 36px; height: 36px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, #ff6b35, #d4af37, #8b4513), linear-gradient(135deg, #ff6b35 0%, #d4af37 50%, #8b4513 100%); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 16px; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); box-shadow: 0 4px 12px rgba(212, 175, 55, 0.6), inset 0 2px 0 rgba(255, 255, 255, 0.3), inset 0 -2px 0 rgba(0, 0, 0, 0.3); border: 2px solid #8b4513; position: absolute; top: -8px; left: -4px; z-index: 10; } .card-cost-orb.insufficient { background: linear-gradient(135deg, #dc3545, #c82333); color: white; box-shadow: 0 2px 8px rgba(220, 53, 69, 0.4); } .card-artwork { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; margin: 8px 4px; background: linear-gradient(135deg, #2a1f18 0%, #1a0f08 100%), radial-gradient(ellipse at center, rgba(139, 115, 85, 0.2) 0%, transparent 70%); border: 2px solid #4a3428; border-radius: 8px; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5), inset 0 -1px 0 rgba(255, 255, 255, 0.1); overflow: hidden; } .card-art-icon { margin-bottom: 8px; display: flex; align-items: center; justify-content: center; width: 150px; height: 150px; } .card-art-image { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 3px 6px rgba(0, 0, 0, 0.4)) drop-shadow(0 0 8px rgba(255, 215, 0, 0.3)); border-radius: 6px; transition: all 0.3s ease; } .card-art-image:hover { filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.5)) drop-shadow(0 0 12px rgba(255, 215, 0, 0.5)); transform: scale(1.05); } .card-art-fallback { font-size: 64px; filter: drop-shadow(0 3px 6px rgba(0, 0, 0, 0.4)); } .battle-card.deck-display .card-art-icon { width: 64px; height: 64px; font-size: 64px; margin-bottom: 8px; } .battle-card.deck-display .card-art-image { width: 120px; height: 120px; } .battle-card.deck-display .card-art-fallback { font-size: 64px; } .battle-card.deck-display .card-type-badge { font-size: 10px; padding: 4px 10px; border-radius: 10px; } .card-type-badge { position: absolute; bottom: 4px; left: 50%; transform: translateX(-50%); font-size: 11px; font-weight: bold; padding: 4px 12px; border-radius: 12px; text-transform: uppercase; border: 2px solid; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.2); } .card-type-badge.attack { background: linear-gradient(135deg, #dc3545, #b71c1c); border-color: #8b0000; color: white; } .card-type-badge.skill { background: linear-gradient(135deg, #28a745, #1b5e20); border-color: #0d4f0d; color: white; } .card-type-badge.power { background: linear-gradient(135deg, #6f42c1, #4a148c); border-color: #2e0854; color: white; } .card-description-box { background: linear-gradient(135deg, rgba(26, 15, 8, 0.9) 0%, rgba(42, 31, 24, 0.7) 100%); border: 1px solid #4a3428; border-radius: 8px; padding: 10px; margin: 4px; margin-bottom: 8px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.1); } .card-text { font-size: 12px; line-height: 1.4; color: #e8e8e8; text-align: center; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); font-weight: 500; } .card-disabled-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.8); border-radius: 12px; display: flex; align-items: center; justify-content: center; pointer-events: none; /* Allow clicks to pass through to elements behind */ color: #dc3545; font-size: 12px; font-weight: bold; text-align: center; } .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; } .card-name { font-weight: bold; font-size: 14px; } .card-cost { background: #6ea8fe; color: #000; border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 12px; } .card-cost.too-expensive { background: #dc3545; color: white; } .card-art { font-size: 32px; text-align: center; margin: 5px 0; } .card-description { font-size: 12px; line-height: 1.3; margin-bottom: 8px; min-height: 32px; } .card-type { font-size: 10px; color: #6ea8fe; text-align: center; font-weight: bold; } .card-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.8); display: flex; align-items: center; justify-content: center; border-radius: 12px; font-size: 12px; font-weight: bold; color: #dc3545; } .battle-controls { display: flex; justify-content: space-between; align-items: center; } .btn-end-turn { background: linear-gradient(135deg, #6ea8fe, #4c8fdf); color: #000; border: none; border-radius: 8px; padding: 12px 24px; font-weight: bold; cursor: pointer; transition: all 0.2s ease; } .btn-end-turn:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(110, 168, 254, 0.4); } .btn-key { font-size: 12px; opacity: 0.8; } .deck-info { display: flex; gap: 15px; font-size: 12px; color: #6ea8fe; } .battle-log { background: #111520; border: 1px solid #2a3247; border-radius: 8px; padding: 10px; margin-top: 10px; } .battle-log h4 { margin: 0 0 8px 0; font-size: 14px; } .log-content { font-size: 12px; line-height: 1.4; max-height: 100px; overflow-y: auto; } .no-cards { text-align: center; color: #6ea8fe; font-style: italic; padding: 40px; } .block-display, .debuff-display { display: inline-block; background: rgba(110, 168, 254, 0.2); padding: 4px 8px; border-radius: 4px; font-size: 12px; margin: 2px; } .debuff-display { background: rgba(111, 66, 193, 0.2); } .relics-display { margin-top: 10px; } .relic-item { display: inline-block; font-size: 20px; margin: 0 5px; cursor: help; } .list { display: flex; flex-direction: column; gap: 6px } .map-screen { width: 100%; margin: 0; min-height: 100vh; background: url('assets/backgrounds/terrace.png'); background-size: cover; background-position: center; background-attachment: fixed; } .main-content { display: flex; gap: 30px; align-items: flex-start; } .map-header-section { display: flex; justify-content: space-between; align-items: center; } .map-header-section h1 { margin: 0; flex: 1; } .game-logo { flex: 1; display: flex; justify-content: center; align-items: center; } .game-logo svg { max-width: 100%; height: auto; } .btn-reset-top { background: linear-gradient(135deg, #dc3545 0%, #b02a37 100%); color: white; border: 2px solid #c82333; border-radius: 8px; padding: 12px 20px; font-size: 14px; font-weight: bold; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); } .btn-reset-top:hover { background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%); border-color: #d32f2f; transform: translateY(-2px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.4); } .btn-reset-top:active { transform: translateY(0); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); } .btn-reset-status { background: linear-gradient(135deg, #dc3545 0%, #b02a37 100%); color: white; border: 2px solid #c82333; border-radius: 6px; padding: 8px 16px; font-size: 14px; font-weight: bold; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); margin-left: auto; } .btn-reset-status:hover { background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%); border-color: #d32f2f; transform: translateY(-1px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4); } .btn-reset-status:active { transform: translateY(0); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); } .player-status { width: 1450px; margin: 0 auto 10px auto; display: flex; gap: 30px; align-items: center; background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.03) 0%, transparent 60%), linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 6px; padding: 10px 20px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); } .status-item { display: flex; align-items: center; gap: 10px; color: #d0d0d0; } .status-icon { font-size: 20px; } .status-icon-img { width: 20px; height: 20px; object-fit: contain; } .status-value { font-weight: bold; font-size: 18px; color: #f0e68c; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .relics-inline { display: flex; gap: 8px; align-items: center; } .relic-inline { font-size: 20px; padding: 4px; background: rgba(212, 175, 55, 0.1); cursor: pointer; transition: all 0.2s ease; } .relic-inline:hover { background: rgba(212, 175, 55, 0.3); border-color: rgba(212, 175, 55, 0.6); transform: scale(1.1); } .relic-inline .relic-skill-art { width: 20px; height: 20px; object-fit: contain; vertical-align: middle; } .kreon-logo { font-family: "Kreon", serif; font-optical-sizing: auto; font-weight: 700; font-style: normal; } .custom-tooltip { position: fixed; background: linear-gradient(135deg, #2c1810 0%, #1a0f08 50%, #2c1810 100%); border: 3px solid #d4af37; border-radius: 12px; padding: 20px 24px; font-size: 16px; line-height: 1.6; color: #f0e68c; box-shadow: 0 12px 32px rgba(0, 0, 0, 0.8), 0 0 20px rgba(212, 175, 55, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1), inset 0 -1px 0 rgba(0, 0, 0, 0.3); z-index: 10000; display: none; max-width: 380px; min-width: 260px; pointer-events: none; text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 400; } .custom-tooltip::before { content: ''; position: absolute; top: 50%; left: -10px; transform: translateY(-50%); width: 0; height: 0; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-right: 10px solid #d4af37; filter: drop-shadow(-2px 0 4px rgba(0, 0, 0, 0.5)); } .custom-tooltip::after { content: ''; position: absolute; top: 50%; left: -8px; transform: translateY(-50%); width: 0; height: 0; border-top: 8px solid transparent; border-bottom: 8px solid transparent; border-right: 8px solid #2c1810; } .tooltip-with-avatar { display: flex; gap: 16px; align-items: flex-start; } .tooltip-avatar { flex-shrink: 0; width: 70px; height: 70px; border-radius: 50%; overflow: hidden; border: 3px solid #d4af37; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.6), 0 0 15px rgba(212, 175, 55, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.2); position: relative; } .tooltip-avatar::before { content: ''; position: absolute; top: -3px; left: -3px; right: -3px; bottom: -3px; border-radius: 50%; background: linear-gradient(45deg, #d4af37, #b8941f, #d4af37); z-index: -1; animation: avatarGlow 2s ease-in-out infinite alternate; } @keyframes avatarGlow { 0% { opacity: 0.6; } 100% { opacity: 1; } } .tooltip-avatar-img { width: 100%; height: 100%; object-fit: cover; } .tooltip-content { flex: 1; min-width: 0; padding-top: 4px; } .relics-section { background: linear-gradient(135deg, #3a2f1f 0%, #2a1f0f 100%); border: 2px solid #5a4a2a; border-radius: 6px; padding: 20px; margin-bottom: 20px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); } .relics-grid { display: flex; gap: 15px; flex-wrap: wrap; } .game-screen.relic-select { min-height: 100vh; background-image: url('assets/backgrounds/terrace.png'); background-size: cover; background-position: center; background-repeat: no-repeat; background-attachment: fixed; display: flex; flex-direction: column; font-family: 'Arial', sans-serif; position: relative; overflow: hidden; } .game-header { text-align: center; margin-bottom: 50px; padding: 30px 20px; } .relic-title-logo { position: relative; display: inline-block; margin-bottom: 20px; } .relic-title-logo svg { filter: drop-shadow(0 0 20px rgba(255, 215, 0, 0.4)) drop-shadow(0 0 40px rgba(255, 140, 0, 0.3)) drop-shadow(4px 4px 8px rgba(0, 0, 0, 0.6)); transition: all 0.3s ease; } .relic-title-logo:hover svg { filter: drop-shadow(0 0 30px rgba(255, 215, 0, 0.6)) drop-shadow(0 0 60px rgba(255, 140, 0, 0.4)) drop-shadow(4px 4px 8px rgba(0, 0, 0, 0.6)); transform: scale(1.05); } .relic-title-logo::before { content: ''; position: absolute; top: -20px; left: -20px; right: -20px; bottom: -20px; background: radial-gradient(ellipse at center, rgba(255, 215, 0, 0.1) 0%, transparent 70%); border-radius: 50%; z-index: -1; opacity: 0; transition: opacity 0.3s ease; } .relic-title-logo:hover::before { opacity: 1; } .game-header h1 { font-size: 36px; color: #d4af37; margin: 20px 0 12px 0; font-weight: bold; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8), 0 0 20px rgba(212, 175, 55, 0.3); font-family: 'Kreon', serif; } .game-header p { font-size: 18px; color: #e0d0b0; margin: 0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6); font-style: italic; } .relic-options { display: flex; flex-direction: column; gap: 16px; max-width: 600px; margin: 0 auto; flex: 1; } .relic-option { display: flex; align-items: center; background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.03) 0%, transparent 60%), linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 16px; padding: 30px; cursor: pointer; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4), inset 0 2px 4px rgba(255, 255, 255, 0.05), inset 0 -2px 4px rgba(0, 0, 0, 0.4); position: relative; overflow: hidden; min-height: 140px; } .relic-option::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.08), transparent); transition: left 0.5s ease; } .relic-option:hover { border-color: #4a4a5a; background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.06) 0%, transparent 60%), linear-gradient(135deg, #3a3a4a 0%, #2a2a3a 100%); transform: translateY(-2px) scale(1.02); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5), inset 0 2px 4px rgba(255, 255, 255, 0.08), inset 0 -2px 4px rgba(0, 0, 0, 0.4); } .relic-option:hover::before { left: 100%; } .relic-option:active { transform: translateY(0px) scale(1.01); box-shadow: 0 2px 15px rgba(0, 0, 0, 0.4), inset 0 2px 4px rgba(0, 0, 0, 0.3); } .relic-portrait { width: 100px; height: 100px; background: linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-right: 24px; flex-shrink: 0; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), inset 0 1px 2px rgba(255, 255, 255, 0.05), inset 0 -1px 2px rgba(0, 0, 0, 0.4); position: relative; overflow: hidden; padding: 6px; } .relic-portrait::after { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: conic-gradient(from 0deg, transparent, rgba(212, 175, 55, 0.1), transparent); animation: relicGlow 3s linear infinite; opacity: 0; transition: opacity 0.3s ease; } .relic-option:hover .relic-portrait::after { opacity: 1; } .relic-option:hover .relic-portrait { border-color: #4a4a5a; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.5), inset 0 2px 4px rgba(255, 255, 255, 0.08), inset 0 -2px 4px rgba(0, 0, 0, 0.4); transform: scale(1.05); } .relic-option:hover .relic-skill-art { transform: scale(1.05); } @keyframes relicGlow { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .relic-portrait .relic-icon { font-size: 36px; position: relative; z-index: 1; } .relic-skill-art { width: 70px; height: 70px; object-fit: contain; transition: all 0.3s ease; } .relic-info { flex: 1; display: flex; flex-direction: column; justify-content: center; padding: 4px 0; } .relic-name { font-size: 28px; font-weight: bold; color: #f0e68c; margin-bottom: 8px; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8), 0 0 20px rgba(240, 230, 140, 0.4); font-family: 'Kreon', serif; letter-spacing: 0.8px; } .relic-description { font-size: 16px; color: #e0d0b0; line-height: 1.5; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6); font-style: italic; } .game-footer { text-align: center; margin-top: 50px; padding: 20px; background: linear-gradient(135deg, rgba(212, 175, 55, 0.05) 0%, transparent 50%); border-radius: 15px; border: 1px solid rgba(212, 175, 55, 0.1); } .footer-text { font-size: 16px; color: #c0b090; font-style: italic; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6); letter-spacing: 0.3px; } .relic-icon { font-size: 24px; margin-bottom: 5px; } .relic-name { font-size: 24px; font-weight: bold; } .map-section { background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.03) 0%, transparent 60%), linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 6px; padding: 20px; margin-bottom: 20px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); } .welcome-panel { width: 500px; display: flex; flex-direction: column; gap: 25px; } .birthday-message { background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.03) 0%, transparent 60%), linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 3px solid #d4af37; border-radius: 16px; padding: 25px 13px; text-align: center; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.15), 0 0 20px rgba(212, 175, 55, 0.3); } .birthday-message h2 { font-size: 24px; color: #d4af37; margin: 0 0 15px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); font-weight: bold; } .birthday-message p { font-size: 16px; color: #e8e8e8; margin: 0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .map-instructions { background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.03) 0%, transparent 60%), linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 12px; padding: 20px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1); } .map-instructions h3 { font-size: 18px; color: #d4af37; margin: 0 0 15px 0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); font-weight: bold; } .map-instructions ul { margin: 0 0 20px 0; padding-left: 20px; color: #e8e8e8; } .map-instructions li { margin-bottom: 8px; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6); line-height: 1.4; } .map-instructions strong { color: #d4af37; } .birthday-wish { border-top: 1px solid #4a3428; padding-top: 15px; margin-top: 15px; text-align: center; } .birthday-wish p { color: #b8941f; font-size: 14px; margin: 0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .map-section { width: 1450px; margin: 0 auto; display: flex; align-items: flex-start; gap: 20px; } /* Act Progress Indicator */ .act-progress-indicator { margin: 0 0 10px 0; border-radius: 4px; width: 930px; } .act-progress-title { font-size: 11px; font-weight: 500; color: rgba(212, 175, 55, 0.7); margin-bottom: 6px; text-align: center; opacity: 0.8; } .act-progress-bar { display: flex; align-items: center; justify-content: center; gap: 0; } .act-step { display: flex; flex-direction: column; align-items: center; padding: 4px 12px; border-radius: 3px; transition: all 0.2s ease; } .act-step.locked { opacity: 0.3; border: 1px solid rgba(212, 175, 55, 0.4); } .act-step.current { background: rgba(212, 175, 55, 0.1); border: 1px solid rgba(212, 175, 55, 0.4); } .act-step.completed { background: rgba(76, 175, 80, 0.1); border: 1px solid rgba(76, 175, 80, 0.4); } .act-number { font-size: 14px; font-weight: 600; font-family: "Kreon", serif; margin-bottom: 2px; } .act-step.current .act-number { color: var(--accent); } .act-step.completed .act-number { color: #4CAF50; } .act-step.locked .act-number { color: #555; } .act-name { font-size: 12px; font-weight: 400; text-align: center; line-height: 1.1; opacity: 0.8; } .act-connector { width: 40px; height: 2px; background: rgba(68, 68, 68, 0.4); margin: 0 6px; border-radius: 1px; transition: all 0.2s ease; } .act-connector.active { background: rgba(212, 175, 55, 0.6); box-shadow: 0 0 4px rgba(212, 175, 55, 0.3); } .spire-map { position: relative; width: 930px; height: 700px; background: linear-gradient(180deg, #C8B99C 0%, #A0927A 50%, #8B7D6B 100%); border-radius: 8px; overflow: hidden; box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.2); } .map-legend-overlay { position: absolute; top: 20px; right: 20px; background: linear-gradient(135deg, rgb(74, 47, 31) 0%, rgb(58, 31, 15) 100%); border: 2px solid #FFFFFF; border-radius: 8px; padding: 12px; min-width: 140px; z-index: 10; backdrop-filter: blur(2px); } .legend-title { font-weight: bold; font-size: 16px; color: #FFFFFF; margin-bottom: 8px; text-align: center; } .legend-item { display: flex; align-items: center; margin-bottom: 4px; font-size: 13px; color: #FFFFFF; line-height: 1.5; } .legend-icon { margin-right: 6px; font-size: 12px; width: 16px; text-align: center; } .spire-paths { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; } .spire-path { transition: all 0.3s ease; } .spire-path.active { filter: drop-shadow(0 0 8px rgba(212, 175, 55, 0.6)); } .spire-nodes { position: relative; width: 100%; height: 100%; z-index: 2; } .spire-node { position: absolute; width: 60px; height: 60px; cursor: pointer; transition: all 0.3s ease; transform-origin: center; } .spire-node .node-background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #5A5A5A; border: 3px solid #3A3A3A; border-radius: 50%; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.2); transition: all 0.3s ease; } .spire-node .node-background.battle { background: #8B4513; border-color: #654321; } .spire-node .node-background.elite { background: #8B0000; border-color: #654321; } .spire-node .node-background.rest { background: #4682B4; border-color: #2F4F4F; } .spire-node .node-background.shop { background: #DAA520; border-color: #B8860B; } .spire-node .node-background.treasure { background: #FFD700; border-color: #DAA520; } .spire-node .node-background.event { background: #9932CC; border-color: #663399; } .spire-node .node-content { position: relative; z-index: 2; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; text-align: center; } .spire-node .node-icon { font-size: 24px; filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.8)); } .current-indicator { position: absolute; top: -8px; right: -8px; background: #FFD700; color: #000; border-radius: 50%; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: bold; z-index: 3; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); } .spire-node.current .node-background { border-color: #FFD700 !important; box-shadow: 0 0 15px rgba(255, 215, 0, 0.8), 0 2px 6px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.3); } .spire-node.available { cursor: pointer; } .spire-node.available:hover { transform: scale(1.15); } .spire-node.available:hover .node-background { box-shadow: 0 0 12px rgba(255, 255, 255, 0.6), 0 4px 8px rgba(0, 0, 0, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.4); border-color: #FFF !important; } .spire-node.completed .node-background { opacity: 0.6; filter: grayscale(0.5); } .spire-node.locked .node-background { opacity: 0.3; filter: grayscale(1); } .spire-node.locked { cursor: not-allowed; } .current-pulse { position: absolute; top: -5px; left: -5px; right: -5px; bottom: -5px; border: 2px solid #d4af37; border-radius: 50%; animation: currentPulse 2s ease-in-out infinite; z-index: 1; } @keyframes currentPulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.2); opacity: 0.3; } } .map-node { background: linear-gradient(135deg, #4a3a2a 0%, #3a2a1a 100%); border: 2px solid #6a5a4a; border-radius: 6px; padding: 15px; text-align: center; cursor: pointer; transition: all 0.15s ease; position: relative; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); } .map-node.current { border-color: #d4af37; background: linear-gradient(135deg, #5a4a2a 0%, #4a3a1a 100%); box-shadow: 0 0 20px rgba(212, 175, 55, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.2); } .map-node.available { border-color: #5a8a3a; background: linear-gradient(135deg, #4a5a2a 0%, #3a4a1a 100%); cursor: pointer; } .map-node.available:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(90, 138, 58, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.2); border-color: #6a9a4a; } .map-node.completed { border-color: #6c757d; background: #1a1d29; opacity: 0.7; } .map-node.locked { border-color: #495057; background: #1a1d29; opacity: 0.4; cursor: not-allowed; } .node-icon { font-size: 32px; margin-bottom: 8px; } .node-label { font-weight: bold; font-size: 14px; margin-bottom: 4px; } .node-id { font-size: 12px; color: #6ea8fe; } .current-marker { position: absolute; bottom: -8px; left: 50%; transform: translateX(-50%); background: #6ea8fe; color: #000; padding: 2px 8px; border-radius: 4px; font-size: 10px; font-weight: bold; } .available-marker { position: absolute; bottom: -8px; left: 50%; transform: translateX(-50%); background: #28a745; color: white; padding: 2px 8px; border-radius: 4px; font-size: 10px; font-weight: bold; } .deck-stack-container { position: fixed; bottom: 20px; right: 20px; z-index: 50; } .deck-stack-header { display: flex; align-items: center; gap: 8px; background: linear-gradient(135deg, #3a2f1f 0%, #2c1810 100%); border: 2px solid #5a4a2a; border-radius: 8px; padding: 8px 12px; margin-bottom: 10px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); } .deck-count { color: #d4af37; font-weight: bold; font-size: 14px; } .deck-stack { position: relative; width: 200px; height: 300px; cursor: pointer; transition: all 0.3s ease; } .deck-stack-card { position: absolute; width: 200px; height: 300px; cursor: pointer; transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); transform-style: preserve-3d; transform-origin: center bottom; } .deck-stack-card { top: calc(var(--card-index) * 2px); left: calc(var(--card-index) * 1px); z-index: calc(20 - var(--card-index)); } .deck-stack:hover .deck-stack-card { transform: translateX(calc(var(--card-index) * -140px)) translateY(calc(var(--card-index) * -30px)); z-index: calc(30 + var(--card-index)); } .deck-stack:hover .deck-stack-card:hover { transform: translateX(calc(var(--card-index) * -140px)) translateY(calc(var(--card-index) * -30px - 15px)) scale(1.05); z-index: 100; } .deck-stack-card .card-frame { position: relative; width: 100%; height: 100%; background: linear-gradient(135deg, #4a3428 0%, #2a1f18 100%), radial-gradient(ellipse at center, rgba(139, 115, 85, 0.3) 0%, transparent 70%); border-radius: 16px; border: 3px solid #8b7355; padding: 8px; display: flex; flex-direction: column; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.15), inset 0 -2px 0 rgba(0, 0, 0, 0.4), inset 2px 0 0 rgba(255, 255, 255, 0.1), inset -2px 0 0 rgba(0, 0, 0, 0.3); transition: all 0.4s ease; overflow: hidden; } .deck-stack-card .card-header-row { position: relative; margin-bottom: 12px; margin-top: 8px; } .deck-stack-card .card-title { font-weight: bold; font-size: 16px; color: #ffffff; text-shadow: 2px 2px 4px rgba(0, 0, 0, 1); text-align: center; background: linear-gradient(135deg, #8b7355 0%, #6b5a45 50%, #4a3428 100%); padding: 6px 12px; margin: 0 8px; border-radius: 12px; border: 2px solid #a68b6b; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.2), inset 0 -1px 0 rgba(0, 0, 0, 0.3); position: relative; z-index: 5; } .deck-stack-card .card-cost-orb { width: 36px; height: 36px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, #ff6b35, #d4af37, #8b4513), linear-gradient(135deg, #ff6b35 0%, #d4af37 50%, #8b4513 100%); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 16px; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); box-shadow: 0 4px 12px rgba(212, 175, 55, 0.6), inset 0 2px 0 rgba(255, 255, 255, 0.3), inset 0 -2px 0 rgba(0, 0, 0, 0.3); border: 2px solid #8b4513; position: absolute; top: -8px; left: -8px; z-index: 10; } .deck-stack-card .card-art { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; margin: 8px 4px; background: linear-gradient(135deg, #2a1f18 0%, #1a0f08 100%), radial-gradient(ellipse at center, rgba(139, 115, 85, 0.2) 0%, transparent 70%); border: 2px solid #4a3428; border-radius: 8px; box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5), inset 0 -1px 0 rgba(255, 255, 255, 0.1); overflow: hidden; } .deck-stack-card .card-art img { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.6)); } .deck-stack-card .card-description-box { background: linear-gradient(135deg, rgba(26, 15, 8, 0.9) 0%, rgba(42, 31, 24, 0.7) 100%); border: 1px solid #4a3428; border-radius: 8px; padding: 10px; margin: 4px; margin-bottom: 8px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.1); } .deck-stack-card .card-text { font-size: 12px; line-height: 1.4; color: #e8e8e8; text-align: center; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); font-weight: 500; } .deck-stack-card.attack .card-frame { border-color: #c82333; background: linear-gradient(135deg, #4a2f1f 0%, #3a1f0f 100%); } .deck-stack-card.skill .card-frame { border-color: #5a8a3a; background: linear-gradient(135deg, #3f4a2f 0%, #2f3a1f 100%); } .deck-stack-card.power .card-frame { border-color: #8a5aa3; background: linear-gradient(135deg, #4a3f4a 0%, #3a2f3a 100%); } .deck-stack-card .card-count-badge { position: absolute; top: 3px; right: 5%; background: #dc3545; color: white; border-radius: 50%; width: 16px; height: 16px; display: flex; align-items: center; justify-content: center; font-size: 8px; font-weight: bold; border: 1px solid #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); } .deck-stack-card.attack { border-color: #dc3545; } .deck-stack-card.skill { border-color: #28a745; } .deck-stack-card.power { border-color: #6f42c1; } .deck-preview { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 15px; justify-content: flex-start; } .deck-card-wrapper { position: relative; } .battle-card.deck-display { width: 200px; height: 280px; cursor: default; transition: transform 0.3s ease; margin: 8px; transform: rotate(0deg) !important; } .battle-card.deck-display:hover { transform: translateY(-5px) scale(1.02); z-index: 5; } .battle-card.deck-display .card-title { font-size: 14px; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 160px; } .battle-card.deck-display .card-cost-orb { font-size: 15px; font-weight: bold; width: 28px; height: 28px; top: -8px; left: -4px; } .card-count-badge { position: absolute; top: -8px; right: -8px; background: #d4af37; color: #000; border-radius: 50%; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: bold; border: 2px solid #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); z-index: 10; } .deck-card { background: linear-gradient(135deg, #4a3a2a 0%, #3a2a1a 100%); border: 1px solid #6a5a4a; border-radius: 4px; padding: 8px 12px; display: flex; align-items: center; gap: 8px; font-size: 12px; color: #d0d0d0; } .card-icon { font-size: 16px; } .card-count { background: #6ea8fe; color: #000; border-radius: 50%; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: bold; } .game-controls { background: #1b2030; border: 1px solid #2a3247; border-radius: 12px; padding: 20px; text-align: center; margin-top: 20px; } .btn-reset { background: linear-gradient(135deg, #dc3545, #c82333); color: white; border: none; border-radius: 8px; padding: 12px 24px; font-weight: bold; cursor: pointer; transition: all 0.2s ease; font-size: 14px; } .btn-reset:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(220, 53, 69, 0.4); } .controls-info { margin-top: 10px; } .quick-reset { position: fixed; top: 80px; right: 20px; z-index: 1000; } .btn-reset-small { background: linear-gradient(135deg, #dc3545, #c82333); color: white; border: none; border-radius: 6px; padding: 8px 12px; font-weight: bold; cursor: pointer; transition: all 0.2s ease; font-size: 12px; opacity: 0.8; } .btn-reset-small:hover { opacity: 1; transform: translateY(-1px); box-shadow: 0 2px 8px rgba(220, 53, 69, 0.4); } .log { white-space: pre-wrap; background: #111520; border-radius: 8px; padding: 10px; max-height: 200px; overflow: auto; font-size: 12px } .hr { height: 1px; background: #293148; margin: 10px 0 } .rest-screen { min-height: 100vh; background: url('assets/backgrounds/terrace.png'); background-size: cover; background-position: center; background-attachment: fixed; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; } .rest-header { margin-bottom: 50px; } .rest-header h1 { font-size: 36px; color: #d4af37; margin: 0 0 15px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8), 0 0 20px rgba(212, 175, 55, 0.3); font-weight: bold; } .rest-header p { font-size: 18px; color: #e8e8e8; margin: 0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .rest-options { display: flex; gap: 40px; justify-content: center; align-items: center; max-width: 800px; } .rest-option { display: flex; align-items: center; background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.03) 0%, transparent 60%), linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 16px; padding: 30px; cursor: pointer; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4), inset 0 2px 4px rgba(255, 255, 255, 0.05), inset 0 -2px 4px rgba(0, 0, 0, 0.4); min-width: 300px; text-align: left; } .rest-option:hover { border-color: #4a4a5a; background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.06) 0%, transparent 60%), linear-gradient(135deg, #3a3a4a 0%, #2a2a3a 100%); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5), inset 0 2px 4px rgba(255, 255, 255, 0.08), inset 0 -2px 4px rgba(0, 0, 0, 0.4); transform: translateY(-2px); } .rest-icon { margin-right: 20px; flex-shrink: 0; } .rest-icon-img { width: 60px; height: 60px; object-fit: contain; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.6)); } .rest-content h3 { font-size: 20px; color: #d4af37; margin: 0 0 8px 0; font-weight: bold; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .rest-content p { font-size: 14px; color: #e8e8e8; margin: 0; line-height: 1.4; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6); } .upgrade-screen { min-height: 100vh; background: url('assets/backgrounds/terrace.png'); background-size: cover; background-position: center; background-attachment: fixed; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; } .upgrade-preview { background: rgba(0, 0, 0, 0.7); border: 2px solid #d4af37; border-radius: 16px; padding: 20px; margin-bottom: 20px; width: 100%; max-width: 1100px; overflow: hidden; } .upgrade-action-header { margin-bottom: 20px; text-align: center; } .upgrade-action-header h3 { color: #d4af37; font-size: 24px; margin: 0 0 8px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); } .upgrade-action-header p { color: #e8e8e8; font-size: 14px; margin: 0; opacity: 0.9; } .upgrade-comparison { display: flex; align-items: center; justify-content: center; gap: 40px; flex-wrap: wrap; width: 100%; max-width: 1000px; margin: 0 auto; } .upgrade-card-container { display: flex; flex-direction: column; align-items: center; width: 300px; padding-left: 120px; } .upgrade-card-label { background: rgba(212, 175, 55, 0.2); color: #d4af37; font-size: 12px; font-weight: bold; text-align: center; padding: 4px 12px; border-radius: 8px; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 1px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); } .upgrade-card-before, .upgrade-card-after { pointer-events: none; transform: scale(0.75); transition: all 0.3s ease; width: fit-content; } .upgrade-card-before { opacity: 0.9; } .upgrade-card-after { opacity: 1; box-shadow: 0 0 20px rgba(212, 175, 55, 0.3); } .upgrade-arrow { display: flex; align-items: center; justify-content: center; min-height: 200px; } .upgrade-arrow-container { display: flex; align-items: center; justify-content: center; background: rgba(0, 0, 0, 0.6); border: 2px solid #d4af37; border-radius: 12px; padding: 12px 16px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4); } .upgrade-arrow-text { color: #d4af37; font-weight: bold; font-size: 16px; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); white-space: nowrap; letter-spacing: 1px; } .upgrade-header { margin-top: 40px; margin-bottom: 40px; } .shop-screen { min-height: 100vh; background: url('assets/backgrounds/terrace.png'); background-size: cover; background-position: center; background-attachment: fixed; display: flex; flex-direction: column; align-items: center; color: #e8e8e8; } .shop-header { text-align: center; margin-bottom: 40px; background: rgba(0, 0, 0, 0.8); border: 2px solid #d4af37; border-radius: 16px; padding: 30px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6); margin-top: 40px; } .shop-header h1 { font-size: 36px; color: #d4af37; margin: 0 0 12px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); } .shop-header p { font-size: 16px; margin: 0 0 20px 0; opacity: 0.9; } .player-gold { display: flex; align-items: center; justify-content: center; gap: 12px; background: rgba(212, 175, 55, 0.2); border: 2px solid #d4af37; border-radius: 12px; padding: 12px 20px; font-size: 20px; font-weight: bold; } .gold-icon, .price-icon { width: 24px; height: 24px; object-fit: contain; } .gold-amount { color: #d4af37; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .shop-inventory { max-width: 1200px; width: 100%; margin-bottom: 20px; } .shop-section { margin-bottom: 20px; background: rgba(0, 0, 0, 0.7); border: 2px solid #3a3a4a; border-radius: 16px; padding: 30px; box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4); } .shop-section-header { text-align: center; margin-bottom: 30px; } .shop-section-header h2 { font-size: 28px; color: #d4af37; margin: 0 0 8px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); } .shop-section-header p { font-size: 16px; color: #b8b8b8; margin: 0; } .shop-cards { display: flex; justify-content: center; gap: 30px; flex-wrap: wrap; } .shop-card-container { position: relative; } .shop-card { cursor: pointer; transition: all 0.3s ease; transform: scale(0.9); position: relative; } .shop-card:hover { transform: scale(0.95) translateY(-5px); } .shop-card-price { position: absolute; bottom: -15px; left: 50%; transform: translateX(-50%); background: linear-gradient(135deg, #d4af37 0%, #f4d03f 100%); color: #1a1a1a; border: 2px solid #d4af37; border-radius: 12px; padding: 8px 12px; display: flex; align-items: center; gap: 6px; font-weight: bold; font-size: 14px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); } .card-owned-indicator { position: absolute; top: -12px; right: -12px; background: linear-gradient(135deg, #4a9eff 0%, #007bff 100%); color: white; border: 2px solid #007bff; border-radius: 8px; padding: 4px 8px; font-size: 12px; font-weight: bold; box-shadow: 0 2px 8px rgba(0, 123, 255, 0.4); z-index: 10; } .shop-relics { display: flex; justify-content: center; } .shop-relic { background: linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 16px; padding: 25px; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 20px; max-width: 400px; position: relative; box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4); } .shop-relic:hover { border-color: #4a4a5a; transform: translateY(-3px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.6); } .shop-relic.affordable { border-color: #d4af37; } .shop-relic.affordable:hover { border-color: #f4d03f; box-shadow: 0 8px 25px rgba(212, 175, 55, 0.3); } .relic-icon { font-size: 48px; flex-shrink: 0; } .relic-skill-art { width: 48px; height: 48px; object-fit: contain; border-radius: 8px; } .relic-inline .relic-skill-art { width: 24px; height: 24px; } .relic-info h3 { color: #d4af37; font-size: 20px; margin: 0 0 8px 0; } .relic-info p { color: #e8e8e8; font-size: 14px; margin: 0; line-height: 1.4; } .shop-relic-price { position: absolute; top: -15px; right: 15px; background: linear-gradient(135deg, #d4af37 0%, #f4d03f 100%); color: #1a1a1a; border: 2px solid #d4af37; border-radius: 12px; padding: 8px 12px; display: flex; align-items: center; gap: 6px; font-weight: bold; font-size: 14px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); } .relic-disabled-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; border-radius: 16px; pointer-events: none; /* Allow clicks to pass through to elements behind */ color: #ff6b6b; font-weight: bold; font-size: 14px; } .shop-actions { text-align: center; } .shop-leave-btn { background: linear-gradient(135deg, #3a3a4a 0%, #2a2a3a 100%); border: 2px solid #4a4a5a; border-radius: 12px; color: #e8e8e8; padding: 15px 25px; font-size: 16px; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 12px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); } .shop-leave-btn:hover { border-color: #5a5a6a; transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.6); } .leave-icon { width: 20px; height: 20px; object-fit: contain; } .event-screen { min-height: 100vh; background: url('assets/backgrounds/terrace.png'); background-size: cover; background-position: center; background-attachment: fixed; display: flex; flex-direction: column; align-items: center; padding: 40px 20px; color: #e8e8e8; } .event-header { text-align: center; margin-bottom: 40px; background: rgba(0, 0, 0, 0.8); border: 2px solid #d4af37; border-radius: 16px; padding: 30px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6); max-width: 800px; width: 100%; } .event-header h1 { font-size: 36px; color: #d4af37; margin: 0 0 12px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); } .event-header p { font-size: 16px; margin: 0 0 20px 0; opacity: 0.9; } .player-status-inline { display: flex; justify-content: center; gap: 30px; background: rgba(42, 42, 58, 0.6); border: 1px solid #4a4a5a; border-radius: 12px; padding: 15px; } .player-status-inline .status-item { display: flex; align-items: center; gap: 8px; font-size: 16px; font-weight: bold; } .event-content { max-width: 1000px; width: 100%; display: flex; flex-direction: column; gap: 40px; } .event-story { background: rgba(0, 0, 0, 0.7); border: 2px solid #3a3a4a; border-radius: 16px; padding: 30px; display: flex; align-items: center; gap: 30px; box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4); } .event-artwork { flex-shrink: 0; } .event-artwork-img { width: 120px; height: 120px; object-fit: contain; border: 2px solid #d4af37; border-radius: 12px; background: rgba(42, 42, 58, 0.3); padding: 10px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); } .event-description { flex: 1; } .event-description p { font-size: 18px; line-height: 1.6; margin: 0; color: #e8e8e8; } .event-choices { background: rgba(0, 0, 0, 0.7); border: 2px solid #3a3a4a; border-radius: 16px; padding: 30px; box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4); } .event-choices h3 { font-size: 24px; color: #d4af37; margin: 0 0 25px 0; text-align: center; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); } .choices-grid { display: flex; flex-direction: column; gap: 20px; } .event-choice { background: linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 12px; padding: 20px; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 20px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); } .event-choice:hover { border-color: #4a4a5a; transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.6); } .event-choice.none-risk { border-color: #4a9eff; } .event-choice.none-risk:hover { border-color: #6bb6ff; box-shadow: 0 6px 16px rgba(74, 158, 255, 0.3); } .event-choice.low-risk { border-color: #28a745; } .event-choice.low-risk:hover { border-color: #34ce57; box-shadow: 0 6px 16px rgba(40, 167, 69, 0.3); } .event-choice.medium-risk { border-color: #ffc107; } .event-choice.medium-risk:hover { border-color: #ffcd39; box-shadow: 0 6px 16px rgba(255, 193, 7, 0.3); } .event-choice.high-risk { border-color: #dc3545; } .event-choice.high-risk:hover { border-color: #e4606d; box-shadow: 0 6px 16px rgba(220, 53, 69, 0.3); } .choice-icon { flex-shrink: 0; } .choice-icon-img { width: 60px; height: 60px; object-fit: contain; border: 1px solid #4a4a5a; border-radius: 8px; background: rgba(42, 42, 58, 0.3); padding: 8px; } .choice-content { flex: 1; } .choice-text { font-size: 16px; line-height: 1.4; margin: 0 0 10px 0; color: #e8e8e8; } .choice-quote { font-style: italic; color: #a8a8a8; font-size: 14px; margin: 6px 0 8px 0; opacity: 0.9; line-height: 1.3; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6); } .choice-risk-badge { display: inline-block; padding: 4px 8px; border-radius: 6px; font-size: 12px; font-weight: bold; text-transform: uppercase; letter-spacing: 0.5px; } .choice-risk-badge.none { background: rgba(74, 158, 255, 0.2); color: #4a9eff; border: 1px solid #4a9eff; } .choice-risk-badge.low { background: rgba(40, 167, 69, 0.2); color: #28a745; border: 1px solid #28a745; } .choice-risk-badge.medium { background: rgba(255, 193, 7, 0.2); color: #ffc107; border: 1px solid #ffc107; } .choice-risk-badge.high { background: rgba(220, 53, 69, 0.2); color: #dc3545; border: 1px solid #dc3545; } @media (max-width: 768px) { .event-story { flex-direction: column; text-align: center; } .player-status-inline { flex-direction: column; gap: 15px; } } .defeat-screen { min-height: 100vh; background: url('assets/backgrounds/terrace.png'); background-size: cover; background-position: center; background-attachment: fixed; display: flex; flex-direction: column; align-items: center; padding: 40px 20px; color: #e8e8e8; position: relative; } .defeat-screen::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient(circle at 50% 50%, rgba(139, 69, 19, 0.2) 0%, rgba(0, 0, 0, 0.4) 70%); pointer-events: none; } .defeat-header { text-align: center; margin-bottom: 40px; z-index: 1; } .defeat-skull { margin-bottom: 20px; filter: drop-shadow(0 0 20px rgba(139, 69, 19, 0.6)); } .skull-img { width: 120px; height: 120px; object-fit: contain; animation: defeatPulse 2s ease-in-out infinite; } @keyframes defeatPulse { 0%, 100% { transform: scale(1); filter: drop-shadow(0 0 20px rgba(139, 69, 19, 0.6)); } 50% { transform: scale(1.05); filter: drop-shadow(0 0 30px rgba(139, 69, 19, 0.8)); } } .defeat-header h1 { font-family: 'Kreon', serif; font-size: 3.5rem; font-weight: 700; color: #ff6b6b; margin: 0 0 10px 0; text-shadow: 3px 3px 6px rgba(0, 0, 0, 0.7); letter-spacing: 2px; } .defeat-header h2 { font-family: 'Kreon', serif; font-size: 1.8rem; font-weight: 400; color: #ffaa44; margin: 0 0 15px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6); } .defeat-header p { font-size: 1.1rem; color: #cccccc; margin: 0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); } .defeat-content { display: flex; flex-direction: column; align-items: center; gap: 40px; max-width: 1200px; width: 100%; z-index: 1; } .defeat-artwork { display: flex; justify-content: center; align-items: center; } .defeat-scene { position: relative; display: flex; justify-content: center; align-items: center; } .defeat-glow { position: relative; padding: 20px; border-radius: 50%; background: radial-gradient(circle, rgba(139, 69, 19, 0.3) 0%, transparent 70%); } .defeat-bug { width: 150px; height: 150px; object-fit: contain; filter: drop-shadow(0 0 25px rgba(139, 69, 19, 0.7)); animation: defeatFloat 3s ease-in-out infinite; } @keyframes defeatFloat { 0%, 100% { transform: translateY(0px) rotate(0deg); } 50% { transform: translateY(-10px) rotate(2deg); } } .defeat-stats { background: rgba(0, 0, 0, 0.7); border: 2px solid #8b4513; border-radius: 15px; padding: 30px; width: 100%; max-width: 800px; backdrop-filter: blur(10px); } .defeat-stats h3 { font-family: 'Kreon', serif; font-size: 1.8rem; color: #ff6b6b; margin: 0 0 25px 0; text-align: center; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6); } .defeat-relics { background: rgba(0, 0, 0, 0.7); border: 2px solid #8b4513; border-radius: 15px; padding: 30px; width: 100%; max-width: 800px; backdrop-filter: blur(10px); margin-top: 30px; } .defeat-relics h3 { font-family: 'Kreon', serif; font-size: 1.8rem; color: #ffaa44; margin: 0 0 25px 0; text-align: center; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6); } .defeat-message { background: rgba(0, 0, 0, 0.7); border: 2px solid #8b4513; border-radius: 15px; padding: 30px; width: 100%; max-width: 800px; backdrop-filter: blur(10px); text-align: center; margin-top: 30px; } .debug-session h3 { font-family: 'Kreon', serif; font-size: 1.8rem; color: #ffaa44; margin: 0 0 20px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6); } .defeat-quote { font-size: 1.1rem; line-height: 1.6; color: #e8e8e8; font-style: italic; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); } .defeat-quote em { color: #cccccc; font-size: 0.9rem; display: block; margin-top: 15px; } .defeat-actions { display: flex; gap: 20px; justify-content: center; flex-wrap: wrap; margin-top: 30px; } .defeat-btn { display: flex; align-items: center; gap: 10px; padding: 15px 30px; font-size: 1.1rem; font-weight: 600; border: none; border-radius: 10px; cursor: pointer; transition: all 0.3s ease; text-decoration: none; font-family: 'JetBrains Mono', monospace; min-width: 160px; justify-content: center; } .defeat-btn.primary-btn { background: linear-gradient(135deg, #ff6b6b, #ff5252); color: white; box-shadow: 0 4px 15px rgba(255, 107, 107, 0.3); } .defeat-btn.primary-btn:hover { background: linear-gradient(135deg, #ff5252, #ff4444); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(255, 107, 107, 0.4); } .defeat-btn.secondary-btn { background: linear-gradient(135deg, #666666, #555555); color: white; box-shadow: 0 4px 15px rgba(102, 102, 102, 0.3); } .defeat-btn.secondary-btn:hover { background: linear-gradient(135deg, #777777, #666666); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(102, 102, 102, 0.4); } .defeat-btn .btn-icon { font-size: 1.2rem; } .victory-screen { min-height: 100vh; background: url('assets/backgrounds/terrace.png'); background-size: cover; background-position: center; background-attachment: fixed; display: flex; flex-direction: column; align-items: center; padding: 40px 20px; color: #e8e8e8; position: relative; overflow-y: auto; } .victory-screen::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: radial-gradient(circle at 50% 50%, rgba(212, 175, 55, 0.1) 0%, transparent 70%); pointer-events: none; } .victory-header { text-align: center; margin-bottom: 40px; background: rgba(0, 0, 0, 0.9); border: 3px solid #d4af37; border-radius: 20px; padding: 40px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.8); position: relative; max-width: 800px; width: 100%; } .victory-crown { position: absolute; top: -25px; left: 50%; transform: translateX(-50%); background: radial-gradient(circle, #d4af37 0%, #f4d03f 100%); border-radius: 50%; padding: 15px; box-shadow: 0 6px 20px rgba(212, 175, 55, 0.5); } .crown-img { width: 50px; height: 50px; object-fit: contain; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.8)); } .victory-header h1 { font-size: 42px; color: #d4af37; margin: 20px 0 15px 0; text-shadow: 3px 3px 6px rgba(0, 0, 0, 0.9); font-weight: bold; letter-spacing: 2px; } .victory-header h2 { font-size: 24px; color: #f4d03f; margin: 0 0 15px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); } .victory-header p { font-size: 16px; color: #e8e8e8; margin: 0; opacity: 0.9; } .victory-content { max-width: 1200px; width: 100%; display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-bottom: 40px; } .victory-artwork { display: flex; justify-content: center; align-items: center; } .victory-scene { position: relative; display: flex; justify-content: center; align-items: center; } .victory-trophy { width: 200px; height: 200px; object-fit: contain; filter: drop-shadow(0 8px 16px rgba(0, 0, 0, 0.6)); z-index: 2; position: relative; } .victory-glow { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 300px; height: 300px; background: radial-gradient(circle, rgba(212, 175, 55, 0.3) 0%, transparent 70%); border-radius: 50%; animation: victoryGlow 2s ease-in-out infinite alternate; } @keyframes victoryGlow { 0% { opacity: 0.5; transform: translate(-50%, -50%) scale(1); } 100% { opacity: 0.8; transform: translate(-50%, -50%) scale(1.1); } } .victory-stats { background: rgba(0, 0, 0, 0.8); border: 2px solid #3a3a4a; border-radius: 16px; padding: 30px; box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4); } .victory-stats h3 { font-size: 24px; color: #d4af37; margin: 0 0 25px 0; text-align: center; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); } .stats-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } .stat-item { display: flex; align-items: center; gap: 15px; background: rgba(42, 42, 58, 0.6); border: 1px solid #4a4a5a; border-radius: 12px; padding: 15px; } .stat-icon { width: 32px; height: 32px; object-fit: contain; flex-shrink: 0; } .stat-info { display: flex; flex-direction: column; } .stat-label { font-size: 12px; color: #b8b8b8; text-transform: uppercase; letter-spacing: 0.5px; } .stat-value { font-size: 18px; color: #e8e8e8; font-weight: bold; } .victory-relics { grid-column: 1 / -1; background: rgba(0, 0, 0, 0.8); border: 2px solid #3a3a4a; border-radius: 16px; padding: 30px; box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4); } .victory-relics h3 { font-size: 24px; color: #d4af37; margin: 0 0 25px 0; text-align: center; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); } .relics-showcase { display: flex; justify-content: center; gap: 20px; flex-wrap: wrap; } .relic-showcase-item { background: rgba(42, 42, 58, 0.6); border: 2px solid #4a4a5a; border-radius: 12px; padding: 15px; text-align: center; cursor: pointer; transition: all 0.3s ease; min-width: 120px; } .relic-showcase-item:hover { border-color: #d4af37; box-shadow: 0 4px 12px rgba(212, 175, 55, 0.3); } .relic-showcase-icon { margin-bottom: 10px; } .relic-showcase-name { font-size: 14px; color: #e8e8e8; font-weight: bold; } .no-relics { color: #b8b8b8; font-style: italic; text-align: center; padding: 20px; } .victory-message { grid-column: 1 / -1; background: rgba(0, 0, 0, 0.8); border: 2px solid #d4af37; border-radius: 16px; padding: 30px; text-align: center; box-shadow: 0 6px 25px rgba(212, 175, 55, 0.2); } .birthday-celebration h3 { font-size: 24px; color: #d4af37; margin: 0 0 15px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); } .birthday-celebration p { font-size: 16px; color: #e8e8e8; margin: 0 0 15px 0; line-height: 1.5; } .victory-quote { font-style: italic; color: #f4d03f !important; font-size: 18px !important; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .victory-actions { text-align: center; } .victory-btn { background: linear-gradient(135deg, #d4af37 0%, #f4d03f 100%); border: 3px solid #d4af37; border-radius: 12px; color: #1a1a1a; padding: 20px 40px; font-size: 18px; font-weight: bold; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 15px; box-shadow: 0 6px 20px rgba(0, 0, 0, 0.5); } .victory-btn:hover { background: linear-gradient(135deg, #f4d03f 0%, #d4af37 100%); transform: translateY(-3px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.7); } .btn-icon { width: 24px; height: 24px; object-fit: contain; } @media (max-width: 768px) { .victory-content { grid-template-columns: 1fr; gap: 30px; } .stats-grid { grid-template-columns: 1fr; } .victory-header h1 { font-size: 32px; } .victory-trophy { width: 150px; height: 150px; } } .upgrade-header h1 { font-size: 36px; color: #d4af37; margin: 0 0 15px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8), 0 0 20px rgba(212, 175, 55, 0.3); font-weight: bold; } .upgrade-header p { font-size: 18px; color: #e8e8e8; margin: 0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .upgrade-options { display: flex; flex-direction: column; gap: 30px; max-width: 1000px; width: 100%; margin-bottom: 40px; } .upgrade-option { background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.03) 0%, transparent 60%), linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 16px; padding: 30px; cursor: pointer; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 6px 25px rgba(0, 0, 0, 0.4), inset 0 2px 4px rgba(255, 255, 255, 0.05), inset 0 -2px 4px rgba(0, 0, 0, 0.4); } .upgrade-option:hover { border-color: #4a4a5a; background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.06) 0%, transparent 60%), linear-gradient(135deg, #3a3a4a 0%, #2a2a3a 100%); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.5), inset 0 2px 4px rgba(255, 255, 255, 0.08), inset 0 -2px 4px rgba(0, 0, 0, 0.4); transform: translateY(-2px); } .upgrade-comparison { display: flex; align-items: center; justify-content: center; gap: 40px; } .upgrade-card { background: linear-gradient(135deg, #4a3f2f 0%, #3a2f1f 100%); border: 2px solid #8b7355; border-radius: 12px; padding: 20px; width: 280px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1); } .upgrade-card.before { opacity: 0.8; } .upgrade-card.after { border-color: #d4af37; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 0 20px rgba(212, 175, 55, 0.3); } .upgrade-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .upgrade-card-header h4 { font-size: 18px; color: #d4af37; margin: 0; font-weight: bold; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .upgrade-cost { background: linear-gradient(135deg, #d4af37 0%, #b8941f 100%); color: #000; border-radius: 50%; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; font-weight: bold; font-size: 14px; border: 2px solid #8b4513; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4); } .upgrade-card-art { display: flex; justify-content: center; margin: 15px 0; background: linear-gradient(135deg, #2a1f18 0%, #1a0f08 100%); border: 1px solid #4a3428; border-radius: 8px; padding: 15px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5); } .upgrade-card-art img { width: 50px; height: 50px; object-fit: contain; filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.6)); } .upgrade-card-text { font-size: 12px; color: #e8e8e8; line-height: 1.4; text-align: center; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6); } .upgrade-arrow { display: flex; flex-direction: column; align-items: center; gap: 10px; opacity: 0.8; } .upgrade-arrow-img { width: 40px; height: 40px; object-fit: contain; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.6)); } .upgrade-arrow span { font-size: 24px; color: #d4af37; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); } .upgrade-actions { display: flex; justify-content: center; } .upgrade-skip { background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.03) 0%, transparent 60%), linear-gradient(135deg, #2a2a3a 0%, #1a1a2a 100%); border: 2px solid #3a3a4a; border-radius: 12px; padding: 15px 30px; color: #e8e8e8; font-size: 16px; font-weight: bold; cursor: pointer; transition: all 0.3s ease; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1); } .upgrade-skip:hover { border-color: #4a4a5a; background: radial-gradient(ellipse at 20% 30%, rgba(255, 255, 255, 0.06) 0%, transparent 60%), linear-gradient(135deg, #3a3a4a 0%, #2a2a3a 100%); transform: translateY(-1px); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.15); } .reward-screen { padding: 40px 20px; text-align: center; min-height: 100vh; background: url('assets/backgrounds/terrace.png'); background-size: cover; background-position: center; background-attachment: fixed; } .reward-screen h1 { color: var(--accent); font-size: 2.5rem; margin-bottom: 40px; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); } .reward-cards-container { display: flex; justify-content: center; gap: 30px; flex-wrap: wrap; margin-bottom: 40px; max-width: 1200px; margin-left: auto; margin-right: auto; } .reward-card-wrapper { cursor: pointer; transition: transform 0.3s ease; } .reward-card-wrapper:hover { transform: translateY(-10px) scale(1.05); } .reward-card { width: 280px; height: 380px; margin: 0; position: relative; transition: all 0.3s ease; } .reward-card:hover { box-shadow: 0 10px 30px rgba(212, 175, 55, 0.4); } .reward-card .card-glow { opacity: 0; transition: opacity 0.3s ease; } .reward-card:hover .card-glow { opacity: 1; } .card-select-hint { position: absolute; bottom: 10px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: var(--accent); padding: 4px 8px; border-radius: 4px; font-size: 11px; font-weight: bold; opacity: 0; transition: opacity 0.3s ease; } .reward-card:hover .card-select-hint { opacity: 1; } .reward-actions { display: flex; justify-content: center; gap: 20px; } .skip-btn { padding: 12px 24px; font-size: 16px; border-radius: 8px; transition: all 0.3s ease; } .skip-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } /* Birthday Countdown Styles */ .countdown-screen { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: #000; display: flex; align-items: center; justify-content: center; z-index: 9999; } .countdown-content { text-align: center; max-width: 900px; padding: 40px; } .countdown-timer { margin-top: 40px; } .countdown-message h2 { color: #ffd700; font-size: 2.5em; margin-bottom: 20px; text-shadow: 0 0 20px rgba(255, 215, 0, 0.5); } .countdown-message p { color: #d0d0d0; font-size: 1.3em; margin-bottom: 40px; } .countdown-display { display: flex; justify-content: center; gap: 20px; margin: 40px 0; flex-wrap: wrap; } .time-unit { background: #000; border: 2px solid #fff; border-radius: 15px; padding: 20px; min-width: 100px; } .time-number { font-size: 3em; font-weight: bold; color: #ffd700; text-shadow: 0 0 10px rgba(255, 215, 0, 0.8); } .time-label { font-size: 1.1em; color: #d0d0d0; margin-top: 10px; text-transform: uppercase; letter-spacing: 1px; } .time-separator { font-size: 3em; color: #ffd700; align-self: center; animation: blink 2s infinite; } .birthday-preview { margin-top: 50px; padding: 30px; background: rgba(58, 47, 31, 0.6); border-radius: 15px; border: 1px solid #5a4a2a; } .birthday-preview p { color: #d0d0d0; font-size: 1.2em; margin-bottom: 20px; } .preview-icons { font-size: 2em; letter-spacing: 15px; animation: float 3s ease-in-out infinite; margin-bottom: 20px; } .dev-hint { color: #888; font-size: 0.9em; } .dev-hint code { background: rgba(0, 0, 0, 0.3); padding: 2px 6px; border-radius: 4px; font-family: 'JetBrains Mono', monospace; } @keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0.3; } } @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } @media (max-width: 768px) { .countdown-display { gap: 10px; } .time-unit { min-width: 80px; padding: 15px; } .time-number { font-size: 2em; } .countdown-message h2 { font-size: 1.8em; } .preview-icons { letter-spacing: 10px; } } /* ================================= MESSAGES BUTTON & MODAL STYLES ================================= */ /* Messages Button */ .messages-button { position: absolute; top: 10px; right: 10px; background: linear-gradient(135deg, #8B4513 0%, #D2691E 50%, #CD853F 100%); border: 2px solid var(--accent); border-radius: 12px; color: white; font-size: 16px; font-weight: bold; padding: 12px 20px; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); font-family: inherit; z-index: 10; } .messages-button:hover { background: linear-gradient(135deg, #A0522D 0%, #F4A460 50%, #DEB887 100%); transform: translateY(-2px); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.4); } .messages-button:active { transform: translateY(0); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); } /* Message Count Badge */ .message-count-badge { position: absolute; top: -8px; right: -8px; background: linear-gradient(135deg, #dc2626 0%, #ef4444 100%); color: white; font-size: 12px; font-weight: bold; min-width: 25px; height: 25px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 2px solid white; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); animation: badgePulse 2s ease-in-out infinite; } @keyframes badgePulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.3); } } .messages-button:hover .message-count-badge { animation: none; transform: scale(1.05); } /* Messages Modal */ .messages-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); display: flex; justify-content: center; align-items: center; z-index: 1000; backdrop-filter: blur(5px); animation: fadeIn 0.3s ease-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .messages-modal { background: var(--panel); border: 3px solid var(--accent); border-radius: 6px; max-width: 700px; width: 90%; max-height: 80vh; overflow: hidden; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); animation: modalSlideIn 0.3s ease-out; } @keyframes modalSlideIn { from { opacity: 0; transform: scale(0.9) translateY(-20px); } to { opacity: 1; transform: scale(1) translateY(0); } } .messages-modal-header { background: linear-gradient(135deg, var(--accent) 0%, #B8860B 100%); color: var(--bg); padding: 20px; display: flex; justify-content: space-between; align-items: center; } .messages-modal-header h2 { margin: 0; font-size: 1.5em; font-weight: bold; } .messages-close-btn { background: none; border: none; color: var(--bg); font-size: 24px; font-weight: bold; cursor: pointer; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: background-color 0.2s ease; } .messages-close-btn:hover { background: rgba(0, 0, 0, 0.2); } .messages-modal-content { padding: 20px; max-height: 60vh; overflow-y: auto; } /* Individual Message Items */ .message-item { background: var(--bg2); border: 2px solid var(--border); border-radius: 12px; padding: 20px; margin-bottom: 20px; transition: all 0.3s ease; } .message-item:hover { border-color: var(--accent); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); } .message-item:last-child { margin-bottom: 0; } .message-from { color: var(--accent); font-weight: bold; font-size: 1.1em; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); } .message-text { color: var(--text); line-height: 1.6; font-size: 1.05em; white-space: pre-wrap; /* Preserve line breaks */ } /* No Messages Placeholder */ .no-messages-placeholder { text-align: center; padding: 40px 20px; color: var(--text); } .no-messages-placeholder p { font-size: 1.1em; margin-bottom: 15px; opacity: 0.8; } .no-messages-placeholder code { background: var(--bg); padding: 4px 8px; border-radius: 4px; font-family: 'JetBrains Mono', monospace; color: var(--accent); } /* Scrollbar Styling for Modal Content */ .messages-modal-content::-webkit-scrollbar { width: 8px; } .messages-modal-content::-webkit-scrollbar-track { background: var(--bg); border-radius: 4px; } .messages-modal-content::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; } .messages-modal-content::-webkit-scrollbar-thumb:hover { background: var(--accent); } /* Responsive Design for Messages Modal */ @media (max-width: 768px) { .messages-button { top: 10px; right: 10px; padding: 10px 16px; font-size: 14px; } .message-count-badge { top: -6px; right: -6px; min-width: 18px; height: 18px; font-size: 11px; } .messages-modal { width: 95%; margin: 20px; max-height: 85vh; } .messages-modal-header { padding: 15px; } .messages-modal-header h2 { font-size: 1.3em; } .messages-modal-content { padding: 15px; max-height: 65vh; } .message-item { padding: 15px; } } /* Code Review Modal Styles */ .code-review-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); display: flex; justify-content: center; align-items: center; z-index: 1000; backdrop-filter: blur(5px); } .code-review-modal { background: linear-gradient(145deg, #2a2a2a, #1a1a1a); border: 2px solid #4a4a4a; border-radius: 15px; padding: 30px; max-width: 900px; width: 90%; max-height: 80vh; overflow-y: auto; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); } .code-review-header { text-align: center; margin-bottom: 30px; } .code-review-header h2 { color: #fff; font-size: 1.8em; margin: 0 0 10px 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); } .code-review-header p { color: #ccc; font-size: 1.1em; margin: 0; } .code-review-cards-container { display: flex; gap: 20px; justify-content: center; flex-wrap: wrap; margin-bottom: 20px; } .code-review-card { display: flex; flex-direction: column; align-items: center; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; padding: 10px; border-radius: 10px; background: rgba(255, 255, 255, 0.05); border: 2px solid transparent; } .code-review-card:hover { transform: translateY(-5px) scale(1.02); box-shadow: 0 8px 25px rgba(0, 150, 255, 0.3); border-color: #4a9eff; background: rgba(74, 158, 255, 0.1); } .code-review-card .battle-card { transform: scale(0.9); margin-bottom: 10px; } .code-review-card-label { color: #ccc; font-size: 0.9em; text-align: center; padding: 5px 10px; background: rgba(0, 0, 0, 0.3); border-radius: 15px; border: 1px solid #666; transition: all 0.2s ease; } .code-review-card:hover .code-review-card-label { background: rgba(74, 158, 255, 0.2); border-color: #4a9eff; color: #fff; } .code-review-footer { text-align: center; margin-top: 20px; padding-top: 20px; border-top: 1px solid #444; } .code-review-footer p { color: #888; font-size: 0.9em; margin: 0; } /* Responsive adjustments for code review modal */ @media (max-width: 768px) { .code-review-modal { padding: 20px; width: 95%; max-height: 90vh; } .code-review-cards-container { flex-direction: column; align-items: center; } .code-review-card .battle-card { transform: scale(0.8); } .code-review-header h2 { font-size: 1.5em; } }