/* ═════════════════════════════════════════════════════════════════════ CHRONO CCG - DECK BUILDER STYLES ═════════════════════════════════════════════════════════════════════ */ .deck-builder-page { max-width: 1600px; margin: 0 auto; position: relative; min-height: calc(100vh - 70px); } /* Ambient glow in background */ .deck-builder-page::before { content: ''; position: fixed; top: -10%; left: 20%; width: 600px; height: 600px; background: radial-gradient(circle, rgba(108, 99, 255, 0.08) 0%, rgba(108, 99, 255, 0) 70%); pointer-events: none; z-index: 0; } .deck-builder-page::after { content: ''; position: fixed; bottom: -10%; right: 15%; width: 500px; height: 500px; background: radial-gradient(circle, rgba(255, 215, 0, 0.05) 0%, rgba(255, 215, 0, 0) 70%); pointer-events: none; z-index: 0; } /* ── Glassmorphism Panels ── */ .glass-panel { background: rgba(20, 20, 40, 0.85); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 16px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.05); position: relative; z-index: 1; } /* ── Auth Required Card ── */ .auth-required-card { background: linear-gradient(145deg, rgba(24, 24, 48, 0.9), rgba(16, 16, 32, 0.95)); border: 1px solid rgba(255, 215, 0, 0.25); border-radius: 20px; box-shadow: 0 16px 40px rgba(0, 0, 0, 0.6), 0 0 30px rgba(255, 215, 0, 0.1); } .auth-lock-icon { font-size: 3.8rem; color: #ffd700; text-shadow: 0 0 20px rgba(255, 215, 0, 0.4); animation: pulse-glow 3s infinite ease-in-out; } @keyframes pulse-glow { 0%, 100% { transform: scale(1); filter: drop-shadow(0 0 15px rgba(255, 215, 0, 0.4)); } 50% { transform: scale(1.05); filter: drop-shadow(0 0 25px rgba(255, 215, 0, 0.7)); } } /* ── Builder Header Toolbar ── */ .builder-header-bar { border-color: rgba(108, 99, 255, 0.2); transition: border-color 0.3s ease; } .builder-header-bar:focus-within { border-color: rgba(108, 99, 255, 0.4); } .field-label { display: flex; align-items: center; gap: 0.35rem; color: var(--text-secondary, #94a3b8); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 0.35rem; } .input-glow { background: rgba(14, 14, 28, 0.8) !important; border: 1px solid rgba(255, 255, 255, 0.12) !important; color: #f8fafc !important; border-radius: 10px; padding: 0.55rem 0.85rem; transition: all 0.2s ease; } .input-glow:focus { background: rgba(18, 18, 36, 0.95) !important; border-color: var(--accent, #6c63ff) !important; box-shadow: 0 0 0 3px rgba(108, 99, 255, 0.25), 0 0 15px rgba(108, 99, 255, 0.2) !important; } .deck-name-input { font-size: 1.05rem; font-weight: 700; letter-spacing: 0.02em; } .deck-season-input { font-size: 0.9rem; font-weight: 600; } .deck-notes-input { font-size: 0.85rem; } /* ── Badges & Status Indicators ── */ .status-pill-group { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; } .card-count { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.85rem; font-weight: 800; padding: 0.5rem 0.9rem; border-radius: 100px; letter-spacing: 0.03em; transition: all 0.3s ease; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25); white-space: nowrap; } .card-count.count-progress { background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%); color: #ffffff; border: 1px solid rgba(167, 139, 250, 0.4); box-shadow: 0 0 15px rgba(124, 58, 237, 0.3); } .card-count.count-complete { background: linear-gradient(135deg, #059669 0%, #10b981 100%); color: #ffffff; border: 1px solid rgba(52, 211, 153, 0.5); box-shadow: 0 0 18px rgba(16, 185, 129, 0.4); animation: pop-badge 0.4s ease; } .card-count.count-overflow { background: linear-gradient(135deg, #dc2626 0%, #ef4444 100%); color: #ffffff; border: 1px solid rgba(248, 113, 113, 0.5); box-shadow: 0 0 15px rgba(239, 68, 68, 0.4); } @keyframes pop-badge { 0% { transform: scale(0.9); } 50% { transform: scale(1.08); } 100% { transform: scale(1); } } .validity-badge { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.82rem; font-weight: 700; padding: 0.5rem 0.9rem; border-radius: 100px; transition: all 0.3s ease; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); white-space: nowrap; } .validity-badge.valid { background: linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(5, 150, 105, 0.3)); color: #34d399; border: 1px solid rgba(52, 211, 153, 0.4); box-shadow: 0 0 12px rgba(16, 185, 129, 0.25); } .validity-badge.invalid { background: linear-gradient(135deg, rgba(245, 158, 11, 0.18), rgba(217, 119, 6, 0.25)); color: #fbbf24; border: 1px solid rgba(251, 191, 36, 0.4); box-shadow: 0 0 12px rgba(245, 158, 11, 0.2); } /* ── Action Buttons ── */ .save-btn { background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%) !important; color: #ffffff !important; border: 1px solid rgba(196, 181, 253, 0.3) !important; border-radius: 10px; font-weight: 700; letter-spacing: 0.02em; padding: 0.6rem 1.4rem; transition: all 0.25s ease; box-shadow: 0 4px 16px rgba(99, 102, 241, 0.35); display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem; } .save-btn:hover:not(:disabled) { background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%) !important; transform: translateY(-2px); box-shadow: 0 6px 22px rgba(99, 102, 241, 0.5), 0 0 15px rgba(139, 92, 246, 0.4); border-color: rgba(255, 255, 255, 0.5) !important; } .save-btn:active:not(:disabled) { transform: translateY(0); } .save-btn:disabled { opacity: 0.65; cursor: not-allowed; } .btn-ghost-secondary { background: rgba(30, 30, 60, 0.6); border: 1px solid rgba(255, 255, 255, 0.1); color: #cbd5e1; border-radius: 10px; padding: 0.6rem 1.1rem; font-weight: 600; transition: all 0.2s ease; text-decoration: none; display: inline-flex; align-items: center; gap: 0.4rem; } .btn-ghost-secondary:hover { background: rgba(50, 50, 90, 0.8); color: #ffffff; border-color: rgba(255, 255, 255, 0.25); transform: translateY(-1px); } /* ── Quick Stats & Analytics Bar ── */ .deck-stats-bar { background: rgba(14, 14, 30, 0.7); border: 1px solid rgba(255, 255, 255, 0.06); border-radius: 12px; padding: 0.75rem 1rem; } .stats-chip { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.3rem 0.65rem; border-radius: 8px; font-size: 0.78rem; font-weight: 600; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); } .stats-chip.chip-agent { color: #38bdf8; border-color: rgba(56, 189, 248, 0.25); background: rgba(56, 189, 248, 0.08); } .stats-chip.chip-spell { color: #c084fc; border-color: rgba(192, 132, 252, 0.25); background: rgba(192, 132, 252, 0.08); } .stats-chip.chip-immortalized { color: #fbbf24; border-color: rgba(251, 191, 36, 0.25); background: rgba(251, 191, 36, 0.08); } .syndicate-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; box-shadow: 0 0 6px currentColor; } /* Syndicate Colors */ .syn-singularity { color: #f1f5f9; } .syn-phasetide { color: #38bdf8; } .syn-silence { color: #c084fc; } .syn-lifeblood { color: #4ade80; } .syn-sungrace { color: #fb923c; } .syn-splintergleam { color: #f87171; } /* ── Search & Filter Controls ── */ .filter-search-group .input-group-text { background: rgba(14, 14, 28, 0.9); border-color: rgba(255, 255, 255, 0.12); color: #94a3b8; border-top-left-radius: 10px; border-bottom-left-radius: 10px; } .filter-select { background-color: rgba(14, 14, 28, 0.9) !important; border: 1px solid rgba(255, 255, 255, 0.12) !important; color: #f1f5f9 !important; border-radius: 10px; font-size: 0.85rem; font-weight: 500; padding: 0.45rem 0.75rem; transition: all 0.2s ease; } .filter-select:focus { border-color: #6366f1 !important; box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2) !important; } .btn-filter-clear { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); color: #94a3b8; border-radius: 8px; font-size: 0.78rem; padding: 0.35rem 0.75rem; transition: all 0.2s ease; } .btn-filter-clear:hover { background: rgba(239, 68, 68, 0.15); border-color: rgba(239, 68, 68, 0.3); color: #f87171; } /* ── Card Browser Grid ── */ .card-browser-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(145px, 1fr)); grid-auto-rows: max-content; align-content: start; align-items: start; gap: 0.75rem; max-height: 65vh; padding-right: 0.25rem; scrollbar-width: thin; scrollbar-color: rgba(108, 99, 255, 0.3) rgba(14, 14, 28, 0.5); } .card-browser-grid::-webkit-scrollbar { width: 6px; } .card-browser-grid::-webkit-scrollbar-thumb { background: rgba(108, 99, 255, 0.3); border-radius: 3px; } /* ── Browser Card ── */ .browser-card { background: linear-gradient(180deg, rgba(26, 26, 52, 0.95) 0%, rgba(16, 16, 34, 0.98) 100%); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 12px; padding: 0.5rem; position: relative; user-select: none; transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1); display: flex; flex-direction: column; justify-content: flex-start; overflow: hidden; height: 100%; min-height: fit-content; } .browser-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: transparent; transition: background 0.25s ease; } /* Category Accent lines */ .browser-card.card-agent::before { background: linear-gradient(90deg, #38bdf8, transparent); } .browser-card.card-spell::before { background: linear-gradient(90deg, #c084fc, transparent); } .browser-card.card-immortalized::before { background: linear-gradient(90deg, #fbbf24, transparent); } .browser-card.cursor-pointer:hover { transform: translateY(-5px) scale(1.02); border-color: rgba(129, 140, 248, 0.6); box-shadow: 0 12px 24px rgba(0, 0, 0, 0.5), 0 0 16px rgba(99, 102, 241, 0.3); background: linear-gradient(180deg, rgba(34, 34, 68, 0.98) 0%, rgba(20, 20, 42, 1) 100%); z-index: 5; } .browser-card.in-deck { border-color: rgba(99, 102, 241, 0.5); background: linear-gradient(180deg, rgba(30, 30, 65, 0.95) 0%, rgba(18, 18, 40, 0.98) 100%); box-shadow: 0 0 12px rgba(99, 102, 241, 0.2); } .browser-card.max-copies { opacity: 0.55; filter: grayscale(25%); cursor: not-allowed; } .browser-card.max-copies:hover { transform: none; box-shadow: none; border-color: rgba(255, 255, 255, 0.1); } .card-img-wrapper { position: relative; border-radius: 8px; overflow: hidden; background: #000; aspect-ratio: 2.5 / 3.5; width: 100%; flex-shrink: 0; margin-bottom: 0.4rem; } .card-img-wrapper img { width: 100%; height: 100%; aspect-ratio: 2.5 / 3.5; object-fit: cover; display: block; transition: transform 0.3s ease; } .browser-card:hover:not(.max-copies) .card-img-wrapper img { transform: scale(1.05); } /* Mana Cost Gem */ .cost-gem { position: absolute; top: 6px; left: 6px; width: 26px; height: 26px; background: radial-gradient(circle at 30% 30%, #60a5fa, #1d4ed8); border: 1.5px solid #bfdbfe; border-radius: 50%; color: #ffffff; font-weight: 900; font-size: 0.8rem; display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5), 0 0 10px rgba(59, 130, 246, 0.5); z-index: 3; } /* In-Deck Count Badge */ .deck-count-badge { position: absolute; top: 6px; right: 6px; padding: 0.15rem 0.45rem; border-radius: 6px; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.02em; z-index: 3; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4); } .deck-count-badge.count-1 { background: rgba(56, 189, 248, 0.9); color: #0f172a; } .deck-count-badge.count-2 { background: rgba(251, 191, 36, 0.95); color: #0f172a; } .deck-count-badge.count-3 { background: linear-gradient(135deg, #10b981, #059669); color: #ffffff; border: 1px solid #6ee7b7; } /* Diver ribbon */ .diver-ribbon { position: absolute; bottom: 6px; left: 6px; background: linear-gradient(135deg, #f59e0b, #d97706); color: #0f172a; font-weight: 900; font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.15rem 0.45rem; border-radius: 4px; border: 1px solid #fde68a; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5); z-index: 3; } .card-title-text { font-size: 0.82rem; font-weight: 700; color: #f1f5f9; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; margin-bottom: 0.2rem; } .card-stats-row { display: flex; align-items: center; justify-content: space-between; font-size: 0.72rem; color: #94a3b8; } .card-cat-label { font-weight: 600; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.04em; } .card-cat-label.cat-agent { color: #38bdf8; } .card-cat-label.cat-spell { color: #c084fc; } .card-cat-label.cat-immortalized { color: #fbbf24; } .combat-stats-chip { display: inline-flex; align-items: center; gap: 0.25rem; font-weight: 800; font-size: 0.72rem; background: rgba(0, 0, 0, 0.4); padding: 0.1rem 0.35rem; border-radius: 4px; } .atk-val { color: #f87171; } .hp-val { color: #4ade80; } /* ── Diver Slots ── */ .divers-section { background: rgba(14, 14, 30, 0.7); border: 1px solid rgba(255, 255, 255, 0.06); border-radius: 14px; padding: 0.85rem; } .diver-slot { border-radius: 12px; transition: all 0.25s ease; min-height: 72px; display: flex; flex-direction: column; justify-content: center; position: relative; user-select: none; cursor: pointer; } .diver-slot.empty-slot { background: rgba(18, 18, 38, 0.6); border: 2px dashed rgba(255, 215, 0, 0.3); } .diver-slot.empty-slot:hover { background: rgba(26, 26, 52, 0.8); border-color: rgba(255, 215, 0, 0.6); box-shadow: 0 0 15px rgba(255, 215, 0, 0.2); transform: translateY(-2px); } .diver-slot.occupied-slot { background: linear-gradient(135deg, rgba(255, 215, 0, 0.08) 0%, rgba(20, 20, 44, 0.95) 100%); border: 1px solid rgba(255, 215, 0, 0.6); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3), 0 0 15px rgba(255, 215, 0, 0.15); padding: 0.6rem 0.75rem; } .diver-slot.occupied-slot:hover { border-color: #ffd700; box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4), 0 0 20px rgba(255, 215, 0, 0.25); } .diver-badge-gold { background: linear-gradient(135deg, #f59e0b, #d97706); color: #0f172a; font-weight: 800; font-size: 0.68rem; padding: 0.15rem 0.45rem; border-radius: 4px; text-transform: uppercase; letter-spacing: 0.04em; } .diver-remove-btn { background: transparent; border: none; color: #f87171; font-size: 0.9rem; cursor: pointer; transition: all 0.2s ease; padding: 0; line-height: 1; } .diver-remove-btn:hover { color: #ef4444; transform: scale(1.2); filter: drop-shadow(0 0 6px rgba(239, 68, 68, 0.6)); } /* ── Main Deck Cards List ── */ .deck-card-list { max-height: 50vh; padding-right: 0.35rem; scrollbar-width: thin; scrollbar-color: rgba(108, 99, 255, 0.3) rgba(14, 14, 28, 0.5); } .deck-card-list::-webkit-scrollbar { width: 5px; } .deck-card-list::-webkit-scrollbar-thumb { background: rgba(108, 99, 255, 0.3); border-radius: 3px; } .deck-row-item { background: rgba(18, 18, 38, 0.85); border: 1px solid rgba(255, 255, 255, 0.07); border-left: 3px solid #6366f1; border-radius: 8px; padding: 0.45rem 0.65rem; margin-bottom: 0.35rem; display: flex; align-items: center; justify-content: space-between; transition: all 0.2s ease; } .deck-row-item:hover { background: rgba(28, 28, 56, 0.95); border-color: rgba(255, 255, 255, 0.15); border-left-color: #818cf8; transform: translateX(2px); } .deck-row-item.row-agent { border-left-color: #38bdf8; } .deck-row-item.row-spell { border-left-color: #c084fc; } .deck-row-item.row-immortalized { border-left-color: #fbbf24; } .mini-cost-pill { width: 22px; height: 22px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, #3b82f6, #1e40af); color: #ffffff; font-size: 0.72rem; font-weight: 800; display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); } .deck-row-title { font-size: 0.85rem; font-weight: 700; color: #f1f5f9; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .quantity-stepper { display: inline-flex; align-items: center; gap: 0.25rem; flex-shrink: 0; } .stepper-btn { width: 24px; height: 24px; border-radius: 6px; background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.12); color: #e2e8f0; font-weight: 800; font-size: 0.8rem; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.15s ease; padding: 0; } .stepper-btn:hover:not(:disabled) { background: rgba(99, 102, 241, 0.3); border-color: #818cf8; color: #ffffff; transform: scale(1.1); } .stepper-btn:disabled { opacity: 0.3; cursor: not-allowed; } .qty-pill { min-width: 26px; padding: 0.15rem 0.35rem; border-radius: 6px; font-size: 0.75rem; font-weight: 800; text-align: center; } .qty-pill.qty-1 { background: rgba(99, 102, 241, 0.2); color: #a5b4fc; border: 1px solid rgba(165, 180, 252, 0.3); } .qty-pill.qty-2 { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid rgba(251, 191, 36, 0.3); } .qty-pill.qty-3 { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid rgba(52, 211, 153, 0.3); } /* Empty Deck State */ .empty-deck-box { background: rgba(14, 14, 28, 0.5); border: 1px dashed rgba(255, 255, 255, 0.12); border-radius: 12px; padding: 2.5rem 1rem; text-align: center; } .empty-deck-icon { font-size: 2.5rem; color: #475569; margin-bottom: 0.5rem; } /* ── Diver Picker Modal ── */ .modal-glass { background: rgba(16, 16, 36, 0.95); backdrop-filter: blur(20px); border: 1px solid rgba(255, 215, 0, 0.3); border-radius: 18px; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.7), 0 0 30px rgba(255, 215, 0, 0.15); } .diver-picker-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); grid-auto-rows: max-content; align-content: start; gap: 0.65rem; max-height: 55vh; padding-right: 0.25rem; scrollbar-width: thin; } .diver-picker-card { background: rgba(22, 22, 46, 0.9); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 10px; padding: 0.6rem; transition: all 0.2s ease; cursor: pointer; } .diver-picker-card:hover { background: rgba(36, 36, 72, 0.95); border-color: #ffd700; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.4), 0 0 12px rgba(255, 215, 0, 0.25); transform: translateY(-2px); } /* ── Save Toast Alert ── */ .save-toast { background: linear-gradient(135deg, rgba(5, 150, 105, 0.95), rgba(16, 185, 129, 0.95)) !important; backdrop-filter: blur(12px); color: #ffffff !important; border: 1px solid rgba(167, 243, 208, 0.6) !important; border-radius: 12px; padding: 0.75rem 1.25rem; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5), 0 0 20px rgba(16, 185, 129, 0.4); animation: slide-in-toast 0.3s cubic-bezier(0.16, 1, 0.3, 1); z-index: 1200; } @keyframes slide-in-toast { from { transform: translateY(30px) scale(0.9); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } } /* ── Responsive adjustments ── */ @media (max-width: 991px) { .card-browser-grid { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); max-height: 50vh; } }