/* inf-block/style.css */

/* --- 共用樣式 --- */
.wp-block-theme-embed-block {
margin: 1.5em 0;
contain: layout style;
overflow-anchor: none;
}

.wp-block-theme-embed-block:has(.inf-block-embed-container.is-aspect-ratio-9-16) {
contain-intrinsic-size: auto var(--inf-block-embed-intrinsic-height, 675px);
}

.wp-block-theme-embed-block:has(.inf-block-embed-container:not(.is-aspect-ratio-9-16)) {
contain-intrinsic-size: auto var(--inf-block-embed-intrinsic-height, 360px);
}

.inf-block-embed-container {
position: relative;
width: 100%;
height: auto;
aspect-ratio: 16 / 9;
overflow: hidden;
max-width: 100%;
background: #000;
}

.inf-block-embed-container iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

.inf-block-embed-container > .fc-video-embed {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
max-width: 100%;
margin: 0;
overflow: hidden;
}

.inf-block-embed-container > .fc-video-embed .fc-video-embed__wrapper {
width: 100%;
height: 100%;
max-width: 100%;
aspect-ratio: auto;
border-radius: inherit;
overflow: hidden;
}

.inf-block-embed-container > .fc-video-embed .fc-video-facade,
.inf-block-embed-container > .fc-video-embed .fc-video-embed__iframe,
.inf-block-embed-container > .fc-video-embed .fc-video-facade__iframe,
.inf-block-embed-container > .fc-video-embed iframe {
max-width: 100%;
max-height: 100%;
}

.inf-block-embed-container > .fc-video-embed .fc-video-facade {
overflow: hidden;
}

.inf-block-embed-container > .fc-video-embed .fc-video-facade__content {
position: absolute !important;
left: clamp(10px, 2.2vw, 18px);
right: clamp(10px, 2.2vw, 18px);
bottom: clamp(10px, 2.2vw, 18px);
z-index: 1;
display: grid !important;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: clamp(10px, 2vw, 16px);
width: auto !important;
max-width: calc(100% - clamp(20px, 4.4vw, 36px));
min-width: 0;
padding: 0 !important;
box-sizing: border-box;
overflow: hidden;
pointer-events: none;
}

.inf-block-embed-container > .fc-video-embed .fc-video-facade__copy {
min-width: 0;
overflow: hidden;
}

.inf-block-embed-container > .fc-video-embed .fc-video-facade__action {
pointer-events: auto;
}

.inf-block-embed-container > .fc-video-embed .fc-video-facade__action--play {
width: clamp(44px, 8vw, 64px);
height: clamp(44px, 8vw, 64px);
}

/* --- Info Card General Styles --- */
.inf-block-info-card {
display: flex;
align-items: center;
justify-content: flex-start;
margin-bottom: 15px;
width: 100%;
background-color: #f9f9f9;
padding: 10px;
border-left: 5px solid #ff0034;
box-sizing: border-box;
}

.inf-block-info-card .details {
display: flex;
flex-direction: column;
justify-content: center;
flex-grow: 1;
min-width: 0;
}

.inf-block-info-card .title {
font-size: 18px;
font-weight: bold;
color: #333;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin: 0;
}

.inf-block-info-card .author {
font-size: 14px;
color: #777;
margin-top: 5px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

/* --- YouTube Specific Card Styles --- */
.inf-block-info-card.is-youtube img {
border-radius: 50% !important;
width: 60px !important;
height: 60px !important;
margin: 0 15px 0 0 !important;
object-fit: cover !important;
flex-shrink: 0;
border: none !important;
}

/* --- Google Maps Specific Card Styles --- */
.inf-block-info-card.is-gmap {
border-left-color: #4285F4;
}

.inf-block-info-card.is-gmap img {
border-radius: 4px !important;
width: 60px !important;
height: 60px !important;
margin: 0 15px 0 0 !important;
object-fit: cover !important;
flex-shrink: 0;
border: none !important;
}

/* --- Default Icon Styles (Font Awesome Version) --- */
.inf-block-default-icon-wrapper {
display: flex;
align-items: center;
justify-content: center;
width: 60px;
height: 60px;
margin: 0 15px 0 0;
flex-shrink: 0;
background-color: #e9e9e9;
border-radius: 50%;
font-size: 28px;
color: #555;
}

.inf-block-default-icon-wrapper.is-youtube-icon {
color: #FF0000;
}
.inf-block-default-icon-wrapper.is-youtube-icon::before {
font-family: "Font Awesome 5 Brands", "FontAwesome";
content: "\f167";
}

.inf-block-default-icon-wrapper.is-gmap-icon {
width: 60px;
height: 60px;
border-radius: 50%;
color: #4285F4;
}
.inf-block-default-icon-wrapper.is-gmap-icon::before {
font-family: "Font Awesome 5 Free", "FontAwesome";
font-weight: 900;
content: "\f3c5";
}

/* --- Clickable Link Styles --- */
.inf-block-info-card-link,
.inf-block-info-card-link:hover {
display: block;
text-decoration: none;
color: inherit;
}

.inf-block-info-card-link .inf-block-info-card {
transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
}

/* --- Theme Specific Overrides --- */
#si-single-content .inf-block-info-card img {
max-width: none !important;
}

/* --- Aspect Ratio Classes --- */
.is-aspect-ratio-16-9 { aspect-ratio: 16 / 9; height: auto; padding-bottom: 0; width: 100%; max-width: 100%; }
.is-aspect-ratio-4-3 { aspect-ratio: 4 / 3; height: auto; padding-bottom: 0; width: 100%; max-width: 100%; }
.is-aspect-ratio-1-1 { aspect-ratio: 1 / 1; height: auto; padding-bottom: 0; max-width: min(100%, 540px); margin: 0 auto; }
.is-aspect-ratio-21-9 { aspect-ratio: 21 / 9; height: auto; padding-bottom: 0; width: 100%; max-width: 100%; }
.is-aspect-ratio-9-16 { aspect-ratio: 9 / 16; height: auto; padding-bottom: 0; max-width: min(100%, 380px); margin: 0 auto; } /* Mobile vertical */

/* --- Twitch Specific Styles --- */
.inf-block-info-card.is-twitch {
border-left-color: #9146FF;
}

.inf-block-default-icon-wrapper.is-twitch-icon {
color: #9146FF;
}
.inf-block-default-icon-wrapper.is-twitch-icon::before {
font-family: "Font Awesome 5 Brands", "FontAwesome";
content: "\f1e8";
}

/* --- YouTube Shorts Specific Styles --- */
.inf-block-info-card.is-youtube-shorts {
border-left-color: #FF0000;
}

/* YouTube Shorts embed container - 支援 9:16 直式居中與 16:9 滿寬橫式 */
.inf-block-embed-container.is-shorts-player.is-aspect-ratio-9-16,
.inf-block-embed-container.is-aspect-ratio-9-16 {
max-width: min(100%, 380px);
margin: 0 auto;
aspect-ratio: 9 / 16;
height: auto;
padding-bottom: 0;
}

.inf-block-embed-container.is-shorts-player.is-aspect-ratio-16-9,
.inf-block-embed-container.is-shorts-player:not(.is-aspect-ratio-9-16) {
max-width: 100%;
margin: 0;
aspect-ratio: 16 / 9;
height: auto;
padding-bottom: 0;
}

/* ── 9:16 直式橫向並排（最多支援 3 欄） ── */
/* 適用於 Gutenberg 原生「欄位」區塊 (wp-block-columns) */
.wp-block-columns:has(.wp-block-theme-embed-block) {
align-items: start;
gap: clamp(0.75rem, 2vw, 1.25rem);
}

.wp-block-column:has(.wp-block-theme-embed-block) {
min-width: 0;
flex-basis: 0;
flex-grow: 1;
}

.wp-block-column .wp-block-theme-embed-block {
margin: 0;
width: 100%;
}

.wp-block-column .inf-block-embed-container.is-aspect-ratio-9-16 {
max-width: 100% !important;
width: 100% !important;
margin: 0 auto;
}

/* ── 跨裝置平板版長寬比切換 (Tablet Aspect Ratio Override) ── */
@media (min-width: 681px) and (max-width: 1024px) {
    .inf-block-embed-container.is-tablet-aspect-ratio-9-16 {
        aspect-ratio: 9 / 16 !important;
        max-width: min(100%, 360px) !important;
        margin: 0 auto !important;
    }
    .inf-block-embed-container.is-tablet-aspect-ratio-16-9 {
        aspect-ratio: 16 / 9 !important;
        max-width: 100% !important;
        margin: 0 !important;
    }
    .inf-block-embed-container.is-tablet-aspect-ratio-1-1 {
        aspect-ratio: 1 / 1 !important;
        max-width: min(100%, 460px) !important;
        margin: 0 auto !important;
    }
    .inf-block-embed-container.is-tablet-aspect-ratio-4-3 {
        aspect-ratio: 4 / 3 !important;
        max-width: 100% !important;
        margin: 0 !important;
    }
    .inf-block-embed-container.is-tablet-aspect-ratio-21-9 {
        aspect-ratio: 21 / 9 !important;
        max-width: 100% !important;
        margin: 0 !important;
    }
}

/* ── 跨裝置手機版長寬比切換 (Mobile Aspect Ratio Override) ── */
@media (max-width: 680px) {
    .inf-block-embed-container.is-mobile-aspect-ratio-9-16 {
        aspect-ratio: 9 / 16 !important;
        max-width: min(100%, 380px) !important;
        margin: 0 auto !important;
    }
    .inf-block-embed-container.is-mobile-aspect-ratio-16-9 {
        aspect-ratio: 16 / 9 !important;
        max-width: 100% !important;
        margin: 0 !important;
    }
    .inf-block-embed-container.is-mobile-aspect-ratio-1-1 {
        aspect-ratio: 1 / 1 !important;
        max-width: min(100%, 420px) !important;
        margin: 0 auto !important;
    }
    .inf-block-embed-container.is-mobile-aspect-ratio-4-3 {
        aspect-ratio: 4 / 3 !important;
        max-width: 100% !important;
        margin: 0 !important;
    }
    .inf-block-embed-container.is-mobile-aspect-ratio-21-9 {
        aspect-ratio: 21 / 9 !important;
        max-width: 100% !important;
        margin: 0 !important;
    }

    /* 手機版非 Slider 時自動垂直斷行堆疊（單欄不擠壓） */
    .wp-block-columns:has(.wp-block-theme-embed-block:not(.is-slider-item)) {
        flex-direction: column !important;
        flex-wrap: wrap !important;
        gap: 1.25rem !important;
    }

    .wp-block-columns:has(.wp-block-theme-embed-block:not(.is-slider-item)) > .wp-block-column {
        flex-basis: 100% !important;
        width: 100% !important;
        max-width: 100% !important;
    }

    .wp-block-columns:has(.wp-block-theme-embed-block:not(.is-slider-item)) .inf-block-embed-container.is-aspect-ratio-9-16 {
        max-width: min(100%, 380px) !important;
        margin: 0 auto !important;
    }
}

/* ── 橫向滑動輪播 Slider 軌道 (支援 6-7 則直式手機版等橫向平滑滾動) ── */
.inf-block-slider-container {
    position: relative !important;
}

.inf-block-slider-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 10;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: rgba(15, 23, 42, 0.72);
    color: #ffffff;
    border: 1px solid rgba(255, 255, 255, 0.22);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.28);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: opacity 0.25s ease, transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), background 0.2s ease, box-shadow 0.2s ease, color 0.2s ease;
    opacity: 0.92;
    padding: 0;
}

.inf-block-slider-arrow:hover {
    opacity: 1 !important;
    background: rgba(15, 23, 42, 0.92);
    transform: translateY(-50%) scale(1.1);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.38);
    color: #ffffff;
}

.inf-block-slider-arrow:active {
    transform: translateY(-50%) scale(0.95);
    background: rgba(15, 23, 42, 0.98);
}

.inf-block-slider-arrow.is-prev {
    left: -10px;
}

.inf-block-slider-arrow.is-next {
    right: -10px;
}

.inf-block-slider-arrow.is-hidden {
    opacity: 0 !important;
    pointer-events: none !important;
    visibility: hidden !important;
    transform: translateY(-50%) scale(0.8) !important;
}

@media (max-width: 680px) {
    .inf-block-slider-arrow {
        width: 32px;
        height: 32px;
        opacity: 0.92;
    }
    .inf-block-slider-arrow.is-prev {
        left: -4px;
    }
    .inf-block-slider-arrow.is-next {
        right: -4px;
    }
}

.wp-block-columns:has(.wp-block-theme-embed-block.is-slider-item),
.wp-block-columns.is-style-slider,
.wp-block-columns.has-inf-slider,
.inf-block-slider,
.inf-block-slider-track {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    justify-content: flex-start !important;
    align-items: stretch !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x pan-y;
    gap: clamp(0.75rem, 1.8vw, 1.25rem) !important;
    padding: 0.35rem 0.25rem 0.85rem 0.25rem !important;
    margin: 1.25rem 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    scrollbar-width: none !important; /* 隱藏原生粗糙捲軸，保留滑順觸控與箭頭滑動 */
    -ms-overflow-style: none !important;
}

.wp-block-columns:has(.wp-block-theme-embed-block.is-slider-item)::-webkit-scrollbar,
.wp-block-columns.is-style-slider::-webkit-scrollbar,
.wp-block-columns.has-inf-slider::-webkit-scrollbar,
.inf-block-slider::-webkit-scrollbar,
.inf-block-slider-track::-webkit-scrollbar {
    display: none !important;
    height: 0 !important;
    width: 0 !important;
}

/* 僅在大型電腦螢幕且無溢位時置中，絕不干擾手機與平板滾動 */
@media (min-width: 1025px) {
    .inf-block-slider-container.no-overflow .inf-block-slider-track {
        justify-content: center !important;
    }
}

.wp-block-columns.is-style-slider::-webkit-scrollbar-track,
.wp-block-columns.has-inf-slider::-webkit-scrollbar-track,
.inf-block-slider::-webkit-scrollbar-track,
.inf-block-slider-track::-webkit-scrollbar-track {
    background: transparent;
}

.wp-block-columns:has(.wp-block-theme-embed-block.is-slider-item)::-webkit-scrollbar-thumb,
.wp-block-columns.is-style-slider::-webkit-scrollbar-thumb,
.wp-block-columns.has-inf-slider::-webkit-scrollbar-thumb,
.inf-block-slider::-webkit-scrollbar-thumb,
.inf-block-slider-track::-webkit-scrollbar-thumb {
    background: rgba(148, 163, 184, 0.4);
    border-radius: 999px;
}

.wp-block-columns:has(.wp-block-theme-embed-block.is-slider-item)::-webkit-scrollbar-thumb:hover,
.wp-block-columns.is-style-slider::-webkit-scrollbar-thumb:hover,
.wp-block-columns.has-inf-slider::-webkit-scrollbar-thumb:hover,
.inf-block-slider::-webkit-scrollbar-thumb:hover,
.inf-block-slider-track::-webkit-scrollbar-thumb:hover {
    background: rgba(100, 116, 139, 0.65);
}

/* Slider 卡片寬度自適應（桌面） */
.wp-block-columns:has(.wp-block-theme-embed-block.is-slider-item) > .wp-block-column,
.wp-block-columns.is-style-slider > .wp-block-column,
.wp-block-columns.has-inf-slider > .wp-block-column,
.inf-block-slider .wp-block-theme-embed-block,
.inf-block-slider-card {
    flex: 0 0 clamp(240px, 24vw, 290px) !important;
    min-width: clamp(240px, 24vw, 290px) !important;
    max-width: 320px !important;
    width: auto !important;
    scroll-snap-align: start;
    margin: 0 !important;
    box-sizing: border-box !important;
}

/* 緊湊寬度 (Compact - 適合 6~7 則密集滾動) */
.wp-block-columns:has(.wp-block-theme-embed-block.is-slider-width-compact) > .wp-block-column,
.is-slider-width-compact .inf-block-slider-card {
    flex: 0 0 clamp(200px, 20vw, 240px) !important;
    min-width: clamp(200px, 20vw, 240px) !important;
}

/* 寬鬆寬度 (Large) */
.wp-block-columns:has(.wp-block-theme-embed-block.is-slider-width-large) > .wp-block-column,
.is-slider-width-large .inf-block-slider-card {
    flex: 0 0 clamp(280px, 28vw, 340px) !important;
    min-width: clamp(280px, 28vw, 340px) !important;
}

/* ── 2 欄並排模式 (2 Columns) ── */
.inf-block-slider-container.is-columns-2 .inf-block-slider-card {
    flex: 0 0 calc((100% - 1.25rem) / 2) !important;
    min-width: 280px !important;
    max-width: 50% !important;
}

/* ── 3 欄並排模式 (3 Columns) ── */
.inf-block-slider-container.is-columns-3 .inf-block-slider-card {
    flex: 0 0 calc((100% - 2.5rem) / 3) !important;
    min-width: 220px !important;
    max-width: 35% !important;
}

/* ── 滿版均分模式 (Full Width Grid) ── */
@media (min-width: 681px) {
    .inf-block-slider-container.is-full-width.is-columns-2 .inf-block-slider-track {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        overflow-x: visible !important;
        width: 100% !important;
        gap: 1.25rem !important;
    }
    .inf-block-slider-container.is-full-width.is-columns-2 .inf-block-slider-card {
        flex: 1 1 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
    }

    .inf-block-slider-container.is-full-width.is-columns-3 .inf-block-slider-track {
        display: grid !important;
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
        overflow-x: visible !important;
        width: 100% !important;
        gap: 1.25rem !important;
    }
    .inf-block-slider-container.is-full-width.is-columns-3 .inf-block-slider-card {
        flex: 1 1 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
    }

    .inf-block-slider-container.is-full-width .inf-block-slider-arrow {
        display: none !important;
    }
}

/* Slider 卡片內部 9:16 寬度填滿 */
.wp-block-columns:has(.wp-block-theme-embed-block.is-slider-item) .inf-block-embed-container,
.wp-block-columns.is-style-slider .inf-block-embed-container,
.inf-block-slider-card .inf-block-embed-container {
    width: 100% !important;
    max-width: 100% !important;
}

/* 平板版 Slider (可一次看 3~4 則並往右滾動) */
@media (min-width: 681px) and (max-width: 1024px) {
    .wp-block-columns:has(.wp-block-theme-embed-block.is-slider-item) > .wp-block-column,
    .wp-block-columns.is-style-slider > .wp-block-column,
    .inf-block-slider-card {
        flex: 0 0 250px !important;
        min-width: 250px !important;
    }
}

/* 手機版 Slider (直式 9:16 橫向 Peek 滑動滾動，完美支援從第1則滑動至最後一則) */
@media (max-width: 680px) {
    .wp-block-columns:has(.wp-block-theme-embed-block.is-slider-item),
    .wp-block-columns.is-style-slider,
    .wp-block-columns.has-inf-slider,
    .inf-block-slider,
    .inf-block-slider-track {
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        justify-content: flex-start !important;
        overflow-x: auto !important;
        padding-left: 0.5rem !important;
        padding-right: 1.5rem !important;
        padding-bottom: 0.85rem !important;
        scroll-padding-left: 0.5rem !important;
        scroll-padding-right: 1.5rem !important;
    }

    .wp-block-columns:has(.wp-block-theme-embed-block.is-slider-item) > .wp-block-column,
    .wp-block-columns.is-style-slider > .wp-block-column,
    .wp-block-columns.has-inf-slider > .wp-block-column,
    .inf-block-slider-card {
        flex: 0 0 74vw !important;
        min-width: 220px !important;
        max-width: 290px !important;
        width: 74vw !important;
        scroll-snap-align: start !important;
    }
}

/* --- Podcast Player Styles (Fixed Version) --- */

/* ✅ 通用 Podcast 容器設定 - 使用 !important 確保覆蓋 aspect-ratio */
.inf-block-embed-container.is-podcast-player {
position: relative !important;
padding-bottom: 0 !important; /* 強制移除 padding-bottom，防止被 aspect-ratio 影響 */
height: auto !important; /* 強制重置高度 */
aspect-ratio: auto !important;
overflow: visible !important; /* 允許內容正常顯示 */
}

.inf-block-embed-container.is-podcast-player iframe {
position: relative !important; /* 改為 relative，讓高度可以自然呈現 */
width: 100% !important;
height: 100% !important;
}

/* Spotify Podcast - 修正為標準高度 152px */
.inf-block-embed-container.is-podcast-player.is-spotify-player {
height: 152px !important;
}

/* Apple Podcasts - 小尺寸播放器 */
.inf-block-embed-container.is-podcast-player.is-apple-player {
height: 175px !important;
}

/* Apple Podcasts - 大尺寸播放器 */
.inf-block-embed-container.is-podcast-player.is-apple-player.is-apple-podcast-large {
height: 450px !important;
}

/* 強制修正 Spotify 播放器高度 */
.inf-block-embed-container.is-spotify-player {
position: relative; /* 確保 iframe 的絕對定位有效 */
height: 352px !important; /* Spotify 預設的嵌入高度，您可以調整 */
padding-bottom: 0 !important; /* 非常重要！強制覆蓋長寬比樣式 */
}

/* 針對小尺寸的 Spotify 播放器 */
.inf-block-embed-container.is-spotify-player iframe[src*="compact=1"] {
height: 152px !important;
}

/* ========================================
   Dark Mode Support
   ======================================== */

body.fc-dark-mode .inf-block-info-card,
body.hd-dark-mode .inf-block-info-card,
body.dark-mode .inf-block-info-card {
background-color: #2d2d2d;
}

body.fc-dark-mode .inf-block-info-card .title,
body.hd-dark-mode .inf-block-info-card .title,
body.dark-mode .inf-block-info-card .title {
color: #e8e6e3;
}

body.fc-dark-mode .inf-block-info-card .author,
body.hd-dark-mode .inf-block-info-card .author,
body.dark-mode .inf-block-info-card .author {
color: #a0a0a0;
}

body.fc-dark-mode .inf-block-default-icon-wrapper,
body.hd-dark-mode .inf-block-default-icon-wrapper,
body.dark-mode .inf-block-default-icon-wrapper {
background-color: #404040;
}

body.fc-dark-mode .inf-block-embed-container,
body.hd-dark-mode .inf-block-embed-container,
body.dark-mode .inf-block-embed-container {
background: #1a1a1a;
}
