:root { --primary-color: #2563eb; --primary-hover-color: #1d4ed8; --background-color: #f1f5f9; --panel-background: #ffffff; --text-color: #1e293b; --border-color: #e2e8f0; --font-family: 'Inter', system-ui, -apple-system, sans-serif; --modal-overlay-color: rgba(0, 0, 0, 0.5); --transition-speed: 0.2s; --border-radius-sm: 4px; --border-radius-md: 8px; --border-radius-lg: 12px; --spacing-xs: 0.5rem; --spacing-sm: 0.75rem; --spacing-md: 1rem; --spacing-lg: 1.5rem; --spacing-xl: 2rem; } *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } html { font-size: 16px; -webkit-text-size-adjust: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { font-family: var(--font-family); background-color: var(--background-color); color: var(--text-color); line-height: 1.6; min-height: 100vh; overflow-x: hidden; } .container { display: grid; grid-template-columns: minmax(0, 1fr) minmax(380px, 420px); height: 100vh; overflow: hidden; gap: 1px; background-color: var(--border-color); } .canvas-container { position: relative; background-color: #e2e8f0; display: flex; justify-content: center; align-items: center; padding: var(--spacing-md); overflow: hidden; transition: background-color var(--transition-speed); } canvas { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: var(--border-radius-md); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); } .right-panel { background-color: var(--panel-background); padding: var(--spacing-md); overflow-y: auto; scrollbar-width: thin; scrollbar-color: var(--background-color); } .panel-section { margin-bottom: var(--spacing-md); padding: var(--spacing-sm); } .right-panel::-webkit-scrollbar { width: 6px; } .right-panel::-webkit-scrollbar-track { background: var(--background-color); } .right-panel::-webkit-scrollbar-thumb { background-color: var(--primary-color); border-radius: var(--border-radius-sm); } .panel-section { margin-bottom: var(--spacing-xl); padding: var(--spacing-md); background-color: var(--panel-background); border-radius: var(--border-radius-md); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); } .panel-section h3 { font-size: 1.125rem; font-weight: 600; margin-bottom: var(--spacing-md); color: var(--text-color); position: relative; padding-bottom: var(--spacing-xs); } .panel-section h3::after { content: ''; position: absolute; bottom: 0; left: 0; width: 40px; height: 2px; background-color: var(--primary-color); } .skill-info { display: flex; flex-direction: column; align-items: center; gap: 4px; } .hero-image { position: absolute; border-radius: 50%; border: 2px solid white; object-fit: cover; pointer-events: none; } .cooldown { font-weight: 600; color: #2563eb; } .map-controls { position: absolute; bottom: 20px; right: 20px; display: flex; flex-direction: column; gap: 10px; background: rgba(255, 255, 255, 0.9); padding: 10px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .map-controls button { padding: var(--spacing-sm) var(--spacing-md); background-color: var(--primary-color); color: white; border: none; border-radius: var(--border-radius-sm); cursor: pointer; font-weight: 500; transition: all var(--transition-speed); user-select: none; } .map-controls button:hover { background-color: var(--primary-hover-color); transform: translateY(-1px); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .map-controls button.active { transform: translateY(0); } .canvas-wrapper { position: relative; overflow: hidden; width: 100%; height: 100%; border-radius: var(--border-radius-md); } .canvas-container { position: relative; cursor: grab; } .canvas-container.grabbing { cursor: grabbing; } .canvas-container.locked { cursor: not-allowed; } .level { font-size: 0.75rem; color: #64748b; background: #f1f5f9; padding: 2px 6px; border-radius: 12px; } td .skill-wrapper { display: flex; flex-direction: column; gap: 4px; } .controls-grid { display: grid; margin-top: 8px; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1rem; } .switch-label { display: flex; align-items: center; gap: 0.75rem; padding: 0.5rem; background-color: var(--background-color); border-radius: 6px; transition: background-color 0.2s; } .switch-label:hover { background-color: #e2e8f0; } .switch { position: relative; width: 36px; height: 20px; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; inset: 0; background-color: #cbd5e1; transition: 0.3s; border-radius: 20px; } .slider:before { content: ""; position: absolute; height: 16px; width: 16px; left: 2px; bottom: 2px; background-color: white; transition: 0.3s; border-radius: 50%; } input:checked + .slider { background-color: var(--primary-color); } input:checked + .slider:before { transform: translateX(16px); } .seekbar-container { padding: 1rem; margin-top: 1rem; background-color: var(--background-color); border-radius: 6px; } .seekbar-container label { display: block; margin-bottom: 0.75rem; font-weight: 500; } .seekbar-container input[type="range"] { width: 100%; height: 6px; background-color: #cbd5e1; border-radius: 3px; appearance: none; } .seekbar-container input[type="range"]::-webkit-slider-thumb { appearance: none; width: 18px; height: 18px; background-color: var(--primary-color); border-radius: 50%; cursor: pointer; border: 2px solid white; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .table-container { margin-top: var(--spacing-md); background-color: var(--panel-background); border-radius: var(--border-radius-md); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); overflow: hidden; } table { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: 0; font-size: 0.813rem; text-align-last: center; } th, td { padding: var(--spacing-sm) var(--spacing-md); text-align: left; border-bottom: 1px solid var(--border-color); } #cooldownTable th:first-child { width: 25%; } #heroTable th:first-child { width: 15%; } #heroTable th:nth-child(2) { width: 40%; } #heroTable th:nth-child(3), #heroTable th:nth-child(4) { width: 22.5%; } th { background-color: #f8fafc; font-weight: 600; color: #475569; position: sticky; top: 0; z-index: 10; } tr:hover { background-color: rgba(37, 99, 235, 0.05); } tr:last-child td { border-bottom: none; } .dialog-overlay { position: fixed; inset: 0; background: var(--modal-overlay-color); display: none; place-items: center; padding: var(--spacing-md); backdrop-filter: blur(4px); z-index: 1000; } .dialog-box { background: var(--panel-background); border-radius: var(--border-radius-lg); padding: var(--spacing-xl); width: 100%; max-width: 400px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); transform: translateY(0); transition: transform var(--transition-speed); } .dialog-box p { margin-bottom: 1.5rem; font-size: 1rem; } .dialog-actions { display: flex; justify-content: flex-end; } .dialog-actions button { padding: 0.75rem 1.5rem; background-color: var(--primary-color); color: white; border: none; border-radius: 6px; font-weight: 500; cursor: pointer; transition: background-color 0.2s; } .dialog-actions button:hover { background-color: var(--primary-hover-color); } @media (max-width: 1200px) { .container { grid-template-columns: minmax(0, 1fr) minmax(300px, 340px); } } @media (max-width: 1024px) { .container { grid-template-columns: 1fr; grid-template-rows: minmax(0, 1fr) auto; } .right-panel { height: 45vh; border-top: 1px solid var(--border-color); } .panel-section { margin-bottom: var(--spacing-md); } } @media (max-width: 768px) { html { font-size: 14px; } .right-panel { height: 50vh; padding: var(--spacing-md); } .controls-grid { grid-template-columns: 1fr; gap: var(--spacing-sm); } .table-container { margin-top: var(--spacing-sm); } th, td { padding: var(--spacing-xs) var(--spacing-sm); } } @media (max-width: 640px) { .controls-grid { grid-template-columns: 1fr; } .right-panel { padding: 1rem; height: 60vh; } .panel-section h3 { font-size: 1rem; } table { font-size: 0.75rem; } th, td { padding: 0.5rem; } } @media (max-width: 480px) { .right-panel { height: 60vh; } .dialog-box { padding: var(--spacing-lg); } button { padding: var(--spacing-xs) var(--spacing-sm); } } @media (hover: none) { button:hover { transform: none; } .canvas-container { touch-action: none; } } @media print { .container { display: block; height: auto; } .canvas-container { page-break-inside: avoid; } .right-panel { page-break-before: always; } } @media (max-width: 1024px) { .right-panel { height: 50vh; } } .zoom-controls { display: flex; flex-direction: row; margin-top: 8px; margin-bottom: 8px; background: var(--panel-background); padding: 8px; justify-content: space-evenly; align-items: center; } .zoom-controls button { padding: 8px; background: var(--primary-color); color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; } .zoom-controls button:hover { background: var(--primary-hover-color); } .zoom-controls .zoom-level { text-align: center; color: var(--text-color); align-content: center; font-size: 14px; font-weight: 500; }