/* global React */
const { useState: useDYEndState } = React;

// ============================================================
// Dynamic CDN, Enquiry form + FAQ + Final CTA
// ============================================================
const DY_END_CSS = `
/* ---------- Enquiry ---------- */
.DY-enq{position:relative;background:#0F2A47;color:#fff;padding:var(--section-pad-y-d) 0;font-family:'Inter','Noto Sans HK','Noto Sans TC',sans-serif;overflow:hidden}
.DY-enq::before{content:'';position:absolute;top:-220px;right:-220px;width:600px;height:600px;background:radial-gradient(circle,rgba(167,139,250,0.18) 0%,transparent 70%);pointer-events:none}
.DY-enq::after{content:'';position:absolute;bottom:-220px;left:-220px;width:500px;height:500px;background:radial-gradient(circle,rgba(124,58,237,0.13) 0%,transparent 70%);pointer-events:none}

.DY-enq-inner{position:relative;display:grid;grid-template-columns:0.9fr 1.1fr;gap:72px;align-items:start}
.DY-enq-h2{margin:0;font-size:clamp(36px,4.2vw,56px);line-height:1.08;font-weight:700;letter-spacing:-1.6px;color:#fff;text-wrap:balance}
.DY-enq-h2 .accent{background:linear-gradient(135deg,#C4B5FD 0%,#A855F7 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.DY-enq-lede{margin-top:22px;font-size:16.5px;line-height:1.7;color:rgba(255,255,255,0.74);max-width:480px;text-wrap:pretty}

.DY-enq-form{background:rgba(255,255,255,0.04);border:1px solid rgba(196,181,253,0.16);border-radius:22px;padding:38px 36px;backdrop-filter:blur(8px)}
.DY-enq-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 16px}
.DY-enq-field{display:flex;flex-direction:column;gap:8px}
.DY-enq-field.full{grid-column:1 / -1}
.DY-enq-field label{font-size:13px;font-weight:600;color:rgba(196,181,253,0.7);letter-spacing:.3px;text-transform:uppercase;font-family:'Chakra Petch','Inter',sans-serif}
.DY-enq-field label .req{color:#C4B5FD;margin-left:3px}
.DY-enq-field input,.DY-enq-field select,.DY-enq-field textarea{appearance:none;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.14);border-radius:10px;padding:12px 14px;color:#fff;font-family:inherit;font-size:14.5px;line-height:1.5;transition:border-color .15s,background .15s}
.DY-enq-field input:focus,.DY-enq-field select:focus,.DY-enq-field textarea:focus{outline:0;border-color:#C4B5FD;background:rgba(255,255,255,0.10)}
.DY-enq-field input::placeholder,.DY-enq-field textarea::placeholder{color:rgba(255,255,255,0.75)}
.DY-enq-field select{background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='8'%20viewBox='0%200%2012%208'%3E%3Cpath%20d='M1%201l5%205%205-5'%20stroke='%23C4B5FD'%20stroke-width='1.8'%20fill='none'%20stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}
.DY-enq-field textarea{min-height:96px;resize:vertical}

.DY-enq-phone{display:grid;grid-template-columns:96px 1fr;gap:8px}
.DY-enq-phone select{padding-right:30px;background-position:right 8px center}

.DY-enq-submit{margin-top:24px;display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}
.DY-enq-note{font-size:13px;color:rgba(255,255,255,0.75);max-width:340px;line-height:1.6}
.DY-enq-btn{appearance:none;border:0;cursor:pointer;display:inline-flex;align-items:center;gap:10px;padding:16px 32px;font-family:'Noto Sans HK','Inter',sans-serif;font-size:15px;font-weight:700;color:#0F2A47;background:linear-gradient(135deg,#C4B5FD 0%,#A855F7 100%);border-radius:999px;text-decoration:none;letter-spacing:.2px;box-shadow:0 8px 22px rgba(167,139,250,0.32);transition:all .15s}
.DY-enq-btn:hover{background:linear-gradient(135deg,#A855F7 0%,#9333EA 100%);transform:translateY(-1px);box-shadow:0 12px 28px rgba(167,139,250,0.45)}

@media (max-width: 1024px){
  .DY-enq{padding:var(--section-pad-y-t) 0}
  .DY-enq-inner{grid-template-columns:1fr;gap:48px}
}
@media (max-width: 640px){
  .DY-enq{padding:var(--section-pad-y-m) 0}
  .DY-enq-form{padding:28px 22px}
  .DY-enq-grid{grid-template-columns:1fr}
}

/* ---------- FAQ ---------- */
.DY-faq{position:relative;background:linear-gradient(180deg,#F6F4FB 0%,#FAFAFE 100%);padding:var(--section-pad-y-d) 0;font-family:'Inter','Noto Sans HK','Noto Sans TC',sans-serif;color:#0F2A47;border-top:1px solid rgba(15,42,71,0.06)}
.DY-faq-head{max-width:780px;margin-bottom:48px}
.DY-faq-h2{margin:0;font-size:clamp(36px,4.2vw,56px);line-height:1.08;font-weight:700;letter-spacing:-1.6px;color:#0F2A47;text-wrap:balance}
.DY-faq-h2 .accent{background:linear-gradient(135deg,#A855F7 0%,#7C3AED 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.DY-faq-lede{margin-top:18px;font-size:16px;line-height:1.7;color:#475569;max-width:560px}

.DY-faq-list{border-top:1px solid rgba(15,42,71,0.12)}
.DY-faq-item{border-bottom:1px solid rgba(15,42,71,0.12)}
.DY-faq-q{appearance:none;background:transparent;border:0;width:100%;padding:24px 0;display:grid;grid-template-columns:1fr 24px;align-items:center;gap:32px;text-align:left;cursor:pointer;font-family:inherit;color:inherit}
.DY-faq-q-text{font-size:18px;font-weight:600;color:#0F2A47;letter-spacing:-.2px;line-height:1.45;text-wrap:balance}
.DY-faq-toggle{width:24px;height:24px;color:#A855F7;display:flex;align-items:center;justify-content:center;transition:transform .25s ease}
.DY-faq-item.open .DY-faq-toggle{transform:rotate(45deg)}
.DY-faq-toggle svg{width:18px;height:18px}
.DY-faq-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease}
.DY-faq-item.open .DY-faq-a{grid-template-rows:1fr}
.DY-faq-a > div{overflow:hidden;min-height:0}
.DY-faq-a p{margin:0 0 24px;font-size:15.5px;line-height:1.8;color:#475569;text-wrap:pretty;max-width:880px}
.DY-faq-a p strong{color:#0F2A47;font-weight:600}

@media (max-width: 1024px){ .DY-faq{padding:var(--section-pad-y-t) 0} }
@media (max-width: 640px){
  .DY-faq{padding:var(--section-pad-y-m) 0}
  .DY-faq-q-text{font-size:16px}
  .DY-faq-a p{font-size:14.5px}
}

/* ---------- Final CTA ---------- */
.DY-fcta{background:#0F2A47;color:#fff;padding:var(--section-pad-y-d) 0;position:relative;overflow:hidden;font-family:'Inter','Noto Sans HK','Noto Sans TC',sans-serif}
.DY-fcta::before{content:'';position:absolute;top:-200px;right:-200px;width:600px;height:600px;background:radial-gradient(circle,rgba(139,92,246,0.18) 0%,transparent 70%);pointer-events:none}
.DY-fcta::after{content:'';position:absolute;bottom:-180px;left:-180px;width:500px;height:500px;background:radial-gradient(circle,rgba(139,92,246,0.10) 0%,transparent 70%);pointer-events:none}
.DY-fcta-inner{position:relative;display:grid;grid-template-columns:1.3fr 1fr;gap:64px;align-items:end}
.DY-fcta-h2{margin:0;font-size:clamp(36px,4.4vw,60px);line-height:1.05;font-weight:700;letter-spacing:-1.8px;color:#fff;text-wrap:balance}
.DY-fcta-h2 .accent{background:linear-gradient(135deg,#C4B5FD 0%,#A855F7 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.DY-fcta-body{margin-top:22px;font-size:16.5px;line-height:1.75;color:rgba(255,255,255,0.78);max-width:540px;text-wrap:pretty}
.DY-fcta-tel{margin-top:18px;font-size:14px;color:rgba(255,255,255,0.6)}
.DY-fcta-tel a{color:#fff;text-decoration:none;border-bottom:1px dotted rgba(255,255,255,0.4);font-weight:600;margin-left:8px}
.DY-fcta-actions{display:flex;flex-direction:column;gap:12px;align-items:stretch}
.DY-fcta-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:18px 28px;font-size:15.5px;font-weight:600;letter-spacing:.3px;border-radius:999px;text-decoration:none;transition:all .15s;white-space:nowrap;border:1.5px solid transparent}
.DY-fcta-btn.primary{color:#0F2A47;background:#fff;border-color:#fff}
.DY-fcta-btn.primary:hover{background:#c4b5fd;border-color:#c4b5fd;transform:translateY(-1px)}
.DY-fcta-btn.outline{color:#fff;background:transparent;border-color:rgba(255,255,255,0.40)}
.DY-fcta-btn.outline:hover{border-color:#fff;background:rgba(255,255,255,0.06)}

@media (max-width: 900px){ .DY-fcta-inner{grid-template-columns:1fr;gap:36px;align-items:start} }
`;

// FAQ items, condensed from markdown
const DY_FAQS = [
  { q: '動態 CDN 與一般 CDN 有何分別？', a: '一般 CDN 主要快取靜態網頁資源（圖片、JS、CSS）；動態 CDN 在此基礎上針對 WebSocket、REST / GraphQL / gRPC API、實時數據流優化，包括邊緣 SSL / TLS termination、最佳線路自動選擇、持久連接、動態內容預擷取等。如業務涉及即時通訊、交易、遊戲或 API 密集型應用，建議使用動態 CDN。' },
  { q: 'UD 動態 CDN 支援哪些協定？', a: 'WebSocket、REST、GraphQL、gRPC、HTTP/3、QUIC 全面支援。針對 fintech 與 SaaS API 密集型業務最常用的 keep-alive、HTTP/2 multiplexing、TLS 1.3 等優化亦內建。' },
  { q: '動態 CDN 如何幫助 latency-sensitive 業務（金融 / 遊戲）？', a: '動態 CDN 在邊緣節點建立持久 WebSocket 連接並完成 TLS termination，往返延遲僅為毫秒級。配合最佳線路自動選擇，網絡擠塞時自動繞道，避免單一線路故障影響業務。對金融交易與多玩家遊戲等對延遲極度敏感的場景尤其關鍵。' },
  { q: '如何同時服務本港、中國與全球用戶？', a: '可在同一帳戶內同時啟用本港、中國、全球三套區域 plan，並按用戶來源自動分配到對應節點。亦可選用智能 CDN 自動將不同地區流量導向最佳線路。' },
  { q: '服務中國內地用戶需要 ICP 備案嗎？', a: '不需要。UD 動態 CDN 採用中國電信 CN2 GIA 專線連接中國周邊節點，毋須申請 ICP 備案即可服務內地用戶。' },
  { q: 'UD 動態 CDN 包含哪些安全防護？', a: '所有動態 CDN 流量自動隱藏源站真實位址，並內建免費 Let\u0027s Encrypt SSL 證書、網頁應用程式防火牆與 DDoS 防護。針對 API 可額外設定速率限制（rate limiting）與 IP 白名單，減低濫用與機器人攻擊風險。' },
  { q: '如何將現有 WebSocket / API 接入 UD 動態 CDN？', a: '登入 UD CDN 控制台輸入動態網域、驗證擁有權，再將網域指向 UD CDN 即時生效。毋須變更現有後端 WebSocket 伺服器、API gateway 或應用架構，可於同一個工作天內完成。' },
  { q: '動態 CDN 與影片 CDN、智能 CDN 如何配合？', a: '動態 CDN 主要處理實時 API 與 WebSocket 即時數據；影片 CDN 負責直播與點播影片資源；智能 CDN 負責跨區域流量分配。三者可同時啟用，覆蓋實時、影音、跨域的全業務場景，例如直播平台可同時使用影片 CDN 推送直播訊號，動態 CDN 處理觀眾聊天與即時投票。' },
  { q: '高並發 concurrency 如何處理？', a: '邊緣節點按地理就近原則分散接受 WebSocket 連接與 API 請求，源站只處理核心邏輯。如預期並發極高（例如交易時段或大型賽事直播聊天室），建議提前透過 Enquiry Form 通知銷售團隊，預留專屬資源。' },
  { q: '適合哪些業務？', a: '適合金融科技、外匯與加密貨幣交易、線上遊戲、即時通訊、視訊會議、編輯協作工具、即時電商搶購、IoT 平台、直播互動服務、需要即時 API 回應的雲端軟件等業務。' },
];

function DynamicEnquiry() {
  return (
    <>
      <style>{DY_END_CSS}</style>
      <section className="DY-enq" id="enquiry" data-screen-label="06 Enquiry">
        <div className="container DY-enq-inner">
          <div>
            <h2 className="DY-enq-h2">與我們的 <span className="accent">動態 CDN 專家</span>對談</h2>
            <p className="DY-enq-lede">
              若你需要客製化 WebSocket / API 整合、運營高並發實時平台、或同時部署多區域節點，
              請填寫以下表格，香港團隊會盡快跟進。
            </p>
          </div>

          <CdnEnquiryForm prefix="dy" />
        </div>
      </section>
    </>
  );
}

function DynamicFAQ() {
  const [open, setOpen] = useDYEndState(0);
  return (
    <section className="DY-faq" id="faq" data-screen-label="07 FAQ">
      <div className="container">
        <div className="DY-faq-head">
          <h2 className="DY-faq-h2">常見 <span className="accent">問題</span></h2>
          <p className="DY-faq-lede">如以上未能解答你的疑問，歡迎直接聯絡我們的香港工程團隊。</p>
        </div>
        <div className="DY-faq-list">
          {DY_FAQS.map((f, i) => (
            <div className={`DY-faq-item ${open === i ? 'open' : ''}`} key={i}>
              <button className="DY-faq-q" onClick={() => setOpen(open === i ? -1 : i)} aria-expanded={open === i}>
                <span className="DY-faq-q-text">{f.q}</span>
                <span className="DY-faq-toggle" aria-hidden="true">
                  <svg viewBox="0 0 18 18" fill="none">
                    <line x1="9" y1="2" x2="9" y2="16" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" />
                    <line x1="2" y1="9" x2="16" y2="9" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" />
                  </svg>
                </span>
              </button>
              <div className="DY-faq-a"><div><p>{f.a}</p></div></div>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}

function DynamicFinalCTA() {
  return (
    <section className="DY-fcta" data-screen-label="08 Final CTA">
      <div className="container DY-fcta-inner">
        <div>
          <h2 className="DY-fcta-h2">讓實時業務<br /><span className="accent">毫秒級回應每位用戶</span></h2>
          <p className="DY-fcta-body">免費試用、按用量收費、毋須長期合約。由香港團隊為你規劃最合適的動態 CDN 配置。</p>
          <p className="DY-fcta-tel">服務查詢熱線：<a href="tel:+85225547545" data-cta="open-call-sales">(+852) 2554 7545</a></p>
        </div>
        <div className="DY-fcta-actions">
          <a className="DY-fcta-btn primary" href="https://passport.8338.hk/zh-hant/signup" data-cta="start-trial">免費試用 →</a>
          <a className="DY-fcta-btn outline" href="#enquiry" data-cta="contact-sales">與 CDN 專家對談</a>
        </div>
      </div>
    </section>
  );
}

window.DynamicEnquiry = DynamicEnquiry;
window.DynamicFAQ = DynamicFAQ;
window.DynamicFinalCTA = DynamicFinalCTA;
