.gcep-article-content pre {
position: relative;
}
.gcep-code-copy-btn {
position: absolute;
top: 8px;
right: 8px;
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
font-size: 11px;
font-weight: 700;
line-height: 1;
letter-spacing: 0.03em;
color: #e2e8f0;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 6px;
cursor: pointer;
opacity: 0;
transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
z-index: 2;
user-select: none;
-webkit-appearance: none;
appearance: none;
}
.gcep-article-content pre:hover .gcep-code-copy-btn,
.gcep-article-content pre:focus-within .gcep-code-copy-btn,
.gcep-code-copy-btn:focus {
opacity: 1;
}
.gcep-code-copy-btn:hover {
background: rgba(255, 255, 255, 0.16);
color: #ffffff;
border-color: rgba(255, 255, 255, 0.25);
}
.gcep-code-copy-btn:focus-visible {
outline: 2px solid #60a5fa;
outline-offset: 2px;
opacity: 1;
}
.gcep-code-copy-btn.is-copied {
background: rgba(34, 197, 94, 0.2);
border-color: rgba(34, 197, 94, 0.4);
color: #bbf7d0;
opacity: 1;
}
.gcep-code-copy-btn.is-error {
background: rgba(244, 63, 94, 0.2);
border-color: rgba(244, 63, 94, 0.4);
color: #fecdd3;
opacity: 1;
}
.gcep-code-copy-icon {
flex-shrink: 0;
}
.gcep-code-copy-label {
white-space: nowrap;
} @media (max-width: 640px) {
.gcep-code-copy-btn {
opacity: 0.9;
padding: 5px 8px;
font-size: 10px;
}
.gcep-code-copy-label {
display: none;
}
} .gcep-article-content pre:not([class*="background"]):not([style*="background"]) .gcep-code-copy-btn {
color: #e2e8f0;
}