/* Google AdSense 佈局偏移優化 CSS
 * 解決 CLS (Cumulative Layout Shift) 問題
 * 針對性能分析中發現的「強制自動重排」問題
 */

/* AdSense 容器預留空間 */
.adsense-container {
    /* 為廣告預留固定空間，防止佈局偏移 */
    min-height: 250px; /* 根據廣告尺寸調整 */
    width: 100%;
    display: block;
    position: relative;
    background: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 4px;
    margin: 20px 0;
    
    /* 防止內容跳動 */
    contain: layout style;
    will-change: auto;
}

/* 不同尺寸的廣告容器 */
.adsense-container.banner-728x90 {
    min-height: 90px;
    max-width: 728px;
    margin: 0 auto;
}

.adsense-container.rectangle-300x250 {
    min-height: 250px;
    max-width: 300px;
}

.adsense-container.leaderboard-728x90 {
    min-height: 90px;
    max-width: 728px;
}

.adsense-container.skyscraper-160x600 {
    min-height: 600px;
    max-width: 160px;
}

/* 廣告載入中的佔位符 */
.adsense-container::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 40px;
    height: 40px;
    border: 3px solid #e9ecef;
    border-top: 3px solid #007bff;
    border-radius: 50%;
    animation: adsense-loading 1s linear infinite;
    opacity: 0.7;
}

/* 廣告載入完成後隱藏佔位符 */
.adsense-container.loaded::before {
    display: none;
}

/* 載入動畫 */
@keyframes adsense-loading {
    0% { transform: translate(-50%, -50%) rotate(0deg); }
    100% { transform: translate(-50%, -50%) rotate(360deg); }
}

/* 廣告載入失敗時的樣式 */
.adsense-container.error {
    background: #f8d7da;
    border-color: #f5c6cb;
    color: #721c24;
    text-align: center;
    padding: 20px;
    font-size: 14px;
}

.adsense-container.error::before {
    display: none;
}

.adsense-container.error::after {
    content: '廣告載入失敗';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

/* 響應式廣告優化 */
@media (max-width: 768px) {
    .adsense-container.banner-728x90 {
        min-height: 50px;
        max-width: 320px;
    }
    
    .adsense-container.rectangle-300x250 {
        min-height: 200px;
        max-width: 280px;
    }
}

/* 防止廣告影響頁面佈局 */
.content-with-ads {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
    contain: layout;
}

/* 側邊欄廣告 */
.sidebar-ad {
    position: sticky;
    top: 20px;
    contain: layout style;
}

/* 文章內廣告 */
.inline-ad {
    margin: 30px 0;
    text-align: center;
    contain: layout;
}

/* 頁首廣告 */
.header-ad {
    margin-bottom: 20px;
    contain: layout;
}

/* 頁尾廣告 */
.footer-ad {
    margin-top: 20px;
    contain: layout;
}

/* 廣告標籤 */
.ad-label {
    font-size: 12px;
    color: #6c757d;
    text-align: center;
    margin-bottom: 5px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* 延遲載入的廣告 */
.adsense-lazy {
    opacity: 0;
    transition: opacity 0.3s ease-in-out;
}

.adsense-lazy.loaded {
    opacity: 1;
}

/* 廣告容器的性能優化 */
.adsense-container {
    /* 使用 GPU 加速 */
    transform: translateZ(0);
    
    /* 優化重繪 */
    backface-visibility: hidden;
    
    /* 減少重排 */
    contain: layout style paint;
}

/* 防止廣告腳本影響頁面性能 */
.adsense-script-container {
    contain: strict;
    isolation: isolate;
}

/* 廣告載入狀態指示器 */
.ad-loading-indicator {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 20px;
    height: 20px;
    background: rgba(0, 123, 255, 0.1);
    border-radius: 50%;
    animation: pulse 2s infinite;
}

@keyframes pulse {
    0% { opacity: 0.3; }
    50% { opacity: 1; }
    100% { opacity: 0.3; }
}

/* 隱藏已載入的指示器 */
.adsense-container.loaded .ad-loading-indicator {
    display: none;
}

/* 廣告阻擋器檢測 */
.adblocker-notice {
    display: none;
    background: #fff3cd;
    border: 1px solid #ffeaa7;
    color: #856404;
    padding: 15px;
    border-radius: 4px;
    text-align: center;
    margin: 20px 0;
}

.adblocker-detected .adblocker-notice {
    display: block;
}

.adblocker-detected .adsense-container {
    display: none;
}

/* 廣告性能監控 */
.adsense-performance-monitor {
    position: fixed;
    bottom: 10px;
    right: 10px;
    background: rgba(0, 0, 0, 0.8);
    color: white;
    padding: 10px;
    border-radius: 4px;
    font-size: 12px;
    z-index: 9999;
    display: none;
}

.adsense-performance-monitor.show {
    display: block;
}

/* 調試模式樣式 */
.debug-mode .adsense-container {
    border: 2px dashed #dc3545;
    background: rgba(220, 53, 69, 0.1);
}

.debug-mode .adsense-container::after {
    content: 'AdSense Container';
    position: absolute;
    top: 5px;
    left: 5px;
    background: #dc3545;
    color: white;
    padding: 2px 6px;
    font-size: 10px;
    border-radius: 2px;
}