.hts-app-card{box-sizing:border-box;max-width:850px;margin:24px auto;padding:0;background:var(--ad-surface,#fff);border:1px solid #d6dfe8;border-radius:14px;overflow:hidden;box-shadow:0 7px 30px rgba(13,42,79,.09);color:var(--ad-text,#233b55);font-family:inherit}.hts-app-card *{box-sizing:border-box}.hts-app-intro{background:var(--ad-navy,#0d2a4f);padding:30px 34px 25px;color:#fff;border-bottom:5px solid var(--ad-gold,#ab8538)}.hts-app-intro h2{font-size:29px;line-height:1.25;color:#fff;margin:7px 0!important}.hts-app-intro p{color:#e9eef5!important;font-size:15px;line-height:1.6;margin:8px 0 0}.hts-app-platform{display:inline-block;color:#fff;font-weight:700;font-size:12px;letter-spacing:.06em;text-transform:uppercase}.hts-app-download-layout{display:grid;grid-template-columns:245px minmax(0,1fr);align-items:center;gap:32px;padding:31px 34px}.hts-app-qr-area{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px 12px;background:var(--ad-muted,#eef2f7);border-radius:10px}.hts-app-qr{min-width:192px;min-height:192px;background:white;display:flex;align-items:center;justify-content:center;padding:11px;border:1px solid #dce3eb;border-radius:6px}.hts-app-qr svg{display:block;width:180px;height:180px;max-width:100%;image-rendering:pixelated}.hts-app-qr-area span{font-size:13px;font-weight:700;color:var(--ad-navy,#0d2a4f)}.hts-app-actions{min-width:0}.hts-app-actions h3{color:var(--ad-navy,#0d2a4f);font-size:21px;margin:0 0 7px!important}.hts-app-actions p{margin:0 0 18px!important;line-height:1.6;font-size:14px;color:var(--ad-text,#233b55)}.hts-app-download-button{background:var(--ad-button,#0d2a4f);display:inline-flex;gap:9px;justify-content:center;align-items:center;text-decoration:none!important;border:0;border-radius:6px;color:white!important;padding:12px 22px;font-size:15px;font-weight:700;margin-bottom:20px;transition:filter .2s}.hts-app-download-button:hover{filter:brightness(1.15)}.hts-app-actions label{display:block;font-size:13px;font-weight:700;margin-bottom:7px;color:var(--ad-navy,#0d2a4f)}.hts-app-copy-line{display:flex;align-items:stretch;gap:7px;min-width:0}.hts-app-copy-line input{flex:1;min-width:0!important;width:100%;padding:10px!important;background:#f7f9fc!important;border:1px solid #c9d5e0!important;border-radius:5px!important;font-size:13px!important;white-space:nowrap!important;color:#283d53!important}.hts-app-copy-line button{flex-shrink:0;cursor:pointer;background:var(--ad-gold,#ab8538);border:0;border-radius:5px;padding:10px 14px;color:#fff;font-weight:700;font-size:13px;white-space:nowrap}.hts-app-copy-line button:hover{filter:brightness(.91)}.hts-app-feedback{display:block;min-height:18px;margin-top:6px;color:var(--ad-navy,#0d2a4f)}@media(max-width:680px){.hts-app-intro{padding:23px 20px}.hts-app-intro h2{font-size:23px}.hts-app-download-layout{grid-template-columns:1fr;gap:24px;padding:22px 20px}.hts-app-qr-area{width:100%}.hts-app-actions{text-align:left}.hts-app-download-button{width:100%}}

/* Customizer-driven external appearance */
.hts-app-card{max-width:var(--ad-card-width,850px);border-radius:var(--ad-radius,14px);border-color:var(--ad-border-color,#d6dfe8)}
.hts-app-intro{background:var(--ad-header-bg,#0d2a4f);color:var(--ad-header-text,#fff)}
.hts-app-intro h2,.hts-app-brand-title,.hts-app-platform{color:var(--ad-header-text,#fff)}
.hts-app-intro p,.hts-app-brand-tagline{color:var(--ad-header-subtext,#e9eef5)!important}
.hts-app-brand{display:flex;gap:18px;align-items:center;margin-bottom:19px;min-width:0}
.hts-app-brand-logo{display:block;width:var(--ad-logo-width,85px);max-width:35%;height:auto;max-height:110px;object-fit:contain;flex:none}
.hts-app-brand-copy{min-width:0}.hts-app-brand-title{font-size:22px;line-height:1.25;font-weight:700}.hts-app-brand-tagline{font-size:13px;margin-top:5px}
.hts-app-qr{background:var(--ad-qr-bg,#fff);border-color:var(--ad-border-color,#d6dfe8)}
.hts-app-download-button{color:var(--ad-button-text,#fff)!important;border-radius:var(--ad-button-radius,6px)}
.hts-app-copy-line button{background:var(--ad-copy-bg,#ab8538);color:var(--ad-copy-text,#fff);border-radius:var(--ad-button-radius,6px)}
.hts-app-copy-line input{background:var(--ad-link-bg,#f7f9fc)!important;color:var(--ad-link-text,#283d53)!important;border-color:var(--ad-border-color,#d6dfe8)!important}
.hts-app-qr-area{border-radius:var(--ad-button-radius,6px)}.hts-app-no-qr{grid-template-columns:minmax(0,1fr)}
.hts-app-heading-only{padding:24px 34px 0}.hts-app-heading-only h2{color:var(--ad-navy,#0d2a4f);font-size:24px;margin:0 0 8px}.hts-app-heading-only p{margin:0}
@media(max-width:680px){.hts-app-brand{gap:12px}.hts-app-brand-title{font-size:18px}.hts-app-brand-logo{max-width:26%}.hts-app-heading-only{padding:20px 20px 0}}

/* v0.1.4: Respect the active site's typography, including public form controls.
   The JS reads the computed BODY font to avoid shortcode/theme wrappers
   accidentally passing down a monospace font. */
.hts-app-card,
.hts-app-card :is(h1,h2,h3,h4,h5,h6,p,span,div,label,small,a,button,input,textarea,select,strong,em){
  font-family:inherit !important;
}

.hts-app-password-form{display:flex;flex-direction:column;gap:10px;margin:12px 0}.hts-app-password-form input[type=password]{max-width:420px;width:100%;box-sizing:border-box;padding:10px;border:1px solid var(--ad-border-color,#d6dfe8);border-radius:6px}.hts-app-password-form button.hts-app-download-button{cursor:pointer;border:0;text-align:center}

/* v0.1.17: Keep all public action controls tied to Appearance colors,
   even when Elementor or an active theme applies global button styles. */
.hts-app-card .hts-app-actions a.hts-app-download-button,
.hts-app-card .hts-app-actions button.hts-app-download-button,
.hts-app-card .hts-app-password-form button.hts-app-download-button {
  background:var(--ad-button,#0d2a4f) !important;
  background-color:var(--ad-button,#0d2a4f) !important;
  background-image:none !important;
  color:var(--ad-button-text,#fff) !important;
  border-color:transparent !important;
  border-radius:var(--ad-button-radius,6px) !important;
  text-decoration:none !important;
  box-shadow:none !important;
}
.hts-app-card .hts-app-copy-line button.hts-ad-copy {
  background:var(--ad-copy-bg,#ab8538) !important;
  background-color:var(--ad-copy-bg,#ab8538) !important;
  background-image:none !important;
  color:var(--ad-copy-text,#fff) !important;
  border-color:transparent !important;
  border-radius:var(--ad-button-radius,6px) !important;
  text-decoration:none !important;
  box-shadow:none !important;
}
.hts-app-card .hts-app-download-button:is(:hover,:focus-visible,:active),
.hts-app-card .hts-app-copy-line button.hts-ad-copy:is(:hover,:focus-visible,:active) {
  filter:brightness(.92);
}
.hts-app-card .hts-app-download-button:focus-visible,
.hts-app-card .hts-app-copy-line button.hts-ad-copy:focus-visible {
  outline:2px solid var(--ad-gold,#ab8538);
  outline-offset:3px;
}

/* v0.1.18: Isolate the generated QR artwork from Elementor/theme-wide SVG
   transforms and image positioning so it cannot leave a duplicate/stray mark
   outside the app card. This affects only the QR inside this plugin. */
.hts-app-card .hts-app-qr-area,
.hts-app-card .hts-app-qr {
  position:relative !important;
  isolation:isolate;
  overflow:hidden;
}
.hts-app-card .hts-app-qr > svg {
  display:block !important;
  position:static !important;
  float:none !important;
  inset:auto !important;
  margin:0 auto !important;
  padding:0 !important;
  width:180px !important;
  height:180px !important;
  max-width:100% !important;
  max-height:100% !important;
  transform:none !important;
  filter:none !important;
  box-shadow:none !important;
  opacity:1 !important;
  overflow:hidden !important;
}
.hts-app-card .hts-app-qr > svg :is(rect,g) {
  transform:none !important;
  filter:none !important;
  opacity:1 !important;
}
