.keyboard-container { outline: none; padding: 20px; user-select: none; } .keyboard-wrapper { display: flex; flex-direction: column; align-items: center; gap: 8px; } .kb-row { display: flex; gap: 6px; } .kb-offset-1 { margin-left: 30px; } .kb-offset-2 { margin-left: 15px; } .kb-space-row { margin-left: 15px; } .kb-key { position: relative; width: 80px; height: 80px; border: 2px solid #555; border-radius: 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; background: #2a2a2a; color: #fff; font-family: 'Segoe UI', sans-serif; transition: background 0.15s, transform 0.1s; overflow: hidden; } .kb-key:hover { background: #3a3a3a; transform: translateY(-2px); } .kb-key:active { transform: translateY(0); } .kb-key.on-cd { pointer-events: none; opacity: 0.7; } .kb-space { width: 520px; height: 80px; } .kb-shift { opacity: 0.85; } .key-label { font-size: 18px; font-weight: 700; z-index: 1; } .skill-name { font-size: 10px; opacity: 0.8; text-align: center; line-height: 1.2; z-index: 1; } .cd-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; } .cd-svg { width: 100%; height: 100%; } .cd-bg { fill: none; stroke: #333; stroke-width: 8; } .cd-progress { fill: none; stroke: #ff4444; stroke-width: 8; stroke-linecap: round; transform: rotate(-90deg); transform-origin: center; transition: stroke-dashoffset 0.1s linear; } .cd-text { position: absolute; font-size: 24px; font-weight: 700; color: #ff6666; text-shadow: 0 0 4px rgba(0, 0, 0, 0.8); } .kb-divider { color: #888; font-size: 14px; text-transform: uppercase; letter-spacing: 2px; margin: 16px 0 8px; padding-top: 12px; border-top: 1px solid #444; width: 80%; text-align: center; }