/**
 * Layout Renderer - 訪客頁面布局渲染樣式
 *
 * @author Claude Code
 * @date 2025-01-15
 * @version 1.0.0
 */

/* ============================================================================
   背景層
   ============================================================================ */

.layout-background-overlay {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    transition: background-color var(--duration-slow) var(--ease-out);
}

/* ============================================================================
   聊天區塊位置
   ============================================================================ */

.visitor-chat-page.layout-position-center {
    margin-left: auto;
    margin-right: auto;
}

.visitor-chat-page.layout-position-left {
    margin-left: 5%;
    margin-right: auto;
}

.visitor-chat-page.layout-position-right {
    margin-left: auto;
    margin-right: 5%;
}

/* 自定義位置模式 - 使用絕對定位 */
.visitor-chat-page.layout-position-custom {
    position: absolute !important;
    margin: 0 !important;
    flex-grow: 0 !important;
}

/* 響應式位置調整
   對齊 JS: mobile (<768) + 手機橫放 (高度≤430px) + tablet-portrait (768-1024 且直式) = vertical 模式 */
@media (max-width: 767.98px),
       (max-height: 430px) and (orientation: landscape),
       (min-width: 768px) and (max-width: 1024px) and (orientation: portrait) {

    .visitor-chat-page.layout-position-left,
    .visitor-chat-page.layout-position-right {
        margin-left: auto;
        margin-right: auto;
    }

    /* vertical 模式強制回到置中模式 */
    .visitor-chat-page.layout-position-custom {
        position: relative !important;
        left: auto !important;
        top: auto !important;
        margin-left: auto !important;
        margin-right: auto !important;
        width: 100% !important;
        max-width: 100% !important;
    }
}

/* ============================================================================
   裝飾元素層
   ============================================================================ */

.layout-decorative-layer {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 1;
    overflow: hidden;
}

.layout-element {
    position: absolute;
    pointer-events: none;
    transition: opacity var(--duration-slow) var(--ease-out), transform var(--duration-slow) var(--ease-out);
}

.layout-element img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    user-select: none;
    -webkit-user-drag: none;
}

/* ============================================================================
   主題特定樣式
   ============================================================================ */

/* 深色主題 */
.visitor-chat-body.theme-dark {
    color: var(--neutral-100);
}

.visitor-chat-body.theme-dark .visitor-chat-page {
    background-color: rgba(30, 41, 59, 0.95);
    color: var(--neutral-100);
}

.visitor-chat-body.theme-dark .visitor-chat-header {
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

.visitor-chat-body.theme-dark .share-title {
    color: var(--neutral-100);
}

.visitor-chat-body.theme-dark .share-owner {
    color: var(--neutral-400);
}

.visitor-chat-body.theme-dark .message-input {
    background: rgba(15, 23, 42, 0.5);
    border-color: rgba(255, 255, 255, 0.1);
    color: var(--neutral-100);
}

.visitor-chat-body.theme-dark .message-input::placeholder {
    color: var(--neutral-500);
}

.visitor-chat-body.theme-dark .visitor-input-container {
    background: var(--footer-bg-color, rgba(30, 41, 59, 0.98));
    border-top-color: var(--footer-border-color, rgba(255, 255, 255, 0.1));
}

.visitor-chat-body.theme-dark .message-bubble.bot {
    background: rgba(15, 23, 42, 0.5);
    color: var(--neutral-100);
}

/* 企業主題 */
.visitor-chat-body.theme-corporate .visitor-chat-page {
    box-shadow: var(--shadow-xl);
}

/* 活潑主題 */
.visitor-chat-body.theme-playful .visitor-chat-page {
    box-shadow: var(--shadow-xl);
}

.visitor-chat-body.theme-playful .btn-primary {
    background: var(--primary);
}

.visitor-chat-body.theme-playful .btn-primary:hover {
    background: var(--primary-dark);
}

/* 極簡主題 */
.visitor-chat-body.theme-minimal .visitor-chat-page {
    box-shadow: none;
    border: 1px solid var(--neutral-200);
}

.visitor-chat-body.theme-minimal .visitor-chat-header {
    border-bottom: none;
}

/* ============================================================================
   過渡動畫
   ============================================================================ */

.visitor-chat-body,
.visitor-chat-page {
    transition: background-color var(--duration-slow) var(--ease-out), box-shadow var(--duration-slow) var(--ease-out);
}

/* ============================================================================
   嵌入模式樣式調整
   ============================================================================ */

.embed-mode .layout-decorative-layer {
    /* 嵌入模式下可能需要調整 z-index */
    z-index: 0;
}

.embed-mode.widget-mode .layout-decorative-layer {
    display: none;
}

/* ============================================================================
   簽名區塊 (分享者)
   ============================================================================ */

.layout-signature-block {
    position: absolute;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    user-select: none;
    transition: opacity var(--duration-slow) var(--ease-out);
    z-index: 20;
}

.layout-signature-block svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

/* 響應式：vertical 模式簽名區塊強制相對定位
   對齊 JS: mobile + 手機橫放 + tablet-portrait = vertical 模式 */
@media (max-width: 767.98px),
       (max-height: 430px) and (orientation: landscape),
       (min-width: 768px) and (max-width: 1024px) and (orientation: portrait) {
    .layout-signature-block {
        position: relative !important;
        left: auto !important;
        top: auto !important;
        margin: 8px auto;
        font-size: 12px !important;
        justify-content: center;
    }
}

/* ============================================================================
   打印樣式
   ============================================================================ */

@media print {

    .layout-background-overlay,
    .layout-decorative-layer,
    .layout-signature-block {
        display: none !important;
    }

    .visitor-chat-body {
        background: white !important;
    }

    .visitor-chat-page {
        box-shadow: none !important;
        border: 1px solid #ccc !important;
    }
}

/* ============================================================================
   對話排列樣式 (Layout Message Alignment)
   🔧 使用高特異性選擇器覆蓋 layout-template-mode 的預設樣式
   ============================================================================ */

/* 預設: 同側 (左) - 訪客訊息在左側 */
.layout-template-mode.layout-chat-alignment-left .message.message-visitor,
.layout-chat-alignment-left .message.message-visitor {
    flex-direction: row !important;
    align-self: flex-start !important;
}

/* 兩側排列 - 訪客訊息在右 */
.layout-template-mode.layout-chat-alignment-sides .message.message-visitor,
.layout-chat-alignment-sides .message.message-visitor {
    flex-direction: row-reverse !important;
    align-self: flex-end !important;
}

/* 🔧 移除硬編碼的氣泡圓角覆蓋，讓編輯器的四角設定生效
   用戶可以使用「對話氣泡」預設按鈕或獨立模式來設定想要的圓角效果 */

/* ============================================================================
   安全區域 (Safe Zone) - 實現所見即所得
   ============================================================================ */

.layout-safe-zone-wrapper {
    position: fixed;
    inset: 0;
    width: 100vw;
    height: var(--app-height);
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    z-index: 10;
    overflow: hidden;
}

.layout-safe-zone {
    width: 1920px;
    height: 1080px;
    position: relative;
    pointer-events: auto;
    transform-origin: center center;
    /* 允許內容溢出安全區域，讓超出邊界的裝飾元素（如圖片一部分）仍能顯示 */
    overflow: visible;
}

/* ============================================================================
   🆕 視圖模式 (One Data, Two Views 架構)
   ============================================================================ */

/* ========== View A: Scale Fit (桌面/平板橫向) ========== */
.layout-view-scale .layout-safe-zone-wrapper {
    display: flex;
}

.layout-view-scale .visitor-chat-page {
    /* 保持絕對定位，由 LayoutRenderer 設定具體位置 */
}

/* ========== View B: Vertical Flow (手機/平板直向) ========== */
.layout-view-vertical {
    display: flex;
    flex-direction: column;
    min-height: var(--app-height);
    overflow-x: hidden;
}

.layout-view-vertical .layout-safe-zone-wrapper {
    display: none !important;
}

.layout-view-vertical .visitor-chat-page {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    width: 100% !important;
    height: var(--app-height) !important;
    max-width: 100% !important;
    margin: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    transform: none !important;

    /* Flexbox 垂直布局 */
    display: flex;
    flex-direction: column;
}

.layout-view-vertical .visitor-chat-page.layout-vertical-mode {
    /* 確保垂直模式標記生效 */
}

.layout-view-vertical .visitor-chat-header {
    flex-shrink: 0;
    order: 0;
}

.layout-view-vertical .visitor-chat-messages {
    flex: 1 1 auto;
    order: 1;
    overflow-y: auto;
}

.layout-view-vertical .visitor-input-container {
    flex-shrink: 0;
    order: 2;
    position: sticky;
    bottom: 0;
    z-index: var(--z-sticky);
}

/* 🆕 垂直模式輸入區域：強制橫向排列（輸入框 + 發送按鈕同一排） */
.layout-view-vertical .input-controls {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    gap: 8px;
}

.layout-view-vertical .input-wrapper {
    flex: 1;
    min-width: 0;
}

.layout-view-vertical .send-btn {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    min-width: 44px;
    align-self: center !important;
}

/* 垂直模式下隱藏按鈕文字 */
.layout-view-vertical .send-btn span[data-i18n] {
    display: none;
}

/* 裝飾元素處理 */
.layout-view-vertical .layout-element {
    display: none;  /* 預設隱藏 */
}

.layout-view-vertical .layout-element[data-vertical-behavior="flow"] {
    display: block;
    position: relative;
    margin: 16px auto;
    max-width: 90%;
}

/* 雙層模式下，flow 元素使用絕對定位（由 JS 設定座標），不套用垂直流 CSS */
.layout-dual-layer-mode .layout-element[data-vertical-behavior="flow"] {
    position: absolute;
    margin: 0;
    max-width: none;
}

.layout-view-vertical .layout-element[data-vertical-behavior="background"] {
    display: block;
    position: fixed;
    z-index: -1;
    opacity: 0.15;
    filter: blur(8px);
    pointer-events: none;
}

/* 簽名區塊垂直模式 - 放在輸入框下方 */
.layout-view-vertical .layout-signature-block {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    width: 100%;
    margin: 0 !important;
    padding: 6px 16px !important;
    font-size: 11px !important;
    text-align: center;
    justify-content: center;
    background: transparent !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    opacity: 0.6;
}

/* 簽名區塊在輸入容器內的樣式 */
.layout-view-vertical .visitor-input-container .layout-signature-block {
    border-top: 1px solid var(--chat-border-color, rgba(0, 0, 0, 0.06));
    padding-top: 8px !important;
    margin-top: 8px !important;
}

/* 🆕 浮水印垂直模式 - 放在輸入框下方 */
.layout-view-vertical .powered-by-watermark {
    position: relative !important;
    bottom: auto !important;
    right: auto !important;
    left: auto !important;
    width: 100%;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 4px;
    padding: 6px 16px !important;
    margin: 0 !important;
    font-size: 10px !important;
    text-align: center;
    background: transparent !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    opacity: 0.5;
    z-index: auto !important;
}

/* 浮水印在輸入容器內的樣式 */
.layout-view-vertical .visitor-input-container .powered-by-watermark {
    padding-top: 4px !important;
    padding-bottom: 8px !important;
    /* env(safe-area-inset-bottom) 處理 iPhone 底部安全區域 */
    padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)) !important;
}

/* 當簽名區塊和浮水印同時存在時，只顯示一個分隔線 */
.layout-view-vertical .visitor-input-container .layout-signature-block + .powered-by-watermark {
    border-top: none;
    padding-top: 0 !important;
    margin-top: 0 !important;
}

/* ========== 過渡動畫 ========== */
.visitor-chat-page,
.layout-element,
.layout-signature-block,
.powered-by-watermark {
    transition: var(--hover-transition);
}

@media (prefers-reduced-motion: reduce) {
    .visitor-chat-page,
    .layout-element,
    .layout-signature-block,
    .powered-by-watermark {
        transition: none;
    }
}