/* Navigation styles */ .navbar { background: rgba(30, 60, 114, 0.95); backdrop-filter: blur(10px); padding: 15px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.1); position: sticky; top: 0; z-index: 1000; } .navbar-container { margin: 0 auto; display: flex; align-items: center; padding: 0 20px; } .navbar-brand { font-size: 1.5rem; font-weight: bold; color: #fff; text-decoration: none; display: flex; align-items: center; gap: 10px; } .navbar-nav { margin-left: 65px; margin-right: auto; } .nav-link { color: rgba(255, 255, 255, 0.8); text-decoration: none; font-weight: 500; padding: 8px 16px; border-radius: 8px; transition: all 0.3s ease; } .nav-link:hover, .nav-link.active { color: #fff; background: rgba(255, 255, 255, 0.1); } .language-selector-nav { display: flex; align-items: center; gap: 8px; } .language-icon { width: 20px; height: 20px; filter: brightness(0) invert(1); opacity: 0.8; } .language-selector-nav select { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 6px; color: #fff; padding: 6px 12px; font-size: 14px; font-weight: 600; } .language-selector-nav select option { background: #1e3c72; color: #fff; } /* Responsive navigation */ @media (max-width: 768px) { .navbar-container { flex-direction: column; gap: 15px; padding: 15px 20px; } .navbar-nav { gap: 20px; margin-left: 0; margin-right: 0; justify-content: center; } .navbar-brand { font-size: 1.3rem; text-align: center; } .language-selector-nav { margin-top: 5px; } } @media (max-width: 480px) { .navbar { padding: 10px 0; } .navbar-container { padding: 10px 15px; gap: 12px; } .navbar-brand { font-size: 1.2rem; } .navbar-nav { flex-direction: row; gap: 15px; display: flex; justify-content: center; width: 100%; } .nav-link { padding: 6px 12px; font-size: 0.9rem; white-space: nowrap; } .language-selector-nav { margin-top: 8px; } .language-selector-nav select { padding: 4px 8px; font-size: 0.85rem; } } /* Drawer content: más ancho y padding superior para no superponer la X */ .bonds-drawer-content { position: absolute; top: 0; left: 0; width: 420px; max-width: 98vw; height: 100vh; background: rgba(30, 60, 114, 0.98); box-shadow: 4px 0 32px rgba(30, 60, 114, 0.18); border-top-right-radius: 24px; border-bottom-right-radius: 24px; padding: 60px 0px 24px 0px; overflow-y: auto; animation: bondsDrawerSlideIn 0.22s cubic-bezier(0.4, 1.2, 0.6, 1) 1; display: flex; justify-content: center; z-index: 3100 !important; padding-left: 0 !important; padding-right: 0 !important; align-items: center !important; } .bonds-drawer-btn:hover { background: #4a5fd6; } .bonds-drawer-content { position: absolute; top: 0; left: 0; width: 420px; max-width: 98vw; height: 100vh; background: rgba(30, 60, 114, 0.98); box-shadow: 4px 0 32px rgba(30, 60, 114, 0.18); border-top-right-radius: 24px; border-bottom-right-radius: 24px; padding: 60px 24px 24px 24px; display: flex; flex-direction: column; animation: bondsDrawerSlideIn 0.22s cubic-bezier(0.4, 1.2, 0.6, 1) 1; z-index: 3100 !important; } .bonds-panel-drawer { flex: 1 1 auto; min-height: 0; overflow-y: auto; } .bonds-drawer-btn { display: none; position: fixed; top: 32px; left: 18px; z-index: 1200; background: #667eea; color: #fff; border: none; border-radius: 18px; padding: 12px 28px; font-size: 1.1rem; font-weight: bold; box-shadow: 0 2px 12px rgba(30, 60, 114, 0.12); cursor: pointer; transition: background 0.2s; position: absolute !important; top: 0 !important; } @media (max-width: 1439px) { .bonds-drawer-btn { display: block; } .bonds-panel-responsive { display: none !important; } } @media (min-width: 1440px) { .bonds-drawer-btn { display: none !important; } .bonds-panel-responsive { display: block !important; } } .bonds-drawer { display: none; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 2000; pointer-events: none; } .bonds-drawer.open { display: block; pointer-events: auto; } /* .bonds-drawer-content { position: absolute; top: 0; left: 0; width: 340px; max-width: 90vw; height: 100vh; background: rgba(30, 60, 114, 0.98); box-shadow: 4px 0 32px rgba(30, 60, 114, 0.18); border-top-right-radius: 24px; border-bottom-right-radius: 24px; padding: 32px 18px 18px 18px; overflow-y: auto; animation: bondsDrawerSlideIn 0.22s cubic-bezier(0.4, 1.2, 0.6, 1) 1; } */ @keyframes bondsDrawerSlideIn { from { transform: translateX(-100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } .bonds-drawer-backdrop { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 1999; } .close-bonds-drawer { position: absolute; top: 12px; right: 18px; background: none; border: none; color: #fff; font-size: 2.2rem; font-weight: bold; cursor: pointer; z-index: 2100; line-height: 1; padding: 0 8px; transition: color 0.2s; } .close-bonds-drawer:hover { color: #ffb347; } .bonds-panel-drawer { background: none; border: none; box-shadow: none; margin: 0; padding: 0; max-height: 100% !important; margin-right: 0 !important; overflow: auto; } /* School filter dropdown styles */ .players-header-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 20px; } .school-filter-container { position: relative; display: flex; align-items: center; } .school-filter-btn { display: flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, 0.12); border: 2px solid rgba(255, 255, 255, 0.25); border-radius: 50%; color: #fff; width: 38px; height: 38px; padding: 0; cursor: pointer; transition: all 0.2s; position: relative; min-width: 0; } .school-filter-btn:hover, .school-filter-btn.active { background: rgba(102, 126, 234, 0.18); border-color: #667eea; } .school-filter-icon { width: 22px; height: 22px; display: block; pointer-events: none; } .school-filter-badge { position: absolute; top: 2px; right: 2px; background: #ffb347; color: #222; font-size: 0.8em; font-weight: bold; border-radius: 10px; padding: 1px 6px; min-width: 18px; text-align: center; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12); z-index: 2; } .school-filter-dropdown { position: absolute; top: 110%; right: 0; min-width: 220px; background: rgba(30, 60, 114, 0.98); border: 2px solid #667eea; border-radius: 16px; box-shadow: 0 8px 32px rgba(30, 60, 114, 0.25); z-index: 1001; padding: 10px 0 8px 0; display: flex; flex-direction: column; gap: 0; animation: fadeIn 0.18s; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .school-filter-dropdown-header { display: flex; align-items: center; justify-content: space-between; padding: 0 16px 8px 16px; border-bottom: 1px solid rgba(255, 255, 255, 0.12); margin-bottom: 6px; } .school-filter-dropdown-title { font-size: 1.05em; font-weight: 600; color: #fff; } .school-filter-reset { background: none; border: none; color: #ffb347; font-size: 0.95em; font-weight: 500; cursor: pointer; padding: 2px 8px; border-radius: 8px; transition: background 0.15s; display: flex; align-items: center; height: 100%; } .school-filter-reset:hover { background: rgba(255, 179, 71, 0.12); } .school-filter-list { list-style: none; margin: 0; padding: 0 8px; max-height: 220px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; } .school-filter-list li { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 8px; cursor: pointer; color: #fff; font-size: 1em; transition: background 0.15s; } .school-filter-list li.selected { background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); color: #fff; font-weight: bold; } .school-filter-list li:hover { background: rgba(102, 126, 234, 0.13); } .school-filter-list input[type='checkbox'] { accent-color: #667eea; width: 16px; height: 16px; margin: 0 2px 0 0; } /* School Filter Button & Dropdown */ .players-header-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 20px; } .school-filter-btn { display: flex; align-items: center; gap: 8px; background: rgba(255, 255, 255, 0.12); border: 2px solid rgba(255, 255, 255, 0.25); border-radius: 22px; padding: 7px 16px 7px 14px; color: #fff; font-size: 1rem; font-weight: 500; cursor: pointer; transition: all 0.2s; position: relative; min-width: 90px; box-shadow: 0 2px 8px rgba(102, 126, 234, 0.08); } .school-filter-btn:hover, .school-filter-btn.active { background: rgba(102, 126, 234, 0.18); border-color: #667eea; } .school-filter-btn-label { margin-right: 2px; } .school-filter-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; background: #ffb347; color: #222; font-size: 0.95em; font-weight: bold; border-radius: 50%; margin-left: 2px; margin-right: 2px; padding: 0 6px; box-shadow: 0 1px 4px rgba(255, 179, 71, 0.18); display: inline-flex; top: -5px; } .school-filter-icon { margin-left: 2px; transition: transform 0.2s; } /* Dropdown (to be implemented) */ .school-filter-dropdown { display: none; position: absolute; top: 110%; right: 0; min-width: 220px; background: rgba(30, 60, 114, 0.98); border: 2px solid #667eea; border-radius: 16px; box-shadow: 0 8px 32px rgba(102, 126, 234, 0.18); z-index: 1001; padding: 12px 0; margin-top: 6px; } .school-filter-dropdown.open { display: block; } .school-filter-dropdown-list { list-style: none; margin: 0; padding: 0 0 0 0; max-height: 260px; overflow-y: auto; } .school-filter-dropdown-item { display: flex; align-items: center; gap: 10px; padding: 8px 22px 8px 18px; font-size: 1rem; color: #fff; cursor: pointer; transition: background 0.15s; } .school-filter-dropdown-item.selected { background: #667eea; color: #fff; font-weight: bold; } .school-filter-dropdown-item:hover { background: rgba(102, 126, 234, 0.18); } .school-filter-dropdown-reset { display: flex; align-items: center; gap: 6px; color: #ffb347; font-size: 0.98em; font-weight: 500; background: none; border: none; cursor: pointer; padding: 8px 18px; width: 100%; text-align: left; margin-top: 4px; border-top: 1px solid rgba(255, 255, 255, 0.08); } .school-filter-dropdown-reset:hover { background: rgba(255, 179, 71, 0.08); color: #fff; } /* Reset and base styles */ * { margin: 0; padding: 0; box-sizing: border-box; } /* Accessibility focus styles */ :focus-visible { outline: 3px solid #ffb347; outline-offset: 2px; } button:focus-visible, .player-card.filled:focus-visible, .available-player:focus-visible, .position-player-card:focus-visible, #rotationButton:focus-visible { outline: 3px solid #ffb347; outline-offset: 3px; } .position-selector[role='dialog'] { outline: none; } body { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%); min-height: 100vh; color: white; } .container { width: 100%; min-height: 100vh; display: flex; flex-direction: column; } /* Header */ .header { background: rgba(0, 0, 0, 0.3); padding: 20px; display: flex; flex-direction: column; align-items: center; border-bottom: 2px solid rgba(255, 255, 255, 0.2); } .header h1 { font-size: 2.5rem; font-weight: bold; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); margin-bottom: 5px; } .header-subtitle { font-size: 1rem; opacity: 0.9; font-weight: 300; text-align: center; margin-top: 5px; color: #e8f4f8; margin-bottom: 15px; } /* Language Selector */ .language-selector { display: flex; align-items: center; gap: 8px; margin-top: 10px; position: relative; min-height: 48px; width: 100%; display: flex; justify-content: center; } /* Bonds button injected inside language-selector */ .bonds-drawer-btn.injected { display: block !important; position: absolute !important; left: 0 !important; top: 50% !important; transform: translateY(-50%) !important; margin: 0 !important; z-index: 2 !important; min-width: 120px; padding: 12px 28px; } .language-selector .language-icon { width: 24px; height: 24px; filter: brightness(0) invert(1); opacity: 0.9; } .language-selector select { background: rgba(255, 255, 255, 0.9); border: 2px solid rgba(255, 255, 255, 0.3); border-radius: 8px; padding: 8px 12px; font-size: 0.9rem; color: #333; cursor: pointer; transition: all 0.3s ease; min-width: 80px; font-weight: 600; } .language-selector select:hover { background: rgba(255, 255, 255, 1); border-color: #ff6b35; box-shadow: 0 2px 8px rgba(255, 107, 53, 0.3); } .language-selector select:focus { outline: none; border-color: #ff6b35; box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.2); } /* Main game area */ .game-area { flex: 1; display: flex; padding: 20px; gap: 30px; } /* Court container */ .court-container { display: flex; justify-content: center; align-items: flex-start; } .court { position: relative; width: 500px; height: 600px; background: linear-gradient(45deg, #8b4513, #d2691e); border: 4px solid #654321; border-radius: 20px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); overflow: hidden; } .court::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="wood" patternUnits="userSpaceOnUse" width="20" height="20"><rect width="20" height="20" fill="%23D2691E"/><rect width="10" height="20" fill="%23CD853F"/></pattern></defs><rect width="100" height="100" fill="url(%23wood)"/></svg>'); opacity: 0.3; } /* Net */ .net { position: absolute; top: 10%; left: 0; right: 0; height: 4px; background: white; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3); z-index: 10; } .net::before { content: ''; position: absolute; top: -10px; left: 0; right: 0; height: 24px; background: repeating-linear-gradient( 90deg, transparent, transparent 5px, rgba(255, 255, 255, 0.6) 5px, rgba(255, 255, 255, 0.6) 6px ); } /* Player positions */ .position { position: absolute; width: 120px; height: 140px; z-index: 20; } /* Position layouts - based on volleyball rotation */ .position-1 { top: 140px; left: 40px; } /* Back left - WS */ .position-6 { top: 140px; left: 190px; } /* Back center - MB */ .position-5 { top: 140px; right: 40px; } /* Back right - WS */ .position-4 { top: 280px; left: 40px; } /* Front left - OP */ .position-3 { top: 280px; left: 190px; } /* Front center - MB */ .position-2 { top: 280px; right: 40px; } /* Front right - S */ .position-libero { top: 420px; left: 40px; } /* Libero */ .player-slot { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; } .player-card { width: 90px; height: 120px; border-radius: 15px; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; cursor: pointer; transition: all 0.3s ease; border: 3px solid rgba(255, 255, 255, 0.5); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3); } .player-card.empty { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border-style: dashed; } .player-card.empty:hover { background: rgba(255, 255, 255, 0.2); transform: scale(1.05); } .player-card.libero { background: rgba(255, 193, 7, 0.2); border-color: #ffc107; } .player-card.filled { background: linear-gradient(145deg, #667eea 0%, #764ba2 100%); border-color: #764ba2; overflow: hidden; } .player-card.filled .player-image { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 15px; background-size: cover; background-position: center; z-index: 1; } .player-card.filled .player-name { position: absolute; bottom: 0px; left: 0; right: 0; z-index: 2; background: rgba(0, 0, 0, 0.7); color: white; padding: 2px 4px; font-size: 0.6rem; text-align: center; border-radius: 0 0 15px 15px; } .player-card.filled .position-tag { position: absolute; top: 5px; left: 5px; z-index: 2; background: rgba(0, 0, 0, 0.8); color: white; padding: 2px 6px; border-radius: 8px; font-size: 0.5rem; font-weight: bold; } .serving-indicator { bottom: 180px; right: 20px; position: absolute; display: inline-flex; height: 20px; } @keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.1); opacity: 0.8; } } .player-card.filled:hover { transform: scale(1.05); box-shadow: 0 8px 25px rgba(118, 75, 162, 0.4); } .position-label { font-size: 0.8rem; font-weight: bold; color: #ffffff; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); margin-bottom: 5px; } .position-number { font-size: 1.5rem; font-weight: bold; color: white; } /* Bond Effects Enhanced Styles */ .bond-character-container { background: linear-gradient(135deg, #2a2d3a 0%, #1e2126 100%); border: 2px solid #3a3f51; border-radius: 12px; margin-bottom: 20px; overflow: hidden; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3); transition: all 0.3s ease; } .bond-character-container:hover { border-color: #764ba2; box-shadow: 0 6px 20px rgba(118, 75, 162, 0.4); } .bond-character-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 15px; display: flex; align-items: center; gap: 12px; } .bond-character-image { width: 50px; height: 50px; border-radius: 50%; border: 3px solid rgba(255, 255, 255, 0.8); object-fit: cover; background: rgba(255, 255, 255, 0.1); } .bond-character-name { color: white; font-size: 1.1rem; font-weight: bold; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); flex-grow: 1; } .bond-level-buttons { display: flex; gap: 8px; background: rgba(0, 0, 0, 0.2); padding: 10px 15px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .bond-level-btn { background: linear-gradient(135deg, #4a5568 0%, #2d3748 100%); color: white; border: 2px solid #4a5568; border-radius: 8px; padding: 8px 12px; font-size: 0.9rem; font-weight: bold; cursor: pointer; transition: all 0.3s ease; min-width: 50px; text-align: center; } .bond-level-btn:hover { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-color: #667eea; transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); } .bond-level-btn.active { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-color: #667eea; box-shadow: 0 2px 8px rgba(118, 75, 162, 0.5); } .bond-effects-content { padding: 20px; color: #e2e8f0; line-height: 1.6; } .bond-effect-item { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 8px; padding: 12px; margin-bottom: 8px; transition: all 0.3s ease; } .bond-effect-item:hover { background: rgba(255, 255, 255, 0.08); border-color: rgba(118, 75, 162, 0.5); } .bond-effect-stat { font-weight: bold; color: #ffd700; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); } .bond-effect-value { color: #4ade80; font-weight: bold; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); } /* Enhanced bond effect styles for new interface */ .character-effect-container { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 10px; margin-bottom: 15px; padding: 15px; transition: all 0.3s ease; } .character-effect-container:hover { background: rgba(255, 255, 255, 0.08); border-color: rgba(118, 75, 162, 0.5); } .character-header { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .character-effect-image { width: 50px; height: 60px; border-radius: 6px; border: 1px solid rgba(255, 255, 255, 0.3); object-fit: contain; background: rgba(255, 255, 255, 0.1); } .character-info { flex-grow: 1; } .character-name { font-weight: bold; color: #ffd700; font-size: 1rem; } .character-school { font-size: 0.8rem; color: #a0aec0; margin-top: 2px; } .bonus-container { margin-bottom: 10px; padding: 16px; background: rgba(0, 0, 0, 0.2); border-radius: 6px; } .bonus-attribute { font-weight: bold; color: #667eea; margin-bottom: 16px; font-size: 0.9rem; } .level-selector { display: flex; gap: 6px; margin-bottom: 8px; align-items: center; } .level-btn { background: linear-gradient(135deg, #4a5568 0%, #2d3748 100%); color: white; border: 1px solid #4a5568; border-radius: 6px; padding: 4px 8px; font-size: 0.75rem; font-weight: bold; cursor: pointer; transition: all 0.3s ease; min-width: 35px; text-align: center; } .level-btn:hover { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-color: #667eea; transform: translateY(-1px); } .level-btn.active { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-color: #667eea; box-shadow: 0 2px 4px rgba(118, 75, 162, 0.4); } .current-effect { display: flex; align-items: flex-start; justify-content: flex-start; gap: 8px; margin-top: 8px; padding: 8px; padding-left: 0; } .effect-label { font-size: 0.8rem; color: #a0aec0; font-weight: 500; } /* Actualizado: efecto simplificado sin gradientes */ .effect-value { background: rgba(0, 0, 0, 0.3); color: #ffd700; padding: 6px 12px; border-radius: 6px; font-weight: bold; font-size: 0.9rem; border: 1px solid rgba(255, 215, 0, 0.3); } /* Bond participants horizontal layout (simple) */ .bond-participants-horizontal { display: flex; gap: 8px; margin-bottom: 15px; padding: 10px; border-radius: 8px; justify-content: center; align-items: center; } .bond-participants-horizontal .participant-image { width: 48px; height: 60px; border-radius: 6px; object-fit: cover; border: 3px solid transparent; transition: all 0.3s ease; } .bond-participants-horizontal .participant-image.participant-in-team { border-color: #48bb78; } .bond-participants-horizontal .participant-image.participant-missing { border-color: #f56565; } /* Simplified effect value styling */ .current-effect { display: flex; align-items: center; margin-top: 8px; } .effect-value { background: rgba(0, 0, 0, 0.3); color: #ffd700; padding: 6px 12px; border-radius: 6px; font-weight: bold; font-size: 0.9rem; border: 1px solid rgba(255, 215, 0, 0.3); } /* Bonifications section styles */ .bonifications-section { padding-top: 10px; } .bonifications-title { color: #87ceeb; font-size: 1rem; font-weight: bold; margin: 0 0 15px 0; text-align: center; } /* Generic player image element; intrinsic aspect preserved, cropped via object-fit */ .player-image { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; background: #ccc; } .player-card.empty .player-image { width: 60px; height: 60px; border-radius: 50%; } .player-name { font-size: 0.7rem; text-align: center; line-height: 1.2; } /* Rotation button */ .rotation-button { position: absolute; bottom: 75px; right: 80px; width: 35px; height: 35px; background: rgba(76, 175, 80, 0.9); border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 2px 8px rgba(76, 175, 80, 0.4); color: white; z-index: 100; } .rotation-button:hover { background: rgba(76, 175, 80, 1); transform: scale(1.15); box-shadow: 0 4px 12px rgba(76, 175, 80, 0.6); } .rotation-button.rotating { animation: rotateButton 0.6s ease-in-out; } .rotation-button svg { transition: transform 0.3s ease; } @keyframes rotateButton { 0% { transform: rotate(0deg) scale(1); } 50% { transform: rotate(180deg) scale(1.2); } 100% { transform: rotate(360deg) scale(1); } } /* School composition panel */ .school-panel { width: 400px; background: rgba(0, 0, 0, 0.2); border-radius: 20px; padding: 20px; backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); margin-right: 20px; max-height: calc( 100vh - 200px ); /* Reduce height to make space for position selector */ overflow-y: auto; } .school-panel h2, .school-panel h3 { margin-bottom: 20px; margin-top: 10px; text-align: center; font-size: 1.3rem; color: #fff; } .school-stats { display: flex; flex-direction: column; gap: 8px; /* Reduce gap */ margin-bottom: 20px; /* Reduce margin */ border-top: 2px solid rgba(255, 255, 255, 0.3); padding-top: 15px; /* Reduce padding */ } .school-item { background: rgba(255, 255, 255, 0.1); border-radius: 10px; padding: 12px; display: flex; justify-content: space-between; align-items: center; border: 2px solid transparent; transition: all 0.3s ease; } .school-item.buff-active { border-color: #4caf50; background: rgba(76, 175, 80, 0.2); box-shadow: 0 0 15px rgba(76, 175, 80, 0.3); } .school-name { font-weight: bold; font-size: 0.9rem; } .school-count { font-size: 1.1rem; font-weight: bold; color: #ffd700; } .school-count.complete { color: #4caf50; } .buff-indicator { margin-left: 8px; padding: 2px 6px; background: #4caf50; border-radius: 12px; font-size: 0.7rem; font-weight: bold; color: white; text-transform: uppercase; } .no-players { text-align: center; color: #ffffff; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8); font-style: italic; padding: 20px; } /* Bonds section */ .bonds-section { margin-top: 20px; /* Reduce margin */ border-top: 2px solid rgba(255, 255, 255, 0.3); padding-top: 15px; /* Reduce padding */ } .bond-item { background: rgba(255, 255, 255, 0.1); border-radius: 8px; padding: 0; margin-bottom: 8px; border: 2px solid transparent; transition: all 0.3s ease; position: relative; overflow: hidden; } .bond-header { padding: 12px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; transition: background-color 0.3s ease; } .bond-header:hover { background: rgba(255, 255, 255, 0.1); } .bond-controls { display: flex; align-items: center; gap: 12px; } .expand-icon { font-size: 0.8rem; color: #9c27b0; transition: transform 0.25s ease; display: inline-block; transform: rotate(-90deg); /* Closed state: arrow points right */ } /* Open state */ .bond-item.expanded .expand-icon { transform: rotate(0deg); /* Arrow points down */ } /* Rich text bond styles */ .rich-text-bond { margin-top: 12px; } .rich-text-bond .level-selector { margin: 8px 0 12px 0; } .rich-text-description { font-size: 0.85rem; line-height: 1.35rem; background: rgba(255, 255, 255, 0.05); padding: 10px 12px; border-radius: 8px; border: 1px solid rgba(255, 255, 255, 0.08); } .rich-text-description .rich-var { color: #ffb300; /* highlight color */ font-weight: 600; } .bond-details { padding: 0 12px 12px 12px; border-top: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.2); animation: slideDown 0.3s ease; } @keyframes slideDown { from { opacity: 0; max-height: 0; } to { opacity: 1; max-height: 500px; } } .bond-item.active { border-color: #9c27b0; background: rgba(156, 39, 176, 0.2); box-shadow: 0 0 10px rgba(156, 39, 176, 0.3); } .bond-item.inactive { background: rgba(255, 255, 255, 0.05); } .bond-name { font-size: 0.9rem; font-weight: bold; color: #fff; line-height: 1.2; flex: 1; } .bond-count { font-size: 1.1rem; font-weight: bold; color: #9c27b0; } .bond-count.complete { color: #4caf50; } .bond-tooltip { position: fixed; background: rgba(15, 15, 15, 1); color: white; padding: 15px 20px; border-radius: 10px; font-size: 0.85rem; z-index: 9999; opacity: 0; pointer-events: none; transition: opacity 0.2s ease; max-width: 400px; min-width: 250px; white-space: normal; line-height: 1.5; border: 2px solid rgba(255, 255, 255, 0.3); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.6); } /* Remove the arrow since we're using fixed positioning */ .bond-participants-images { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; } .bond-participants-title { font-weight: bold; color: #e1bee7; margin-bottom: 8px; display: block; } .participant-image { width: 48px; height: 60px; border-radius: 6px; border: 2px solid rgba(255, 255, 255, 0.4); object-fit: cover; } .bond-effect { margin-top: 10px; padding: 10px 0; } /* Enhanced bond effect styles */ .detailed-bond { background: rgba(255, 255, 255, 0.05); border-radius: 8px; padding: 15px; margin-top: 10px; } .bond-type { background: rgba(135, 206, 235, 0.2); padding: 8px 12px; border-radius: 6px; margin-bottom: 15px; font-size: 0.9rem; border-left: 3px solid #87ceeb; } .bond-special-effect { background: rgba(255, 193, 7, 0.1); border: 1px solid rgba(255, 193, 7, 0.3); border-radius: 6px; padding: 12px; margin-bottom: 15px; } .bond-special-effect p { margin-top: 8px; line-height: 1.4; color: #fff3cd; font-size: 0.85rem; } .character-effects { margin-bottom: 15px; padding: 12px; border-radius: 6px; border-left: 3px solid transparent; } .character-effects.in-team { background: rgba(76, 175, 80, 0.1); border-left-color: #4caf50; } .character-effects.not-in-team { background: rgba(158, 158, 158, 0.1); border-left-color: #9e9e9e; opacity: 0.7; } .character-effects h4 { color: #ffffff; margin-bottom: 10px; font-size: 0.9rem; display: flex; align-items: center; gap: 5px; } .bonus-effect { margin-bottom: 10px; padding: 8px; background: rgba(255, 255, 255, 0.05); border-radius: 4px; } .bonus-effect strong { color: #87ceeb; display: block; margin-bottom: 5px; font-size: 0.85rem; } .bonus-levels { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 5px; } .level-value { background: rgba(255, 255, 255, 0.1); color: #e0e0e0; padding: 3px 8px; border-radius: 12px; font-size: 0.75rem; border: 1px solid rgba(255, 255, 255, 0.2); } .effect-type { font-weight: bold; color: #87ceeb; margin-bottom: 8px; font-size: 0.9rem; } .kizuna-skill .effect-description { color: #e1bee7; font-style: italic; line-height: 1.4; } .attribute-bond .character-effect { margin-bottom: 12px; padding: 8px; background: rgba(255, 255, 255, 0.1); border-radius: 6px; } .character-name { font-weight: bold; color: #ffffff; margin-bottom: 6px; font-size: 0.85rem; } .player-highlight { color: #87ceeb; } .bonus-levels { margin-left: 10px; } .level { font-size: 0.8rem; color: #cccccc; margin: 2px 0; padding: 2px 6px; border-radius: 3px; } .current-level { color: #ffeb3b; background: rgba(255, 235, 59, 0.2); font-weight: bold; } /* Player panel */ .player-panel { flex: 1; background: rgba(0, 0, 0, 0.2); border-radius: 20px; padding: 20px; backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); max-height: 600px; overflow: hidden; display: flex; flex-direction: column; } .player-panel h2, .player-panel h3 { text-align: center; font-size: 1.5rem; flex-shrink: 0; } /* Search controls */ .search-controls { margin-bottom: 15px; padding: 0 10px; } .search-input { width: 100%; padding: 10px 15px !important; border: 2px solid rgba(255, 255, 255, 0.3) !important; border-radius: 25px !important; background: rgba(255, 255, 255, 0.1) !important; color: white !important; font-size: 14px !important; transition: all 0.3s ease !important; backdrop-filter: blur(10px) !important; box-sizing: border-box !important; font-family: inherit !important; } .search-input::placeholder { color: rgba(255, 255, 255, 0.7) !important; } .search-input:focus { outline: none !important; background: rgba(255, 255, 255, 0.2) !important; border-color: #667eea !important; box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.3) !important; } /* Position header styles */ .position-header { display: flex !important; align-items: center !important; justify-content: center !important; flex-shrink: 0 !important; width: 100%; margin: 10px 0 15px 0; padding: 5px 15px; background: rgba(255, 255, 255, 0.1); border-radius: 10px; text-align: center; font-size: 0.95rem; font-weight: bold; color: #fff; letter-spacing: 0.01em; } /* Sorting controls */ .sorting-controls { display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 20px; padding: 10px; background: rgba(255, 255, 255, 0.1); border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.2); flex-shrink: 0; } .sort-label { color: white; font-size: 0.9rem; font-weight: 600; margin: 0; } .sort-dropdown { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.3); border-radius: 6px; color: white; padding: 6px 12px; font-size: 0.9rem; cursor: pointer; transition: all 0.3s ease; min-width: 100px; } .sort-dropdown:hover { background: rgba(255, 255, 255, 0.2); border-color: rgba(255, 255, 255, 0.5); } .sort-dropdown:focus { outline: none; background: rgba(255, 255, 255, 0.2); border-color: #667eea; box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.3); } .sort-dropdown option { background: #1e3c72; color: white; padding: 8px; } .player-grid { display: flex; flex-direction: column; gap: 16px; overflow-y: auto; flex: 1; } .player-position-section { margin-bottom: 0; display: flex; flex-direction: column; gap: 0; } .player-position-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 15px; width: 100%; } .available-player { width: 80px; height: 100px; border-radius: 10px; background: linear-gradient(145deg, #667eea 0%, #764ba2 100%); border: 2px solid #764ba2; position: relative; cursor: pointer; transition: all 0.3s ease; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; box-shadow: 0 5px 15px rgba(118, 75, 162, 0.4); } .available-player:hover { transform: scale(1.05); box-shadow: 0 8px 25px rgba(118, 75, 162, 0.4); } .available-player .player-image { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 10px; z-index: 1; object-fit: cover; } .available-player .player-name { position: absolute; bottom: 0; left: 0; right: 0; z-index: 2; background: rgba(0, 0, 0, 0.7); color: white; padding: 2px 4px; font-size: 0.7rem; text-align: center; border-radius: 0 0 10px 10px; } .available-player .position-tag { position: absolute; top: 2px; left: 2px; z-index: 2; background: rgba(0, 0, 0, 0.8); color: white; padding: 1px 4px; border-radius: 6px; font-size: 0.5rem; font-weight: bold; } /* Developer Credits Footer Responsive */ footer { z-index: 999 !important; /* Lower than position-selector (1000) */ } @media (max-width: 480px) { footer { position: fixed !important; bottom: 5px !important; right: 5px !important; left: 5px !important; max-width: none !important; font-size: 10px !important; padding: 6px 8px !important; text-align: center !important; } footer div { margin-bottom: 2px !important; } } @media (max-width: 320px) { footer { font-size: 9px !important; padding: 4px 6px !important; } } /* Responsive design */ @media (max-width: 768px) { .game-area { flex-direction: column; } .court { width: 400px; height: 480px; } .position { width: 80px; height: 100px; } .player-card { width: 60px; height: 80px; } .header h1 { font-size: 1.8rem; } .language-selector { flex-direction: column; gap: 5px; margin-top: 15px; } .language-selector select { min-width: 100px; text-align: center; } } /* Scrollbar styling - Unified for internal elements only */ /* Vertical scrollbars for internal elements */ .player-panel::-webkit-scrollbar, .player-grid::-webkit-scrollbar, .position-players-list::-webkit-scrollbar, .school-panel::-webkit-scrollbar, .school-stats::-webkit-scrollbar, .bonds-section::-webkit-scrollbar, .bonds-list::-webkit-scrollbar, .effects-list::-webkit-scrollbar { width: 8px; } .player-panel::-webkit-scrollbar-track, .player-grid::-webkit-scrollbar-track, .position-players-list::-webkit-scrollbar-track, .school-panel::-webkit-scrollbar-track, .school-stats::-webkit-scrollbar-track, .bonds-section::-webkit-scrollbar-track, .bonds-list::-webkit-scrollbar-track, .effects-list::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.1); border-radius: 10px; } .player-panel::-webkit-scrollbar-thumb, .player-grid::-webkit-scrollbar-thumb, .position-players-list::-webkit-scrollbar-thumb, .school-panel::-webkit-scrollbar-thumb, .school-stats::-webkit-scrollbar-thumb, .bonds-section::-webkit-scrollbar-thumb, .bonds-list::-webkit-scrollbar-thumb, .effects-list::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.3); border-radius: 10px; transition: background 0.3s ease; } .player-panel::-webkit-scrollbar-thumb:hover, .player-grid::-webkit-scrollbar-thumb:hover, .position-players-list::-webkit-scrollbar-thumb:hover, .school-panel::-webkit-scrollbar-thumb:hover, .school-stats::-webkit-scrollbar-thumb:hover, .bonds-section::-webkit-scrollbar-thumb:hover, .bonds-list::-webkit-scrollbar-thumb:hover, .effects-list::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.5); } /* Horizontal scrollbars for internal elements */ .position-players-list::-webkit-scrollbar:horizontal { height: 8px; } .position-players-list::-webkit-scrollbar-track:horizontal { background: rgba(255, 255, 255, 0.1); border-radius: 10px; } .position-players-list::-webkit-scrollbar-thumb:horizontal { background: rgba(255, 255, 255, 0.3); border-radius: 10px; transition: background 0.3s ease; } .position-players-list::-webkit-scrollbar-thumb:horizontal:hover { background: rgba(255, 255, 255, 0.5); } /* Firefox scrollbar styling for internal elements only */ .player-panel, .player-grid, .position-players-list, .school-panel, .school-stats, .bonds-section, .bonds-list, .effects-list { scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, 0.3) rgba(255, 255, 255, 0.1); } /* Position Selector - Bottom Panel */ .position-selector { position: fixed; bottom: 0; left: 0; right: 0; background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%); border-top: 3px solid rgba(255, 255, 255, 0.2); transform: translateY(100%); transition: transform 0.3s ease-in-out; z-index: 1000; max-height: 50vh; box-shadow: 0 -5px 20px rgba(0, 0, 0, 0.3); } .position-selector.active { transform: translateY(0); } .position-selector-header { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.2); } .position-selector-header h3 { color: white; font-size: 1.2rem; margin: 0; font-weight: 600; } .position-selector-close { background: none; border: none; color: white; font-size: 1.5rem; cursor: pointer; padding: 5px 10px; border-radius: 50%; transition: background-color 0.2s ease; } .position-selector-close:hover { background-color: rgba(255, 255, 255, 0.1); } .position-selector-content { padding: 15px 20px; max-height: calc(50vh - 80px); overflow-y: auto; } .position-players-list { display: flex; gap: 10px; /* Slightly increased gap for better spacing with larger cards */ overflow-x: auto; padding: 10px 0; scroll-behavior: smooth; } /* The horizontal scrollbar styling is now handled by the global styles above */ .position-player-card { flex: 0 0 auto; width: 95px; /* Increased to better match visual size of right panel cards */ height: 120px; background: rgba(255, 255, 255, 0.1); border-radius: 8px; padding: 4px; cursor: pointer; transition: all 0.3s ease; border: 2px solid transparent; display: flex; align-items: center; justify-content: center; } .position-player-card:hover { background: rgba(255, 255, 255, 0.2); transform: translateY(-2px); border-color: rgba(255, 255, 255, 0.3); } .position-player-card.selected { background: rgba(102, 126, 234, 0.3); border-color: #667eea; transform: translateY(-2px); } .position-player-card img { width: 100%; height: 100%; border-radius: 4px; object-fit: cover; background: rgba(255, 255, 255, 0.1); } /* Responsive adjustments for position selector */ @media (max-width: 768px) { .position-selector { max-height: 60vh; } .position-selector-content { max-height: calc(60vh - 80px); padding: 10px 15px; } .position-player-card { width: 80px; /* Proportionally smaller on mobile */ height: 100px; } .position-players-list { gap: 6px; } } /* Adjust main content when position selector is active */ .container.position-selector-active { padding-bottom: 50vh; } @media (max-width: 768px) { .container.position-selector-active { padding-bottom: 60vh; } }
