/* Workbooks shop: scoped to .nv-shop. Sizes in px because the site root font size is about 9.4px. */
.nv-shop { background: #f2f2f2; }
.nv-shop .dt-container { max-width: 1120px; margin-left: auto; margin-right: auto; }
.nv-shop .nv-shop-intro { max-width: 700px; margin: 0 auto 28px; text-align: center; font-size: 14.5px; line-height: 1.6; color: #4a4f63; }
.nv-shop .nv-eyebrow { display: block; margin: 0 0 4px; font-size: 11.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--dt-pri-color, #e4572e); }

/* Flip cards */
.nv-card-grid { display: grid; grid-template-columns: repeat(auto-fill, 230px); gap: 22px; justify-content: center; }
.nv-flip { width: 230px; max-width: 100%; height: 420px; perspective: 1200px; outline-offset: 4px; cursor: pointer; }
.nv-flip-inner { position: relative; width: 100%; height: 100%; transition: transform .6s ease; transform-style: preserve-3d; }
.nv-flip:hover .nv-flip-inner, .nv-flip:focus-within .nv-flip-inner, .nv-flip.is-flipped .nv-flip-inner { transform: rotateY(180deg); }
.nv-flip-front, .nv-flip-back { position: absolute; inset: 0; backface-visibility: hidden; -webkit-backface-visibility: hidden; border-radius: 12px; overflow: hidden; border: 1px solid #d9dde9; box-shadow: 0 6px 18px rgba(18, 24, 66, .12); }
.nv-flip-front { background: #fff; display: flex; flex-direction: column; }
.nv-flip-front img { width: 100%; aspect-ratio: 1 / 1.414; height: auto; object-fit: cover; display: block; }
.nv-flip-caption { padding: 12px 14px; }
.nv-flip-caption h2 { margin: 0 0 4px; font-size: 15px; line-height: 1.3; font-weight: 800; color: var(--dt-sec-color, #121842); }
.nv-flip-badge { position: absolute; top: 10px; right: 10px; z-index: 2; min-width: 56px; padding: 9px 10px; border-radius: 999px; background: var(--dt-pri-color, #e4572e); color: #fff; font-size: 15px; font-weight: 800; line-height: 1; text-align: center; box-shadow: 0 3px 10px rgba(18, 24, 66, .28); border: 2px solid #fff; transform: rotate(8deg); }
.nv-flip-price { margin: 0; font-size: 15px; font-weight: 800; color: var(--dt-pri-color, #e4572e); }
.nv-flip-back { transform: rotateY(180deg); background: var(--dt-sec-color, #121842); color: #fff; padding: 20px 18px; display: flex; flex-direction: column; justify-content: center; gap: 11px; }
.nv-flip-back h2 { margin: 0; font-size: 16px; font-weight: 800; color: #fff; }
.nv-flip-back p { margin: 0; font-size: 12.5px; line-height: 1.5; color: #d4d9ea; }
.nv-flip-back ul { margin: 0; padding: 0; list-style: none; font-size: 12.5px; color: #fff; }
.nv-flip-back li { padding: 4px 0; border-top: 1px solid rgba(255, 255, 255, .18); }
.nv-flip-back .dt-btn { align-self: flex-start; font-size: 13px; padding: 9px 18px; }

/* Product page */
.nv-product-grid { display: grid; grid-template-columns: 400px minmax(0, 1fr); gap: 32px; align-items: start; }
.nv-product-gallery { position: sticky; top: 96px; }
.nv-viewer { position: relative; border-radius: 12px; border: 1px solid #d9dde9; background: #fff; box-shadow: 0 6px 18px rgba(18, 24, 66, .12); overflow: hidden; user-select: none; -webkit-user-select: none; }
.nv-viewer img { width: 100%; height: auto; display: block; -webkit-user-drag: none; pointer-events: none; }
.nv-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 34px; height: 34px; border: 0; border-radius: 50%; background: rgba(18, 24, 66, .72); color: #fff; font-size: 22px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0 0 3px; }
.nv-nav:hover, .nv-nav:focus-visible { background: var(--dt-pri-color, #e4572e); }
.nv-prev { left: 8px; }
.nv-next { right: 8px; }
.nv-viewer-cap { margin: 10px 0 8px; font-size: 13px; font-weight: 700; text-align: center; color: var(--dt-sec-color, #121842); }
.nv-thumbs { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; min-height: 4px; }
.nv-thumbs button { padding: 0; border: 2px solid transparent; border-radius: 6px; background: #fff; cursor: pointer; overflow: hidden; line-height: 0; }
.nv-thumbs button.is-active { border-color: var(--dt-pri-color, #e4572e); }
.nv-thumbs img { width: 64px; height: auto; display: block; pointer-events: none; }
.nv-viewer-note { margin: 10px 0 0; font-size: 11.5px; line-height: 1.5; text-align: center; color: #6b7088; }

.nv-product-info { background: #fff; border: 1px solid #d9dde9; border-radius: 12px; padding: 22px 24px; box-shadow: 0 6px 18px rgba(18, 24, 66, .08); }
.nv-product-name { margin: 0 0 8px; font-size: 24px; line-height: 1.2; font-weight: 800; color: var(--dt-sec-color, #121842); }
.nv-product-price { margin: 0 0 10px; font-size: 22px; font-weight: 800; color: var(--dt-pri-color, #e4572e); }
.nv-product-price small { font-size: 12px; font-weight: 400; color: #666; }
.nv-product-price span + small { margin-left: 8px; }
.nv-product-short { font-size: 14px; line-height: 1.6; color: #4a4f63; }
.nv-buybox { margin: 14px 0 18px; }
.nv-buy-disabled { display: inline-block; padding: 10px 20px; border-radius: 8px; background: #e6e8f0; color: #4a4f63; font-size: 13px; font-weight: 500; }
.nv-product-info h3 { margin: 18px 0 8px; font-size: 16px; font-weight: 800; color: var(--dt-sec-color, #121842); }
.nv-filelist { margin: 0; padding: 0; list-style: none; font-size: 13px; line-height: 1.5; color: #4a4f63; }
.nv-aud { margin: 0; padding-left: 20px; font-size: 13px; line-height: 1.6; color: #4a4f63; }
.nv-file { margin-bottom: 6px; padding: 8px 12px; border: 1px solid #e3e6f0; border-radius: 8px; cursor: pointer; transition: background .15s, border-color .15s; }
.nv-file:hover, .nv-file:focus-visible { background: #f7f8fc; border-color: #c4c9dd; outline: none; }
.nv-file.is-active { border-color: var(--dt-pri-color, #e4572e); background: #fff7f3; }
.nv-file strong { color: var(--dt-sec-color, #121842); }
.nv-file span { display: inline-block; margin-left: 6px; padding: 0 7px; border-radius: 9px; background: #f2f2f2; font-size: 11.5px; color: #4a4f63; }
.nv-complete { margin: 10px 0 0; padding: 10px 12px; border-radius: 8px; background: #f2f7fb; font-size: 12.5px; line-height: 1.5; color: #35506a; }
.nv-tool-link { margin-top: 16px; font-size: 13px; }
.nv-product-body { grid-column: 1 / -1; max-width: 760px; margin: 10px auto 0; font-size: 14px; line-height: 1.7; color: #4a4f63; }
.nv-product-body h3 { margin: 22px 0 8px; font-size: 17px; font-weight: 800; color: var(--dt-sec-color, #121842); }
.nv-product-body p { margin: 0 0 12px; }
.nv-product-body ul { padding-left: 20px; margin: 0 0 12px; }

@media (max-width: 900px) {
  .nv-product-grid { grid-template-columns: 1fr; gap: 22px; }
  .nv-product-gallery { position: static; max-width: 420px; margin: 0 auto; }
  .nv-product-info { padding: 18px 16px; }
  .nv-product-name { font-size: 22px; }
}
@media (prefers-reduced-motion: reduce) { .nv-flip-inner { transition: none; } }

/* Embedded checkout, thank-you and personal downloads pages */
.nv-buy-live { margin: 14px 0 6px; }
.nv-buy-note { margin: 10px 0 0; font-size: 12px; line-height: 1.5; color: #6b7088; }
.nv-downloads .dt-container { max-width: 760px; }
.nv-dl-list { display: grid; gap: 16px; margin: 6px 0 28px; }
.nv-dl { background: #fff; border: 1px solid #d9dde9; border-radius: 12px; padding: 20px 22px; box-shadow: 0 6px 18px rgba(18, 24, 66, .08); }
.nv-dl-title { margin: 0 0 12px; font-size: 18px; font-weight: 800; color: var(--dt-sec-color, #121842); }
.nv-dl-row { display: flex; flex-wrap: wrap; gap: 10px; }
.nv-dl-btn { font-size: 14px; padding: 10px 20px; }
.nv-dl-hint { margin: 12px 0 0; font-size: 12.5px; color: #6b7088; }
.nv-dl-msg { margin: 0; padding: 16px 18px; border-radius: 10px; background: #fff; border: 1px solid #d9dde9; font-size: 14px; color: #4a4f63; }
.nv-resend { background: #fff; border: 1px solid #d9dde9; border-radius: 12px; padding: 18px 22px; margin-bottom: 24px; }
.nv-resend h2 { margin: 0 0 10px; font-size: 16px; font-weight: 800; color: var(--dt-sec-color, #121842); }
.nv-resend-form { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
.nv-resend-form label { flex: 1 1 100%; font-size: 13px; color: #4a4f63; }
.nv-resend-form input { flex: 1 1 240px; padding: 10px 12px; border: 1px solid #c4c9dd; border-radius: 8px; font-size: 14px; }
.nv-dl-foot { font-size: 12.5px; line-height: 1.6; color: #6b7088; text-align: center; }
