/*
 * 可選產品模組的共用樣式。
 * 現有 NV-3202P 使用的主要樣式仍在 product.css；本檔提供未來模組的版型。
 */
/* 購買內容模組：手機先看完整機體，再逐項確認隨附硬體。 */
.module-hardware-package-section { background: #f3f3ee; }
.module-hardware-package-heading { max-width: 780px; margin-left: 0; }
.hardware-package-layout { display: grid; grid-template-columns: minmax(260px, .72fr) minmax(0, 1.28fr); gap: 46px; align-items: start; }
.hardware-package-machine { position: sticky; top: 96px; margin: 0; text-align: center; }
.hardware-package-machine > img { width: min(100%, 430px); height: auto; max-height: 620px; margin: 0 auto; object-fit: contain; filter: drop-shadow(0 22px 25px rgba(8, 17, 31, .13)); }
.hardware-package-machine figcaption { max-width: 430px; display: grid; gap: 6px; margin: 18px auto 0; padding-top: 16px; border-top: 1px solid #d5d5cf; text-align: left; }
.hardware-package-machine figcaption span { color: var(--orange); font-size: 12px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.hardware-package-machine figcaption strong { color: var(--navy); font-size: 15px; line-height: 1.5; }
.hardware-package-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.hardware-package-item { position: relative; min-width: 0; min-height: 132px; display: grid; grid-template-columns: 28px 76px minmax(0, 1fr); gap: 12px; align-items: center; padding: 16px; border: 1px solid #deded8; border-top: 3px solid var(--orange); background: #fff; box-shadow: 0 8px 24px rgba(8, 17, 31, .045); }
.hardware-package-item:nth-child(odd):last-child { grid-column: 1 / -1; }
.hardware-package-number { align-self: start; padding-top: 3px; color: var(--orange); font-family: "Outfit", sans-serif; font-size: 12px; font-weight: 800; letter-spacing: .08em; }
.hardware-package-thumb { width: 76px; height: 76px; display: grid; place-items: center; padding: 4px; }
.hardware-package-thumb img { width: 100%; height: 100%; object-fit: contain; }
.hardware-package-copy { min-width: 0; }
.hardware-package-copy h3 { margin: 0; color: var(--navy); font-size: 17px; line-height: 1.25; }
.hardware-package-copy p { margin: 7px 0 0; color: var(--muted); font-size: 13px; line-height: 1.55; }

@media (max-width: 980px) {
    .hardware-package-layout { grid-template-columns: 1fr; gap: 38px; }
    .hardware-package-machine { position: static; }
    .hardware-package-machine > img { width: min(68vw, 360px); max-height: none; }
    .hardware-package-machine figcaption { max-width: 520px; }
}

@media (max-width: 600px) {
    .module-hardware-package-heading { margin-bottom: 28px; }
    .hardware-package-layout { gap: 30px; }
    .hardware-package-machine > img { width: min(78vw, 310px); }
    .hardware-package-machine figcaption { width: 100%; margin-top: 12px; padding-top: 14px; }
    .hardware-package-list { grid-template-columns: 1fr; gap: 9px; }
    .hardware-package-item, .hardware-package-item:nth-child(odd):last-child { grid-column: auto; min-height: 118px; grid-template-columns: 26px 72px minmax(0, 1fr); gap: 10px; padding: 13px 12px; }
    .hardware-package-thumb { width: 72px; height: 72px; }
    .hardware-package-copy h3 { font-size: 16px; }
    .hardware-package-copy p { margin-top: 5px; font-size: 12.5px; line-height: 1.48; }
}

@media (max-width: 370px) {
    .hardware-package-item, .hardware-package-item:nth-child(odd):last-child { grid-template-columns: 22px 62px minmax(0, 1fr); gap: 8px; }
    .hardware-package-thumb { width: 62px; height: 62px; }
}

.module-narrow { max-width: 920px; }

.module-notice-section { background: #f8f7f3; }
.module-notice { padding: 34px 38px; border-left: 5px solid #667085; background: #fff; }
.module-notice h2 { margin: 0; font-size: clamp(28px, 4vw, 42px); line-height: 1.2; }
.module-notice > p:last-child { margin: 14px 0 0; color: var(--muted); }
.module-notice-warning { border-left-color: var(--orange); background: #fff4ef; }
.module-notice-info { border-left-color: #356aa0; background: #f1f6fb; }

.module-media-section { background: #f8f7f3; }
.module-media { max-width: 980px; display: grid; grid-template-columns: 1fr 1fr; gap: 46px; align-items: center; }
.module-media.is-reversed .module-media-copy { order: 2; }
.module-media-copy h2 { margin: 0; font-size: clamp(34px, 4.2vw, 50px); line-height: 1.12; }
.module-media-copy > p:last-child { margin: 18px 0 0; color: var(--muted); }
.module-media-figure { min-height: 340px; margin: 0; background: #ecece7; }
.module-media-figure img { width: 100%; height: 100%; min-height: 340px; object-fit: cover; }
.module-media-figure.is-contain { display: grid; place-items: center; padding: 24px; background: #fff; }
.module-media-figure.is-contain img { width: 100%; height: auto; min-height: 0; margin: auto; object-fit: contain; }
.module-media-figure.is-contain.is-compact { padding: 34px; }
.module-media-figure.is-contain.is-compact img { width: 84%; max-height: 280px; }
.module-media-figure.is-contain.is-widescreen { min-height: 0; padding: 0; aspect-ratio: 16 / 9; }
.module-media-figure.is-contain.is-widescreen img { width: 100%; height: 100%; object-fit: contain; }

.module-video-section { background: var(--navy); color: #fff; }
.module-video-section .section-heading > p:last-child { color: rgba(255,255,255,.58); }
.module-video-frame { position: relative; overflow: hidden; aspect-ratio: 16 / 9; background: #000; }
.module-video-frame iframe, .module-video-link, .module-video-link video, .module-video-player, .module-video-missing { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.module-video-player { display: block; object-fit: contain; background: #000; }
.module-video-link { display: block; overflow: hidden; color: #fff; }
.module-video-link video { object-fit: cover; pointer-events: none; transition: transform .35s ease, opacity .35s ease; }
.module-video-link:hover video, .module-video-link:focus-visible video { opacity: .88; transform: scale(1.018); }
.module-video-link:focus-visible { outline: 3px solid var(--orange-light); outline-offset: -3px; }
.module-video-external-label { position: absolute; right: 14px; bottom: 14px; padding: 7px 10px; background: rgba(8,17,31,.82); color: #fff; font-size: 12px; font-weight: 800; letter-spacing: .04em; }

.module-video-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.module-video-card { overflow: hidden; border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.05); }
.module-video-card-copy { padding: 22px 24px 24px; }
.module-video-card-copy h3 { margin: 0; color: #fff; font-size: 21px; }
.module-video-card-copy p { margin: 9px 0 0; color: rgba(255,255,255,.58); font-size: 14px; }

.module-process-section { background: #e7e7e1; }
.module-process-list { margin: 0; padding: 0; list-style: none; }
.module-process-list li { display: grid; grid-template-columns: 54px 1fr; gap: 20px; padding: 24px 0; border-top: 1px solid #cfcfca; }
.module-process-list li > span { color: var(--orange); font-family: "Outfit", sans-serif; font-weight: 700; }
.module-process-list h3 { margin: 0 0 6px; font-size: 20px; }
.module-process-list p { margin: 0; color: var(--muted); }

.module-flow { display: grid; grid-template-columns: repeat(var(--flow-stages), minmax(0, 1fr)); gap: 34px; align-items: stretch; }
.module-flow-stage { position: relative; display: flex; }
.module-flow-nodes { width: 100%; display: grid; align-content: center; gap: 10px; }
.module-flow-node { min-height: 94px; display: flex; flex-direction: column; justify-content: center; padding: 18px; border: 1px solid #cacbc6; border-top: 3px solid var(--orange); background: #fff; text-align: center; box-shadow: 0 8px 24px rgba(20,32,51,.04); }
.module-flow-node strong { font-size: 16px; line-height: 1.3; }
.module-flow-node span { margin-top: 5px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.module-flow-arrow { position: absolute; top: 50%; right: -27px; transform: translateY(-50%); color: var(--orange); font-family: "Outfit", sans-serif; font-size: 24px; font-weight: 700; }

.module-details-section, .module-downloads-section { background: #f8f7f3; }
.module-details-list, .module-value-list { margin: 0; }
.module-details-list > div, .module-value-list > div { display: grid; grid-template-columns: minmax(140px,.7fr) 1.3fr; gap: 24px; padding: 16px 0; border-top: 1px solid var(--line); }
.module-details-list dt, .module-value-list dt { color: var(--muted); font-size: 13px; font-weight: 700; }
.module-details-list dd, .module-value-list dd { margin: 0; font-weight: 700; }

.module-plan-section { background: #f8f7f3; }
.module-plan-shell { max-width: 980px; }
.module-plan-table-wrap { overflow-x: auto; border: 1px solid var(--line); background: #fff; }
.module-plan-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.module-plan-table th, .module-plan-table td { padding: 17px 20px; border-bottom: 1px solid #e3e3df; text-align: left; vertical-align: middle; }
.module-plan-table thead th { background: var(--navy); color: #fff; }
.module-plan-table thead th:not(:first-child) { border-left: 1px solid rgba(255,255,255,.14); }
.module-plan-table thead strong, .module-plan-table thead span { display: block; }
.module-plan-table thead span { margin-top: 3px; color: var(--orange-light); font-size: 12px; }
.module-plan-table tbody tr:nth-child(even) { background: #fafaf8; }
.module-plan-table tbody td { border-left: 1px solid #e3e3df; }
.plan-status { display: inline-flex; align-items: center; font-size: 13px; font-weight: 800; }
.plan-status-symbol { display: none; }
.plan-status.is-available { color: #08733f; }
.plan-status.is-limited { color: #9a6500; }
.plan-status.is-unavailable { color: #777d86; }
.module-plan-note { display: flex; gap: 10px; margin: 16px 0 0; padding: 15px 18px; border-left: 4px solid #d9a322; background: #fff7dc; color: #5f4a0c; font-size: 13px; font-weight: 600; }
.module-plan-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.module-plan-action-store { min-width: 230px; min-height: 60px; justify-content: flex-start; border-color: var(--navy); background: var(--navy); color: #fff; box-shadow: 0 12px 28px rgba(8,17,31,.16); }
.module-plan-action-store:hover, .module-plan-action-store:focus-visible { border-color: var(--orange); background: var(--orange); color: #fff; }
.module-plan-action-store svg { flex: 0 0 auto; }
.module-plan-action-store span:last-child { margin-left: auto; }

.module-download-list { display: grid; gap: 8px; }
.module-download-list a { display: flex; min-height: 58px; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 18px; border: 1px solid var(--line); background: #fff; font-weight: 700; text-decoration: none; }
.module-download-list a:hover { border-color: var(--orange); color: var(--orange); }

.operations-grid-1 { grid-template-columns: minmax(0, 680px); justify-content: center; }
.operations-grid-3 { grid-template-columns: repeat(3, 1fr); max-width: 1080px; }

@media (max-width: 760px) {
    /* 手機保留桌機的三欄比較表，方便直接橫向比較免費與訂閱方案。 */
    .module-plan-table-wrap { overflow: hidden; border: 1px solid var(--line); background: #fff; }
    .module-plan-table { width: 100%; table-layout: fixed; }
    .module-plan-table th, .module-plan-table td { padding: 11px 7px; font-size: 12px; line-height: 1.35; overflow-wrap: anywhere; }
    .module-plan-table thead th:first-child, .module-plan-table tbody th { width: 42%; }
    .module-plan-table thead th:not(:first-child), .module-plan-table tbody td { width: 29%; text-align: center; }
    .module-plan-table thead strong { font-size: 12px; line-height: 1.25; }
    .module-plan-table thead span { margin-top: 2px; font-size: 10px; line-height: 1.25; }
    .module-plan-table tbody th { font-size: 12px; font-weight: 700; }
    .module-plan-table tbody td::before { display: none; content: none; }
    .plan-status { justify-content: center; font-size: 11px; line-height: 1.3; }
    .plan-status.is-available .plan-status-symbol, .plan-status.is-unavailable .plan-status-symbol { width: 25px; height: 25px; display: inline-grid; place-items: center; font-size: 19px; font-weight: 900; line-height: 1; }
    .plan-status.is-available .plan-status-symbol { color: #079653; }
    .plan-status.is-unavailable .plan-status-symbol { color: #8b9199; }
    .plan-status.is-available .plan-status-text, .plan-status.is-unavailable .plan-status-text { display: none; }
    /* limited 狀態保留原文字；NV-3501P 的 Free Online matches 會顯示 4 次。 */
    .plan-status.is-limited .plan-status-symbol { display: none; }
    .plan-status.is-limited .plan-status-text { display: inline; }
    .module-plan-note { margin-top: 10px; padding: 11px 12px; font-size: 12px; line-height: 1.45; }
    .module-plan-actions, .module-plan-actions .button { width: 100%; }

    .module-flow { grid-template-columns: 1fr; gap: 34px; }
    .module-flow-arrow { top: auto; right: 50%; bottom: -31px; transform: translateX(50%) rotate(90deg); }
    .module-flow-node { min-height: 82px; }

    .module-video-grid { grid-template-columns: 1fr; }
    .module-media, .module-media.is-reversed { grid-template-columns: 1fr; gap: 28px; }
    .module-media.is-reversed .module-media-copy { order: initial; }
    .module-media-figure, .module-media-figure img { min-height: 260px; }
    .operations-grid-3 { grid-template-columns: 1fr; }
}

@media (max-width: 460px) {
    .module-notice { padding: 26px 22px; }
    .module-plan-table th, .module-plan-table td { padding: 9px 4px; font-size: 11px; }
    .module-plan-table thead strong, .module-plan-table tbody th { font-size: 11px; }
    .module-plan-table thead span, .plan-status { font-size: 10px; }
    .module-plan-note { padding: 10px; font-size: 11px; }
    .module-details-list > div, .module-value-list > div { grid-template-columns: 1fr; gap: 4px; }
}

/* 硬靶／軟靶支援：桌機與手機共用相同的緊湊雙欄版面。 */
.module-dartboard-support-section { background: #e7e7e1; }
.module-dartboard-support-shell { max-width: 920px; }
.module-dartboard-support-heading { max-width: 760px; margin-left: 0; }
.dartboard-support-grid { max-width: 560px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0 auto; }
.dartboard-support-card { min-width: 0; display: flex; flex-direction: column; margin: 0; padding: 11px 9px 13px; border-top: 3px solid var(--orange); background: #fff; box-shadow: 0 12px 32px rgba(8, 17, 31, .055); }
.dartboard-support-visual { aspect-ratio: 1 / 1; display: grid; place-items: center; }
.dartboard-support-visual img { width: 100%; height: 100%; max-width: 145px; max-height: 145px; object-fit: contain; }
.dartboard-support-card figcaption { margin-top: 8px; }
.dartboard-support-status { display: inline-flex; align-items: center; gap: 4px; color: #087f49; font-size: 10px; font-weight: 800; }
.dartboard-support-status > span { width: 17px; height: 17px; display: inline-grid; place-items: center; border-radius: 50%; background: #087f49; color: #fff; font-size: 10px; line-height: 1; }
.dartboard-support-card h3 { margin: 7px 0 0; color: var(--navy); font-size: 16px; line-height: 1.2; }
.dartboard-support-card p { margin: 5px 0 0; color: var(--muted); font-size: 11.5px; line-height: 1.45; }

@media (max-width: 600px) {
    .module-dartboard-support-heading { margin-bottom: 26px; }
}

/* 安卓平板功能：桌機雙欄、手機單欄大圖；圖片保持完整且不可覆蓋文字。 */
.module-tablet-features-section { background: #f8f7f3; }
.module-tablet-features-shell { max-width: 1040px; }
.module-tablet-features-heading { max-width: 780px; margin-left: 0; }
.tablet-features-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.tablet-feature-card { min-width: 0; display: grid; grid-template-rows: 320px auto; overflow: hidden; border: 1px solid #deded8; border-top: 3px solid var(--orange); background: #fff; box-shadow: 0 10px 28px rgba(8, 17, 31, .055); }
.tablet-feature-visual { box-sizing: border-box; min-width: 0; max-width: 100%; height: 320px; display: grid; place-items: center; overflow: hidden; margin: 0; padding: 16px; background: #eeeee9; }
.tablet-feature-visual img { display: block; width: 100%; height: 100%; max-width: 100%; max-height: 100%; object-fit: contain; }
.tablet-feature-card:not(.is-wide-image) .tablet-feature-visual img { width: auto; height: 100%; max-width: 100%; max-height: 100%; object-fit: contain; object-position: center; }
.tablet-feature-card.is-wide-image .tablet-feature-visual { padding: 24px 14px; }
.tablet-feature-copy { position: relative; z-index: 1; min-width: 0; padding: 20px 22px 22px; background: #fff; }
.tablet-feature-copy h3 { margin: 0; color: var(--navy); font-size: 21px; line-height: 1.25; }
.tablet-feature-copy p { margin: 9px 0 0; color: var(--muted); font-size: 14px; line-height: 1.55; }
.tablet-feature-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 14px 0 0; padding: 0; list-style: none; }
.tablet-feature-tags li { padding: 6px 9px; border: 1px solid #d5d7d2; background: #f5f5f1; color: var(--navy); font-size: 12px; font-weight: 800; line-height: 1; }

@media (max-width: 700px) {
    .module-tablet-features-heading { margin-bottom: 26px; }
    .tablet-features-grid { grid-template-columns: 1fr; gap: 9px; }
    .tablet-feature-card { display: block; }
    .tablet-feature-visual { width: 100%; height: clamp(180px, 56vw, 220px); min-height: 0; padding: 10px 16px 4px; }
    .tablet-feature-card.is-wide-image { display: block; }
    .tablet-feature-card.is-wide-image .tablet-feature-visual { width: 100%; height: auto; min-height: 0; padding: 10px 12px; }
    .tablet-feature-card.is-wide-image .tablet-feature-visual img { height: auto; aspect-ratio: 1448 / 305; }
    .tablet-feature-copy { padding: 13px 14px 14px; }
    .tablet-feature-copy h3 { font-size: 17px; }
    .tablet-feature-copy p { margin-top: 6px; font-size: 14px; line-height: 1.45; }
    .tablet-feature-tags { gap: 5px; margin-top: 10px; }
    .tablet-feature-tags li { padding: 5px 7px; font-size: 12px; }
}

@media (max-width: 380px) {
    .tablet-feature-copy { padding-right: 11px; padding-left: 11px; }
}
