/* GENERATED by tools/project/build-performance.php; edit original CSS, not this file. */

/* crv1-style: crv1.css */
/* Compression Ratio Calculator V1 - restored theme */
.crv1-wrap,
.crv1-wrap * { box-sizing: border-box; }

.crv1-wrap {
  --crv1-bg: var(--pxl-bg, var(--ecl-bg, #0d1117));
  --crv1-card: var(--pxl-tool-card, var(--pxl-surface-2, var(--ecl-surface-2, #161b22)));
  --crv1-card-2: var(--pxl-tool-card-soft, var(--pxl-surface, var(--ecl-surface, #0f141b)));
  --crv1-input-bg: var(--pxl-input-bg, var(--ecl-input-bg, #0d1117));
  --crv1-border: var(--pxl-border, var(--ecl-border, #30363d));
  --crv1-text: var(--pxl-text, var(--ecl-text, #f0f6fc));
  --crv1-strong-text: var(--pxl-text-strong, var(--ecl-text-strong, #f0f6fc));
  --crv1-input-text: var(--pxl-text-input, var(--ecl-text-input, #f0f6fc));
  --crv1-readonly-text: var(--pxl-text-readonly, var(--ecl-text-readonly, #c6d8e9));
  --crv1-muted: var(--pxl-muted, var(--ecl-muted, #8b949e));
  --crv1-accent: var(--pxl-primary, var(--ecl-primary, #2f81f7));
  --crv1-accent-hover: var(--pxl-primary-hover, var(--ecl-primary-hover, #1f6feb));
  --crv1-accent-ring: var(--pxl-primary-ring, rgba(47,129,247,.15));
  --crv1-danger: var(--pxl-danger, #da3633);
  --crv1-danger-hover: var(--pxl-danger, #b62324);
  --crv1-ok: var(--pxl-success, #3fb950);
  --crv1-warn: var(--pxl-warning, #f0883e);
  max-width: 760px;
  margin: 24px auto;
  color: var(--crv1-text);
  font-family: var(--ecl-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
  line-height: 1.45;
}

.crv1-title {
  font-size: clamp(24px, 4vw, 34px);
  line-height: 1.15;
  font-weight: 800;
  letter-spacing: -0.02em;
  margin: 0 0 6px;
  color: var(--crv1-text);
}

.crv1-sub {
  color: var(--crv1-muted);
  font-size: 14px;
  margin: 0 0 16px;
}

.crv1-card {
  background: var(--crv1-card);
  border: 1px solid var(--crv1-border);
  border-radius: 16px;
  padding: 18px;
  box-shadow: var(--pxl-shadow, 0 12px 34px rgba(0,0,0,.22));
}

.crv1-row { margin: 0 0 14px; }
.crv1-row > label,
.crv1-pistonLabel,
.crv1-saveHeader {
  display: block;
  margin: 0 0 7px;
  color: var(--crv1-text);
  font-size: 14px;
  font-weight: 700;
}

.crv1-req { color: var(--pxl-danger, #ff7b72); margin-left: 3px; }

.crv1-wrap input[type="text"],
.crv1-wrap input[type="number"],
.crv1-wrap textarea,
.crv1-wrap select {
  width: 100%;
  min-height: 44px;
  margin: 0;
  border: 1px solid var(--crv1-border);
  border-radius: 9px;
  background: var(--crv1-input-bg);
  color: var(--crv1-text);
  font: inherit;
  font-size: 15px;
  padding: 10px 12px;
  outline: none;
  box-shadow: none;
  transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}

.crv1-wrap textarea { min-height: 92px; resize: vertical; }
.crv1-wrap select { cursor: pointer; }

.crv1-wrap input:focus,
.crv1-wrap textarea:focus,
.crv1-wrap select:focus {
  border-color: var(--crv1-accent);
  box-shadow: 0 0 0 3px var(--crv1-accent-ring);
}

.crv1-wrap input[readonly] {
  background: var(--crv1-card-2);
  color: var(--crv1-readonly-text);
  font-weight: 700;
}

.crv1-pistonBox,
.crv1-saveBox,
.crv1-result {
  border: 1px solid var(--crv1-border);
  background: var(--crv1-card-2);
  border-radius: 12px;
  padding: 14px;
  margin: 16px 0;
}

.crv1-pistonHeader {
  display: flex;
  gap: 14px;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 10px;
}

.crv1-pistonLabel { margin: 0; }

.crv1-radios { display: flex; gap: 10px; flex-wrap: wrap; }
.crv1-radioItem {
  display: inline-flex !important;
  align-items: center;
  gap: 7px;
  margin: 0 !important;
  padding: 7px 10px;
  border: 1px solid var(--crv1-border);
  border-radius: 999px;
  background: var(--crv1-input-bg);
  color: var(--crv1-text) !important;
  cursor: pointer;
  font-weight: 600 !important;
}
.crv1-radioItem input { width: auto !important; min-height: 0 !important; margin: 0 !important; }

.crv1-hint,
.crv1-footerNote {
  color: var(--crv1-muted);
  font-size: 12.5px;
  margin-top: 6px;
}

.crv1-saveHeader { font-size: 16px; margin-bottom: 10px; }
.crv1-saveRow {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 9px;
  align-items: center;
  margin-top: 10px;
}
.crv1-saveRowSingle { grid-template-columns: 1fr; }
.crv1-saveRowRight { display: flex; justify-content: flex-end; }

.crv1-btn {
  appearance: none;
  border: 1px solid var(--pxl-subtle-border, rgba(255,255,255,.08));
  border-radius: 9px;
  min-height: 42px;
  padding: 9px 16px;
  background: var(--crv1-accent);
  color: var(--pxl-on-primary, #fff);
  font: inherit;
  font-size: 14px;
  font-weight: 800;
  cursor: pointer;
  box-shadow: none;
  transition: transform .06s ease, background .15s ease, opacity .15s ease;
}
.crv1-btn:hover { background: var(--crv1-accent-hover); color: var(--pxl-on-primary, #fff); }
.crv1-btn:active { transform: translateY(1px); }
.crv1-btn:disabled { opacity: .55; cursor: not-allowed; }
.crv1-btnDanger { background: var(--crv1-danger); }
.crv1-btnDanger:hover { background: var(--crv1-danger-hover); }

.crv1-result { margin-bottom: 0; }
.crv1-big {
  margin: 0;
  font-size: 20px;
  font-weight: 850;
  letter-spacing: -.01em;
}
.crv1-status-ok { color: var(--crv1-ok); }
.crv1-status-warn { color: var(--crv1-warn); }
.crv1-status-error { color: var(--pxl-danger-text, #ff7b72); }

@media (max-width: 640px) {
  .crv1-wrap { margin: 14px auto; }
  .crv1-card { padding: 13px; border-radius: 13px; }
  .crv1-saveRow { grid-template-columns: 1fr; }
  .crv1-saveRowRight { display: grid; }
  .crv1-btn { width: 100%; }
  .crv1-pistonHeader { align-items: flex-start; }
}

.crv1-dynamicStatus {
  font-size: 13px;
  font-weight: 700;
  margin-top: 8px;
}

.crv1-pageHeading{margin:0 0 18px;padding:0}.crv1-pageHeading h1{margin:0;color:var(--pxl-text-strong,#eef4fb);font-size:clamp(22px,2.6vw,28px);line-height:1.18;font-weight:750;letter-spacing:-.018em}

.crv1-grid2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--pxl-space-3, 12px);
}
@media (max-width: 640px) {
  .crv1-grid2 { grid-template-columns: 1fr; }
}


/* crv1-paywall-style: crv1-paywall.css */
/* Smart paywall extension only. Core V12 theme file crv1.css is intentionally untouched. */
.crv1-paywallBox {
  border-top: 1px solid var(--crv1-border);
  margin-top: 14px;
  padding-top: 12px;
}
.crv1-paywallText {
  color: var(--crv1-muted);
  font-size: 13px;
}
.crv1-accessTop {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
.crv1-accessBadge {
  display: inline-flex;
  align-items: center;
  min-height: 23px;
  padding: 3px 8px;
  border: 1px solid var(--crv1-border);
  border-radius: 999px;
  background: var(--pxl-neutral-bg, var(--crv1-card-2));
  color: var(--pxl-neutral-text, var(--crv1-muted));
  font-size: 10.5px;
  font-weight: 850;
  line-height: 1;
  letter-spacing: .035em;
  white-space: nowrap;
}
.crv1-accessBadge-free { color: var(--pxl-selected-text, var(--pxl-link, var(--crv1-accent))); border-color: var(--pxl-selected-border, var(--crv1-border)); background: var(--pxl-selected-bg, var(--crv1-card-2)); }
.crv1-accessBadge-member { color: var(--pxl-selected-text, var(--pxl-link, var(--crv1-accent))); border-color: var(--pxl-selected-border, var(--crv1-border)); background: var(--pxl-selected-bg, var(--crv1-card-2)); }
.crv1-accessBadge-ok { color: var(--pxl-success-text, var(--crv1-ok)); border-color: var(--pxl-success-border, var(--crv1-border)); background: var(--pxl-success-bg, var(--crv1-card-2)); }
.crv1-accessBadge-warn { color: var(--pxl-warning-text, var(--crv1-warn)); border-color: var(--pxl-warning-border, var(--crv1-border)); background: var(--pxl-warning-bg, var(--crv1-card-2)); }
.crv1-accessBadge-lock { color: var(--pxl-selected-text, var(--pxl-link, var(--crv1-accent))); border-color: var(--pxl-selected-border, var(--crv1-border)); background: var(--pxl-selected-bg, var(--crv1-card-2)); }
.crv1-accessTitle {
  color: var(--crv1-text);
  font-size: 13px;
  font-weight: 800;
}
.crv1-accessDetail {
  margin-top: 6px;
  color: var(--crv1-muted);
  font-size: 12.5px;
  font-weight: 500;
}
.crv1-paywallActions {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  align-items: center;
  margin-top: 8px;
}
.crv1-accessInline {
  color: var(--crv1-muted);
  font-size: 12.5px;
}
.crv1-accessInlineLink {
  color: var(--pxl-link, var(--crv1-accent));
  text-decoration: none !important;
  border-bottom: 1px solid color-mix(in srgb, currentColor 32%, transparent);
}
.crv1-accessInlineLink:hover { color: var(--pxl-link-hover, var(--crv1-accent-hover)); border-bottom-color: currentColor; }
.crv1-accessReplay { background: transparent; border: 0; border-bottom: 1px solid currentColor; padding: 0; font: inherit; cursor: pointer; text-align: left; }


.crv1-memberSaveHint { margin: -4px 0 10px; }
.crv1-dynamicCalcRow { margin-bottom: 0; }

@media (prefers-reduced-motion: reduce) {
}

@media (max-width: 640px) {
  .crv1-accessTop { align-items: flex-start; }
}


/* V13.6: guest Save/Load is replaced by a smart signup card; core V12 theme remains untouched. */
.crv1-guestSaveCard[hidden],
.crv1-memberSaveControls[hidden] { display: none !important; }
.crv1-guestSaveCard {
  padding: 14px;
  border: 1px solid var(--crv1-border);
  border-radius: 12px;
  background: var(--pxl-tool-card-soft, var(--crv1-card-2));
  color: var(--pxl-text, var(--crv1-text));
}
.crv1-guestSaveTitle {
  color: var(--crv1-text);
  font-size: 15px;
  font-weight: 850;
  line-height: 1.35;
}
.crv1-guestSaveLead {
  margin-top: 5px;
  color: var(--crv1-muted);
  font-size: 12.5px;
  line-height: 1.5;
}
.crv1-guestBenefits {
  display: grid;
  gap: 7px;
  margin-top: 13px;
}
.crv1-guestBenefit {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  color: var(--pxl-text-soft, var(--crv1-text));
  font-size: 12.5px;
  line-height: 1.45;
}
.crv1-benefitCheck {
  flex: 0 0 auto;
  color: var(--crv1-ok);
  font-weight: 900;
}
.crv1-guestSaveActions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 12px;
  margin-top: 14px;
}
.crv1-signupBtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  text-decoration: none !important;
}
.crv1-signupBtn:hover { text-decoration: none !important; }
.crv1-signupDisabled {
  opacity: .55;
  cursor: not-allowed;
  pointer-events: none;
}
.crv1-guestLogin {
  color: var(--crv1-muted);
  font-size: 12.5px;
}
.crv1-guestLogin a {
  color: var(--pxl-link, var(--crv1-accent));
  text-decoration: none !important;
  border-bottom: 1px solid color-mix(in srgb, currentColor 32%, transparent);
}
.crv1-guestLogin a:hover {
  color: var(--pxl-link-hover, var(--crv1-accent-hover));
  border-bottom-color: currentColor;
}
.crv1-guestRegisterWarning { margin-top: 10px; }

@media (max-width: 640px) {
  .crv1-guestSaveActions { align-items: stretch; }
  .crv1-signupBtn { width: 100%; }
  .crv1-guestLogin { width: 100%; text-align: center; }
}

/* V13.10: Dynamic Highlight — supplemental only; core V12 theme remains untouched. */
.crv1-dynamicSpotlight {
  position: relative;
  border-color: rgba(47,129,247,.46);
  background:
    linear-gradient(180deg, rgba(47,129,247,.055), rgba(47,129,247,0) 150px),
    var(--crv1-card-2);
  box-shadow: inset 3px 0 0 rgba(47,129,247,.82);
}
.crv1-dynamicSpotlight::before {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  pointer-events: none;
  box-shadow: 0 0 0 1px rgba(47,129,247,.04), 0 8px 24px rgba(0,0,0,.10);
}
.crv1-dynamicHeader { margin-bottom: 12px; }
.crv1-dynamicHeader .crv1-pistonLabel {
  font-size: 16px;
  letter-spacing: -.01em;
}
.crv1-dynamicBadge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 4px 9px;
  border: 1px solid rgba(47,129,247,.42);
  border-radius: 999px;
  background: rgba(47,129,247,.10);
  color: var(--pxl-selected-text, var(--pxl-primary, #2f81f7));
  font-size: 10.5px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: .055em;
  white-space: nowrap;
}
.crv1-dynamicWhy {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0 0 14px;
  padding: 11px 12px;
  border: 1px solid rgba(47,129,247,.22);
  border-radius: 10px;
  background: rgba(47,129,247,.055);
}
.crv1-dynamicWhyIcon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: rgba(47,129,247,.13);
  color: var(--pxl-selected-text, var(--pxl-primary, #2f81f7));
  font-size: 15px;
  line-height: 1;
}
.crv1-dynamicWhyCopy {
  min-width: 0;
  display: grid;
  gap: 3px;
}
.crv1-dynamicWhyCopy strong {
  color: var(--crv1-text);
  font-size: 13.5px;
  font-weight: 850;
  line-height: 1.35;
}
.crv1-dynamicWhyCopy span {
  color: var(--crv1-muted);
  font-size: 12.5px;
  line-height: 1.48;
}
.crv1-dynamicSpotlight.crv1-dynamicSpotlight-high {
  border-color: rgba(240,136,62,.48);
  background:
    linear-gradient(180deg, rgba(240,136,62,.055), rgba(240,136,62,0) 150px),
    var(--crv1-card-2);
  box-shadow: inset 3px 0 0 rgba(240,136,62,.85);
}
.crv1-dynamicSpotlight-high .crv1-dynamicBadge {
  color: #ffd8b3;
  border-color: rgba(240,136,62,.42);
  background: rgba(240,136,62,.09);
}
.crv1-dynamicSpotlight-high .crv1-dynamicWhy {
  border-color: rgba(240,136,62,.24);
  background: rgba(240,136,62,.055);
}
.crv1-dynamicSpotlight-high .crv1-dynamicWhyIcon {
  color: #ffd8b3;
  background: rgba(240,136,62,.12);
}
.crv1-dynamicBtn {
  min-width: 178px;
  box-shadow: 0 0 0 1px rgba(47,129,247,.10), 0 6px 16px rgba(0,0,0,.14);
}
.crv1-dynamicBtn:hover {
  box-shadow: 0 0 0 3px rgba(47,129,247,.12), 0 8px 18px rgba(0,0,0,.16);
}
.crv1-dynamicUsageNote {
  margin: 7px 0 0;
  color: var(--crv1-muted);
  font-size: 11.8px;
  line-height: 1.4;
  text-align: right;
}
.crv1-dynamicSpotlight .crv1-paywallBox {
  margin-top: 12px;
  padding: 11px 12px 0;
  border-top-color: rgba(47,129,247,.22);
  border-radius: 9px 9px 0 0;
  background: linear-gradient(180deg, rgba(47,129,247,.035), rgba(47,129,247,0));
}
.crv1-dynamicSpotlight .crv1-accessTitle { font-size: 13.5px; }
.crv1-dynamicSpotlight .crv1-accessDetail { line-height: 1.45; }

@media (max-width: 640px) {
  .crv1-dynamicHeader { align-items: center; }
  .crv1-dynamicWhy { gap: 9px; padding: 10px; }
  .crv1-dynamicBtn { min-width: 0; }
  .crv1-dynamicUsageNote { text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
  .crv1-dynamicBtn { transition: none; }
}


/* V13.57 — Tính lại luôn hiện; click khi chưa đổi dữ liệu chỉ hướng người dùng về Cam/Rod. */
.crv1-progressiveMode #crv1_dynamicSpotlight .crv1-retryInputHint {
  border-color: var(--crv1-accent) !important;
  box-shadow: 0 0 0 3px rgba(47,129,247,.16), 0 0 18px rgba(47,129,247,.12);
  transition: border-color .18s ease, box-shadow .18s ease;
}
@media (prefers-reduced-motion: reduce) {
  .crv1-progressiveMode #crv1_dynamicSpotlight .crv1-retryInputHint { transition:none; }
}


/* crv1-piston-speed-style: crv1-piston-speed.css */
/* V13.11 Premium module only. Existing crv1.css + crv1-paywall.css are intentionally untouched. */
.crv1-premiumModule {
  position: relative;
  margin-top: 14px;
  border-color: rgba(163,113,247,.46);
  background:
    linear-gradient(180deg, rgba(163,113,247,.06), rgba(163,113,247,0) 165px),
    var(--crv1-card-2);
  box-shadow: inset 3px 0 0 rgba(163,113,247,.82);
}
.crv1-premiumHeader { margin-bottom: 12px; gap: 12px; }
.crv1-premiumHeader > div:first-child { min-width: 0; }
.crv1-premiumSub {
  margin-top: 3px;
  color: var(--crv1-muted);
  font-size: 11.8px;
  line-height: 1.4;
}
.crv1-premiumBadge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-height: 24px;
  padding: 4px 9px;
  border: 1px solid rgba(163,113,247,.46);
  border-radius: 999px;
  background: rgba(163,113,247,.11);
  color: #e5d5ff;
  font-size: 10.5px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: .06em;
}
.crv1-premiumPitch {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 13px;
  padding: 11px 12px;
  border: 1px solid rgba(163,113,247,.23);
  border-radius: 10px;
  background: rgba(163,113,247,.055);
}
.crv1-premiumPitchIcon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 29px;
  height: 29px;
  border-radius: 8px;
  background: rgba(163,113,247,.14);
  color: #e5d5ff;
  font-size: 15px;
}
.crv1-premiumPitch > div { display: grid; gap: 3px; min-width: 0; }
.crv1-premiumPitch strong { color: var(--crv1-text); font-size: 13.5px; line-height: 1.35; }
.crv1-premiumPitch span:not(.crv1-premiumPitchIcon) { color: var(--crv1-muted); font-size: 12.5px; line-height: 1.48; }
.crv1-premiumGate {
  padding: 11px 12px;
  border: 1px solid rgba(163,113,247,.22);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(163,113,247,.045), rgba(163,113,247,.015));
}
.crv1-premiumGate .crv1-accessBadge-lock { color: #e5d5ff; border-color: rgba(163,113,247,.42); background: rgba(163,113,247,.09); }
.crv1-premiumUnlockBtn {
  border-color: rgba(163,113,247,.48) !important;
  box-shadow: 0 0 0 1px rgba(163,113,247,.08), 0 6px 16px rgba(0,0,0,.12);
}
.crv1-premiumTool {
  margin-top: 13px;
  padding-top: 12px;
  border-top: 1px solid rgba(163,113,247,.20);
}
.crv1-premiumTool[hidden] { display: none !important; }
.crv1-premiumCalcRow { margin-bottom: 10px; }
.crv1-premiumCalcBtn {
  min-width: 220px;
  border-color: rgba(163,113,247,.45) !important;
  box-shadow: 0 0 0 1px rgba(163,113,247,.08), 0 6px 16px rgba(0,0,0,.14);
}
.crv1-premiumResults {
  padding: 12px;
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 10px;
  background: rgba(0,0,0,.08);
}
.crv1-premiumResults .crv1-row:last-of-type { margin-bottom: 8px; }
.crv1-premiumEvaluation {
  margin-top: 7px;
  padding: 9px 10px;
  border-radius: 8px;
  background: rgba(255,255,255,.035);
  line-height: 1.48;
  font-weight: 650;
}
.crv1-premiumEvaluation-ok { color: var(--crv1-ok); background: rgba(63,185,80,.06); }
.crv1-premiumEvaluation-warn { color: var(--crv1-warn); background: rgba(210,153,34,.06); }
.crv1-premiumEvaluation-high { color: #ffad66; background: rgba(240,136,62,.07); }
.crv1-premiumEvaluation-error { color: #ff9a9a; background: rgba(248,81,73,.07); }
.crv1-premiumDisclaimer { margin-top: 8px; font-size: 11.2px; line-height: 1.45; }

@media (max-width: 640px) {
  .crv1-premiumHeader { align-items: flex-start; }
  .crv1-premiumPitch { padding: 10px; gap: 9px; }
  .crv1-premiumGate { padding: 10px; }
  .crv1-premiumCalcBtn { min-width: 0; width: 100%; }
}

/* V13.11.1: simplify piston-speed UX. Core calculator theme/formula files remain untouched. */
.crv1-premiumPrimaryResults {
  margin-top: 2px;
}
.crv1-premiumHeroResult input[readonly] {
  font-size: 17px;
  font-weight: 850;
  letter-spacing: .01em;
}
.crv1-premiumAdvanced {
  margin-top: 12px;
  border: 1px solid rgba(163,113,247,.18);
  border-radius: 10px;
  overflow: hidden;
  background: rgba(163,113,247,.025);
}
.crv1-premiumAdvancedToggle {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 11px 12px;
  border: 0;
  background: transparent;
  color: var(--crv1-text);
  font: inherit;
  font-size: 12.8px;
  font-weight: 780;
  text-align: left;
  cursor: pointer;
}
.crv1-premiumAdvancedToggle:hover,
.crv1-premiumAdvancedToggle:focus-visible {
  background: rgba(163,113,247,.055);
  outline: none;
}
.crv1-premiumAdvancedToggle small {
  margin-left: auto;
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(163,113,247,.10);
  color: var(--crv1-muted);
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.crv1-premiumAdvancedChevron {
  display: inline-block;
  transition: transform .16s ease;
  color: #d9c5ff;
}
.crv1-premiumAdvancedToggle[aria-expanded="true"] .crv1-premiumAdvancedChevron {
  transform: rotate(180deg);
}
.crv1-premiumAdvancedPanel {
  padding: 12px;
  border-top: 1px solid rgba(163,113,247,.16);
  background: rgba(0,0,0,.055);
}
.crv1-premiumAdvancedPanel[hidden] { display: none !important; }
.crv1-premiumAdvancedIntro {
  margin: 0 0 11px;
  line-height: 1.5;
}
.crv1-premiumAdvancedCalcRow { margin-bottom: 10px; }
.crv1-premiumAdvancedCalcBtn {
  min-width: 190px;
  background: rgba(163,113,247,.11) !important;
  border-color: rgba(163,113,247,.36) !important;
  color: #eadfff !important;
}
.crv1-premiumLimitResult {
  margin-bottom: 0 !important;
}
.crv1-premiumLimitResult input[readonly] {
  font-weight: 800;
}

@media (max-width: 640px) {
  .crv1-premiumAdvancedToggle { align-items: flex-start; }
  .crv1-premiumAdvancedCalcBtn { width: 100%; min-width: 0; }
}

/* V13.13 Curiosity Unlock UX — presentation only; core calculator theme/formulas remain untouched. */
.crv1-curiosityTool {
  margin-top: 10px;
}
.crv1-curiosityCheckBtn {
  min-width: 235px;
  font-weight: 900;
  letter-spacing: .015em;
  box-shadow: 0 0 0 1px rgba(163,113,247,.10), 0 8px 22px rgba(47,128,237,.16);
}
.crv1-lockedPreview {
  margin-top: 4px;
  padding: 13px;
  border: 1px solid rgba(163,113,247,.28);
  border-radius: 11px;
  background:
    radial-gradient(circle at 92% 0%, rgba(163,113,247,.10), transparent 34%),
    rgba(0,0,0,.09);
}
.crv1-lockedPreview[hidden] { display: none !important; }
.crv1-lockedPreviewTop {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 11px;
}
.crv1-lockedReadyBadge {
  display: inline-flex;
  align-items: center;
  min-height: 23px;
  padding: 4px 8px;
  border: 1px solid rgba(63,185,80,.34);
  border-radius: 999px;
  background: rgba(63,185,80,.08);
  color: #69df83;
  font-size: 10.5px;
  font-weight: 900;
  line-height: 1;
  letter-spacing: .025em;
}
.crv1-lockedPreviewTop > strong {
  color: var(--crv1-text);
  font-size: 13px;
  text-align: right;
}
.crv1-lockedResultLine {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 11px 12px;
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 9px;
  background: rgba(255,255,255,.025);
}
.crv1-lockedResultLine span {
  color: var(--crv1-text);
  font-size: 12.8px;
  font-weight: 720;
}
.crv1-lockedResultLine strong {
  color: #eadfff;
  font-size: 15px;
  white-space: nowrap;
}
.crv1-lockedGauge { margin-top: 12px; }
.crv1-lockedGaugeTrack {
  height: 13px;
  border-radius: 999px;
  background: linear-gradient(90deg, #22c55e 0%, #22c55e 25%, #eab308 25%, #eab308 50%, #f97316 50%, #f97316 75%, #ef4444 75%, #ef4444 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
  opacity: .90;
}
.crv1-lockedGaugeLabels {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 5px;
  margin-top: 7px;
  color: var(--crv1-muted);
  font-size: 9.8px;
  font-weight: 750;
  text-align: center;
}
.crv1-lockedGaugeLock {
  margin-top: 9px;
  padding: 7px 9px;
  border-radius: 8px;
  background: rgba(163,113,247,.07);
  color: #d9c7ff;
  font-size: 11.5px;
  font-weight: 750;
  text-align: center;
}
.crv1-lockedPreviewLead {
  margin-top: 10px;
  color: var(--crv1-text);
  font-size: 12.5px;
  font-weight: 700;
  line-height: 1.45;
  text-align: center;
}
.crv1-curiosityGate {
  margin-top: 11px;
  border-color: rgba(163,113,247,.30);
  background: linear-gradient(180deg, rgba(163,113,247,.07), rgba(163,113,247,.02));
}
.crv1-curiosityGate[hidden] { display: none !important; }
.crv1-curiosityUnlockBtn {
  min-width: 235px;
  font-weight: 900 !important;
}

@media (max-width: 640px) {
  .crv1-curiosityCheckBtn,
  .crv1-curiosityUnlockBtn { width: 100%; min-width: 0; }
  .crv1-lockedPreview { padding: 11px; }
  .crv1-lockedPreviewTop { align-items: flex-start; flex-direction: column; }
  .crv1-lockedPreviewTop > strong { text-align: left; }
  .crv1-lockedResultLine { align-items: flex-start; flex-direction: column; gap: 5px; }
  .crv1-lockedGaugeLabels { font-size: 8.8px; gap: 2px; }
}


/* V13.13.1 Simple Unlock UX — only simplifies the Premium piston-speed presentation. */
.crv1-simpleLockedPreview {
  padding: 14px;
  background: rgba(0,0,0,.075);
  border-color: rgba(163,113,247,.25);
  box-shadow: none;
}
.crv1-simpleLockedTop {
  margin-bottom: 10px;
  align-items: center;
}
.crv1-simpleLockedTitle {
  color: #e9ddff;
  font-size: 12.6px;
  font-weight: 900;
  letter-spacing: .015em;
}
.crv1-simpleLockedTop > span {
  color: var(--crv1-muted);
  font-size: 11.8px;
  font-weight: 650;
  text-align: right;
}
.crv1-simpleLockedResult {
  padding: 10px 11px;
}
.crv1-simpleLockedResult strong {
  color: #d8c8f5;
  letter-spacing: .08em;
}
.crv1-simpleLockedGauge {
  margin-top: 10px;
}
.crv1-simpleLockedGauge .crv1-lockedGaugeTrack {
  height: 10px;
  opacity: .72;
}
.crv1-simpleUnlockMeta {
  margin-top: 7px;
  color: #d7c7f3;
  font-size: 12px;
  font-weight: 800;
  text-align: center;
}
.crv1-simpleGate {
  margin-top: 11px;
  padding: 11px 0 0;
  border: 0;
  border-top: 1px solid rgba(163,113,247,.18);
  border-radius: 0;
  background: transparent;
}
.crv1-simpleGate .crv1-paywallActions {
  justify-content: center;
  margin-top: 0;
}
.crv1-simpleGate .crv1-curiosityUnlockBtn {
  min-width: 240px;
}
.crv1-premiumBadge {
  min-height: 22px;
  padding: 3px 8px;
  font-size: 9.8px;
  letter-spacing: .025em;
}

@media (max-width: 640px) {
  .crv1-simpleLockedPreview { padding: 11px; }
  .crv1-simpleLockedTop { flex-direction: row; align-items: center; }
  .crv1-simpleLockedTop > span { text-align: right; }
  .crv1-simpleLockedResult { flex-direction: row; align-items: center; gap: 10px; }
  .crv1-simpleGate .crv1-curiosityUnlockBtn { width: 100%; min-width: 0; }
}

/* V13.13.3: honor the hidden state of the single primary action row.
   crv1.css sets display:flex/grid on .crv1-saveRowRight, which can otherwise
   override the browser's hidden presentation in some themes/browsers. */
.crv1-premiumCalcRow[hidden] {
  display: none !important;
}

/* V13.13.4: compact, explicit source display for Stroke.
   Presentation only; the Stroke value still comes from #crv1_stroke exactly as before. */
.crv1-pistonStrokeCompact {
  margin: 1px 0 14px;
}
.crv1-pistonStrokeCompactLine {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 24px;
}
.crv1-pistonStrokeCompactLabel {
  color: var(--crv1-text);
  font-size: 12.8px;
  font-weight: 760;
}
.crv1-pistonStrokeCompactLine > strong {
  color: var(--crv1-text);
  font-size: 13.5px;
  font-weight: 900;
}
.crv1-pistonStrokeSourceBadge {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 2px 7px;
  border: 1px solid rgba(63,185,80,.28);
  border-radius: 999px;
  background: rgba(63,185,80,.07);
  color: #69df83;
  font-size: 10px;
  font-weight: 850;
  line-height: 1;
  white-space: nowrap;
}
.crv1-pistonStrokeCompactHint {
  margin-top: 3px;
}

@media (max-width: 640px) {
  .crv1-pistonStrokeCompact { margin-bottom: 12px; }
  .crv1-pistonStrokeCompactLine { gap: 5px; }
}

/* V14.45 — Keep Piston Speed fully available in runtime/entitlements, but do not render its card inside the Compression calculator flow. */
.crv1-pistonModuleStoredOnly{display:none!important}


/* crv1-gauges-style: crv1-gauges.css */
/* V13.12 result gauges — isolated visual layer. Existing theme files remain unchanged. */
.crv1-resultGauge {
  margin-top: 10px;
  padding: 10px 12px 9px;
  border: 1px solid rgba(148, 163, 184, .16);
  border-radius: 10px;
  background: rgba(2, 6, 23, .28);
}
.crv1-resultGauge[hidden] { display: none !important; }
.crv1-gaugeTop {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
  font-size: 12px;
  color: #94a3b8;
}
.crv1-gaugeTop strong {
  color: #e5e7eb;
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.crv1-gaugeTrack {
  position: relative;
  height: 13px;
  border-radius: 999px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.10), 0 4px 12px rgba(0,0,0,.14);
  overflow: visible;
}
.crv1-gaugeMarker {
  position: absolute;
  top: -5px;
  left: 0;
  width: 3px;
  height: 23px;
  border-radius: 2px;
  background: #f8fafc;
  box-shadow: 0 0 0 2px rgba(2,6,23,.60), 0 0 8px rgba(255,255,255,.55);
  transform: translateX(-50%);
  transition: left .24s ease;
  pointer-events: none;
}
.crv1-gaugeMarker::after {
  content: '';
  position: absolute;
  left: 50%;
  top: -4px;
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 6px solid #f8fafc;
}
@media (max-width: 560px) {
  .crv1-resultGauge { padding: 9px 10px 8px; }
  .crv1-gaugeTop { margin-bottom: 7px; }
  .crv1-gaugeTrack { height: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .crv1-gaugeMarker { transition: none; }
}


/* crv1-result-ux-style: crv1-result-ux.css */
/* V13.12.1 simplified result UX — isolated layer. Existing theme/formula assets remain unchanged. */
.crv1-gaugeTop .crv1-gaugeZone {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 22px;
  padding: 3px 9px;
  border: 1px solid rgba(148,163,184,.18);
  border-radius: 999px;
  background: rgba(15,23,42,.46);
  color: #cbd5e1;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .02em;
  line-height: 1;
  white-space: nowrap;
}
.crv1-gaugeTop .crv1-gaugeZone::before {
  content: '';
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: #94a3b8;
  box-shadow: 0 0 0 2px rgba(148,163,184,.10);
  flex: 0 0 auto;
}
.crv1-gaugeTop .crv1-gaugeZone.is-green::before { background: #22c55e; }
.crv1-gaugeTop .crv1-gaugeZone.is-yellow::before { background: #eab308; }
.crv1-gaugeTop .crv1-gaugeZone.is-orange::before { background: #f97316; }
.crv1-gaugeTop .crv1-gaugeZone.is-red::before { background: #ef4444; }
.crv1-gaugeTop .crv1-gaugeZone.is-green { border-color: rgba(34,197,94,.26); }
.crv1-gaugeTop .crv1-gaugeZone.is-yellow { border-color: rgba(234,179,8,.28); }
.crv1-gaugeTop .crv1-gaugeZone.is-orange { border-color: rgba(249,115,22,.28); }
.crv1-gaugeTop .crv1-gaugeZone.is-red { border-color: rgba(239,68,68,.30); }

/* The result value already exists in the readonly field; keep this small as a marker reference only. */
.crv1-gaugeTop strong {
  color: #e2e8f0;
  font-size: 11.5px;
  font-weight: 800;
}

/* Old explanatory footer is no longer useful once the visual scale is present. */
.crv1-result .crv1-footerNote { display: none !important; }

/* When a valid static result exists, the old repeated status box is hidden by JS.
   It remains available for validation/error messages. */
.crv1-result[hidden] { display: none !important; }

/* Keep secondary explanations visually subordinate to the result + gauge. */
.crv1-dynamicStatus:not(:empty),
.crv1-premiumEvaluation:not(:empty) {
  margin-top: 8px;
  line-height: 1.45;
}

@media (max-width: 560px) {
  .crv1-gaugeTop .crv1-gaugeZone {
    padding: 3px 8px;
    font-size: 10px;
  }
  .crv1-gaugeTop strong { font-size: 11px; }
}


/* crv1-progressive-style: crv1-progressive.css */
/* V14.55: reveal Dynamic only after a committed static result. */
.crv1-progressiveMode #crv1_dynamicSpotlight:not(.crv1-stepVisible),
.crv1-progressiveMode #crv1_pistonSpeedModule:not(.crv1-stepVisible){
  display:none !important;
}

/* Dynamic must open without the legacy card-arrival motion that previously made
   result/form areas feel like they flashed or jumped. */
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-stepVisible{
  animation:none !important;
}

/* RPM is a later step and keeps its small one-time arrival cue. */
.crv1-progressiveMode #crv1_pistonSpeedModule.crv1-stepVisible{
  animation:crv1StepReveal .22s ease-out both;
}

@keyframes crv1StepReveal{
  from{opacity:.3;transform:translateY(-4px)}
  to{opacity:1;transform:translateY(0)}
}

@media (prefers-reduced-motion:reduce){
  .crv1-progressiveMode #crv1_pistonSpeedModule.crv1-stepVisible{animation:none}
}


/* crv1-static-result-card-style: crv1-static-result-card.css */
/* V13.14.1 static result card — presentation only.
   Uses the existing CRV1 theme variables; no formula or base-theme asset is modified. */
.crv1-progressiveMode .crv1-staticResultCard {
  position: relative;
  margin: 18px 0 16px;
  padding: 15px;
  border: 1px solid rgba(47,129,247,.38);
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(47,129,247,.07), rgba(47,129,247,.015) 48%, rgba(15,20,27,.94) 100%),
    var(--crv1-card-2);
  box-shadow: inset 3px 0 0 rgba(47,129,247,.72);
}

.crv1-progressiveMode .crv1-staticResultCard > label.crv1-staticResultTitle {
  margin-bottom: 8px;
  color: var(--crv1-text);
  font-size: 13px;
  font-weight: 850;
  letter-spacing: .015em;
  text-transform: uppercase;
}

.crv1-progressiveMode .crv1-staticResultCard #crv1_cr {
  min-height: 50px;
  font-size: 19px;
  font-weight: 850;
  border-color: rgba(47,129,247,.30);
  background: rgba(13,17,23,.88);
}

.crv1-staticResultAdvice {
  margin-top: 11px;
  padding: 11px 12px;
  border: 1px solid rgba(148,163,184,.14);
  border-radius: 10px;
  background: rgba(13,17,23,.52);
}

.crv1-staticResultAdvice[hidden] { display:none !important; }

.crv1-staticResultAdviceTitle {
  display: block;
  margin: 0 0 3px;
  color: var(--crv1-text);
  font-size: 13px;
  font-weight: 800;
}

.crv1-staticResultAdviceText {
  display: block;
  margin: 0;
  color: var(--crv1-muted);
  font-size: 12.5px;
  line-height: 1.45;
}

@media (max-width:640px) {
  .crv1-progressiveMode .crv1-staticResultCard { padding: 13px; }
  .crv1-progressiveMode .crv1-staticResultCard #crv1_cr { min-height: 48px; font-size: 18px; }
}


/* crv1-dynamic-result-card-style: crv1-dynamic-result-card.css */
/* V13.18 dynamic result card — presentation only.
   Reuses existing CRV1 variables/gauge/status elements; no formula or base-theme asset is modified. */
.crv1-progressiveMode .crv1-dynamicResultCard {
  position: relative;
  margin: 2px 0 14px;
  padding: 15px;
  border: 1px solid rgba(240,136,62,.25);
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(240,136,62,.035), rgba(240,136,62,.008) 48%, rgba(15,20,27,.90) 100%),
    var(--crv1-card-2);
}

.crv1-progressiveMode .crv1-dynamicResultCard.has-result {
  border-color: rgba(240,136,62,.40);
  background:
    linear-gradient(180deg, rgba(240,136,62,.075), rgba(240,136,62,.018) 48%, rgba(15,20,27,.94) 100%),
    var(--crv1-card-2);
  box-shadow: inset 3px 0 0 rgba(240,136,62,.78);
}

.crv1-progressiveMode .crv1-dynamicResultCard > label.crv1-dynamicResultTitle {
  margin-bottom: 8px;
  color: var(--crv1-text);
  font-size: 13px;
  font-weight: 850;
  letter-spacing: .015em;
  text-transform: uppercase;
}

.crv1-progressiveMode .crv1-dynamicResultCard.has-result #crv1_dynamicCr {
  min-height: 50px;
  font-size: 19px;
  font-weight: 850;
  border-color: rgba(240,136,62,.30);
  background: rgba(13,17,23,.88);
}

/* Turn the existing dynamic evaluation into a compact advice panel only when a real result exists. */
.crv1-progressiveMode .crv1-dynamicResultCard.has-result .crv1-dynamicStatus:not(:empty) {
  margin-top: 11px;
  padding: 11px 12px;
  border: 1px solid rgba(148,163,184,.14);
  border-radius: 10px;
  background: rgba(13,17,23,.52);
  font-size: 12.5px;
  font-weight: 700;
  line-height: 1.45;
}

.crv1-progressiveMode .crv1-dynamicResultCard.has-result .crv1-dynamicStatus.crv1-status-ok {
  display: none;
  border-color: rgba(34,197,94,.22);
  background: rgba(34,197,94,.050);
}
.crv1-progressiveMode .crv1-dynamicResultCard.has-result .crv1-dynamicStatus.crv1-status-warn {
  border-color: rgba(249,115,22,.22);
  background: rgba(249,115,22,.055);
}
.crv1-progressiveMode .crv1-dynamicResultCard.has-result .crv1-dynamicStatus.crv1-status-error {
  border-color: rgba(239,68,68,.23);
  background: rgba(239,68,68,.055);
}

/* V13.97: keep the V1 calculation unchanged, but hide its verbose breakdown. */
#crv1_v1Breakdown {
  display: none;
}

.crv1-progressiveMode .crv1-dynamicResultCard.has-result #crv1_dynamicHint {
  margin-top: 8px;
  font-size: 11.8px;
  line-height: 1.45;
}

@media (max-width:640px) {
  .crv1-progressiveMode .crv1-dynamicResultCard { padding: 13px; }
  .crv1-progressiveMode .crv1-dynamicResultCard.has-result #crv1_dynamicCr {
    min-height: 48px;
    font-size: 18px;
  }
}


/* crv1-dynamic-result-position-style: crv1-dynamic-result-position.css */
/* V13.19 dynamic result placement — presentation/flow only.
   Keeps the existing V13.18 result card intact and only changes where it is shown. */
.crv1-progressiveMode .crv1-dynamicResultCard[hidden] {
  display: none !important;
}

.crv1-progressiveMode .crv1-dynamicResultCard.crv1-dynamicResultRelocated {
  margin: 0 0 18px;
}

.crv1-progressiveMode .crv1-staticResultCard + .crv1-dynamicResultCard.crv1-dynamicResultRelocated {
  margin-top: -4px;
}

.crv1-progressiveMode .crv1-dynamicResultCard.crv1-dynamicResultNeedsRecalc {
  opacity: .92;
}

.crv1-progressiveMode .crv1-dynamicResultCard.crv1-dynamicResultNeedsRecalc #crv1_dynamicCr {
  border-style: dashed;
}

.crv1-progressiveMode .crv1-dynamicResultCard.crv1-dynamicResultArrive {
  animation: crv1DynamicResultArrive .32s ease-out both;
}

@keyframes crv1DynamicResultArrive {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .crv1-progressiveMode .crv1-dynamicResultCard.crv1-dynamicResultArrive {
    animation: none;
  }
}


/* crv1-dynamic-compact-ux-style: crv1-dynamic-compact-ux.css */
/* Dynamic result metadata + compact-flow state hooks.
   Layout is intentionally NOT owned here; V14.39's final Dynamic panel layout lives
   in crv1-dynamic-funnel-boost.css so the form has one visual/layout owner. */
.crv1-progressiveMode .crv1-dynamicResultMeta {
  margin: var(--pxl-space-2, 8px) 0 0;
  color: var(--crv1-muted);
  font-size: var(--pxl-font-size-xs, 12px);
  font-weight: 600;
  line-height: 1.4;
}

.crv1-progressiveMode .crv1-dynamicResultMeta[hidden] {
  display: none !important;
}

.crv1-progressiveMode .crv1-dynamicResultMeta.is-stale {
  color: var(--pxl-warning, var(--crv1-muted));
  opacity: .84;
}

/* Dynamic inputs need only two user-editable values. Effective stroke is derived
   and is surfaced with the result metadata instead of as a readonly form row. */
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCompactAdjusted {
  display: none !important;
}

/* The explanatory block is first-result guidance only. The final guidance layer
   selectively reveals it before a Dynamic result exists. */
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicBadge,
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicWhy {
  display: none !important;
}


/* crv1-pre-dynamic-ux-style: crv1-pre-dynamic-ux.css */
/* V14.38 pre-dynamic result gate.
   Before the first real Dynamic result, do not show an empty result card. */
.crv1-progressiveMode:not(.crv1-dynamic-result-ever) .crv1-dynamicResultCard {
  display:none !important;
}


/* crv1-dynamic-stability-style: crv1-dynamic-stability.css */
/* Dynamic state stability.
   V14.39 keeps this file state-only: layout belongs to the final Dynamic panel CSS. */
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCalcRow[hidden],
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicUsageNote[hidden] {
  display: none !important;
}

.crv1-progressiveMode .crv1-dynamicResultMeta {
  transition: color .16s ease, opacity .16s ease;
}

.crv1-progressiveMode.crv1-dynamic-input-dirty .crv1-dynamicResultCard,
.crv1-progressiveMode.crv1-dynamic-input-dirty #crv1_dynamicSpotlight {
  scroll-margin-top: 0;
}

@media (prefers-reduced-motion: reduce) {
  .crv1-progressiveMode .crv1-dynamicResultMeta {
    transition: none;
  }
}


/* crv1-dynamic-compare-style: crv1-dynamic-compare.css */
/* V13.53 — result-first history typography while preserving “Nén động”; reused fingerprints still move to the top by recent use.
   Presentation only: formulas, thresholds, credits, payment and the base theme are unchanged. */
.crv1-progressiveMode .crv1-dynamicCurrentCompare[hidden],
.crv1-progressiveMode .crv1-dynamicHistoryWrap[hidden],
.crv1-progressiveMode .crv1-dynamicHistoryMore[hidden] { display:none !important; }

/* V13.52: the comparison pill is moved into history row #1, so the main gauge card stays cleaner. */
.crv1-progressiveMode .crv1-dynamicCurrentCompare {
  display:none !important;
  width:max-content;
  max-width:100%;
  display:inline-flex;
  align-items:center;
  margin:6px 2px 1px;
  padding:2px 7px;
  border:1px solid var(--pxl-neutral-border, var(--crv1-border));
  border-radius:999px;
  background:var(--pxl-neutral-bg, var(--crv1-card-2));
  color:var(--pxl-neutral-text, var(--crv1-muted));
  font-size:9.8px;
  font-weight:800;
  line-height:1.35;
  white-space:nowrap;
}

/* Delta + extreme badges use the SAME four technical colors as the dynamic gauge.
   Arrow = direction; color = technical zone of that result. */
.crv1-progressiveMode .crv1-dynamicCurrentCompare.zone-green,
.crv1-progressiveMode .crv1-dynamicHistoryDelta.zone-green,
.crv1-progressiveMode .crv1-dynamicHistoryExtreme.zone-green {
  color:var(--pxl-zone-green-text, var(--pxl-success-text)); border-color:var(--pxl-zone-green-border, var(--pxl-success-border)); background:var(--pxl-zone-green-bg, var(--pxl-success-bg));
}
.crv1-progressiveMode .crv1-dynamicCurrentCompare.zone-yellow,
.crv1-progressiveMode .crv1-dynamicHistoryDelta.zone-yellow,
.crv1-progressiveMode .crv1-dynamicHistoryExtreme.zone-yellow {
  color:var(--pxl-zone-yellow-text, var(--pxl-warning-text)); border-color:var(--pxl-zone-yellow-border, var(--pxl-warning-border)); background:var(--pxl-zone-yellow-bg, var(--pxl-warning-bg));
}
.crv1-progressiveMode .crv1-dynamicCurrentCompare.zone-orange,
.crv1-progressiveMode .crv1-dynamicHistoryDelta.zone-orange,
.crv1-progressiveMode .crv1-dynamicHistoryExtreme.zone-orange {
  color:var(--pxl-zone-orange-text, var(--pxl-warning-text)); border-color:var(--pxl-zone-orange-border, var(--pxl-warning-border)); background:var(--pxl-zone-orange-bg, var(--pxl-warning-bg));
}
.crv1-progressiveMode .crv1-dynamicCurrentCompare.zone-red,
.crv1-progressiveMode .crv1-dynamicHistoryDelta.zone-red,
.crv1-progressiveMode .crv1-dynamicHistoryExtreme.zone-red {
  color:var(--pxl-zone-red-text, var(--pxl-danger-text)); border-color:var(--pxl-zone-red-border, var(--pxl-danger-border)); background:var(--pxl-zone-red-bg, var(--pxl-danger-bg));
}
.crv1-progressiveMode .crv1-dynamicCurrentCompare.zone-neutral,
.crv1-progressiveMode .crv1-dynamicHistoryDelta.zone-neutral,
.crv1-progressiveMode .crv1-dynamicHistoryExtreme.zone-neutral {
  color:var(--pxl-neutral-text, var(--crv1-muted)); border-color:var(--pxl-neutral-border, var(--crv1-border)); background:var(--pxl-neutral-bg, var(--crv1-card-2));
}

/* History is never collapsed. It shows the latest result + five previous results; older rows stay behind “Xem thêm”. */
.crv1-progressiveMode .crv1-dynamicHistoryWrap { margin:-2px 0 14px; }
.crv1-progressiveMode .crv1-dynamicHistoryHeader,
.crv1-progressiveMode .crv1-dynamicHistoryMore {
  width:100%;
  min-height:34px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:7px 10px;
  border:1px solid var(--pxl-border, var(--crv1-border));
  border-radius:9px;
  background:var(--pxl-surface, var(--crv1-card));
  color:var(--pxl-primary, var(--crv1-primary));
  font:inherit;
  font-size:11px;
  font-weight:800;
  text-align:left;
}
.crv1-progressiveMode .crv1-dynamicHistoryMore {
  min-height:32px;
  justify-content:center;
  margin-top:6px;
  color:var(--pxl-primary, var(--crv1-primary));
  background:var(--pxl-surface, var(--crv1-card));
  cursor:pointer;
}
.crv1-progressiveMode .crv1-dynamicHistoryMore:hover { background:var(--pxl-hover-surface, var(--crv1-card-2)); border-color:var(--pxl-hover-border, var(--crv1-border)); }
.crv1-progressiveMode .crv1-dynamicHistoryMore:disabled { opacity:.62; cursor:default; }
.crv1-progressiveMode .crv1-dynamicHistoryList {
  margin-top:6px;
  overflow:hidden;
  border:1px solid var(--pxl-border, var(--crv1-border));
  border-radius:9px;
  background:var(--pxl-surface, var(--crv1-card));
}
.crv1-progressiveMode .crv1-dynamicHistoryRow {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  padding:9px 10px;
  border-top:1px solid var(--pxl-divider, var(--crv1-border));
}
.crv1-progressiveMode .crv1-dynamicHistoryRow:first-child { border-top:0; }
.crv1-progressiveMode .crv1-dynamicHistoryRow.is-latest {
  background:var(--pxl-selected-bg, var(--crv1-card-2));
  box-shadow:inset 2px 0 0 var(--pxl-primary, var(--crv1-primary));
}
.crv1-progressiveMode .crv1-dynamicHistoryMain {
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:3px;
  color:var(--crv1-muted);
  line-height:1.35;
}
.crv1-progressiveMode .crv1-dynamicHistoryHeadline {
  min-width:0;
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:5px;
}
.crv1-progressiveMode .crv1-dynamicHistoryLabel {
  color:var(--pxl-text-soft, var(--crv1-text));
  font-size:11.2px;
  font-weight:750;
}
.crv1-progressiveMode .crv1-dynamicHistoryRatio {
  color:var(--pxl-text-strong, var(--crv1-strong-text));
  font-size:16.5px;
  font-weight:900;
  line-height:1.12;
  letter-spacing:-.02em;
}
.crv1-progressiveMode .crv1-dynamicHistoryMeta {
  min-width:0;
  color:var(--pxl-neutral-text, var(--crv1-muted));
  font-size:10.4px;
  font-weight:620;
  line-height:1.42;
}
.crv1-progressiveMode .crv1-dynamicHistoryRow.is-latest .crv1-dynamicHistoryLabel {
  color:var(--pxl-text-soft, var(--crv1-text));
}
.crv1-progressiveMode .crv1-dynamicHistoryRow.is-latest .crv1-dynamicHistoryRatio {
  color:var(--pxl-text-strong, var(--crv1-strong-text));
}
.crv1-progressiveMode .crv1-dynamicHistoryExtreme {
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  padding:1px 5px;
  border:1px solid var(--pxl-neutral-border, var(--crv1-border));
  border-radius:999px;
  background:var(--pxl-neutral-bg, var(--crv1-card-2));
  color:var(--pxl-neutral-text, var(--crv1-muted));
  font-size:8.7px;
  font-weight:800;
  letter-spacing:.02em;
}
.crv1-progressiveMode .crv1-dynamicHistoryLatest {
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  padding:1px 6px;
  border:1px solid var(--pxl-info-border, var(--pxl-selected-border, var(--crv1-border)));
  border-radius:999px;
  background:var(--pxl-info-bg, var(--pxl-selected-bg, var(--crv1-card-2)));
  color:var(--pxl-info-text, var(--pxl-selected-text, var(--crv1-text)));
  font-size:8.7px;
  font-weight:900;
  letter-spacing:.025em;
}
.crv1-progressiveMode .crv1-dynamicHistoryDelta {
  display:inline-flex;
  align-items:center;
  white-space:nowrap;
  padding:2px 6px;
  border:1px solid var(--pxl-neutral-border, var(--crv1-border));
  border-radius:999px;
  background:var(--pxl-neutral-bg, var(--crv1-card-2));
  color:var(--pxl-neutral-text, var(--crv1-muted));
  font-size:9.8px;
  font-weight:800;
}
.crv1-progressiveMode .crv1-dynamicHistorySide {
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:4px;
}
.crv1-progressiveMode .crv1-dynamicHistoryTime {
  white-space:nowrap;
  color:var(--pxl-neutral-text, var(--crv1-muted));
  opacity:1;
  font-size:9.2px;
  font-weight:600;
}

@media (max-width:640px) {
  .crv1-progressiveMode .crv1-dynamicCurrentCompare { font-size:9.2px; margin-top:5px; }
  .crv1-progressiveMode .crv1-dynamicHistoryWrap { margin-bottom:10px; }
  .crv1-progressiveMode .crv1-dynamicHistoryHeader,
  .crv1-progressiveMode .crv1-dynamicHistoryMore { min-height:32px; padding:6px 9px; font-size:10.5px; }
  .crv1-progressiveMode .crv1-dynamicHistoryRow { grid-template-columns:1fr; gap:5px; padding:8px 9px; }
  .crv1-progressiveMode .crv1-dynamicHistoryMain { gap:3px; }
  .crv1-progressiveMode .crv1-dynamicHistoryLabel { font-size:10.8px; }
  .crv1-progressiveMode .crv1-dynamicHistoryRatio { font-size:16px; }
  .crv1-progressiveMode .crv1-dynamicHistoryMeta { font-size:10px; }
  .crv1-progressiveMode .crv1-dynamicHistorySide { flex-direction:row; align-items:center; justify-content:space-between; }
}

/* V13.88 — selective history delete + larger delete target + slightly stronger static-CR emphasis.
   Presentation only; calculation formulas and thresholds are unchanged. */
.crv1-progressiveMode .crv1-dynamicHistoryStaticCr {
  display:inline-flex;
  align-items:center;
  padding:0 4px;
  border:1px solid var(--pxl-neutral-border, var(--crv1-border));
  border-radius:4px;
  background:var(--pxl-neutral-bg, var(--crv1-card-2));
  color:var(--pxl-neutral-text, var(--crv1-muted));
  font-weight:820;
  white-space:nowrap;
}
.crv1-progressiveMode .crv1-dynamicHistorySideTop {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:5px;
}
.crv1-progressiveMode .crv1-dynamicHistoryDelete {
  width:30px;
  height:30px;
  flex:0 0 30px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  border:1px solid var(--pxl-border, var(--crv1-border));
  border-radius:8px;
  background:var(--pxl-surface, var(--crv1-card));
  color:var(--pxl-icon-muted, var(--crv1-muted));
  cursor:pointer;
  transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease;
}
.crv1-progressiveMode .crv1-dynamicHistoryDelete svg {
  width:16px;
  height:16px;
  fill:currentColor;
}
.crv1-progressiveMode .crv1-dynamicHistoryDelete:hover {
  border-color:var(--pxl-danger-border, var(--crv1-border));
  background:var(--pxl-danger-bg, var(--crv1-card-2));
  color:var(--pxl-danger-text, var(--crv1-text));
}
.crv1-progressiveMode .crv1-dynamicHistoryDelete:active { transform:scale(.96); }
.crv1-progressiveMode .crv1-dynamicHistoryDelete:disabled { opacity:.42; cursor:wait; }

.crv1-historyDeleteOverlay[hidden] { display:none !important; }
.crv1-historyDeleteOverlay {
  position:fixed;
  inset:0;
  z-index:var(--pxl-layer-modal,1000);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
  background:var(--pxl-overlay-backdrop, rgba(0,0,0,.68));
  backdrop-filter:blur(3px);
}
.crv1-historyDeleteDialog {
  width:min(390px,100%);
  padding:17px;
  border:1px solid var(--pxl-neutral-border,var(--crv1-border,rgba(148,163,184,.18)));
  border-radius:13px;
  background:var(--pxl-surface, var(--crv1-card));
  color:var(--pxl-text, var(--crv1-text));
  box-shadow:var(--pxl-dropdown-shadow, 0 22px 70px rgba(0,0,0,.28));
}
.crv1-historyDeleteTitle {
  margin:0 0 7px;
  font-size:15px;
  font-weight:850;
  line-height:1.3;
}
.crv1-historyDeleteMessage {
  color:var(--pxl-text-soft, var(--crv1-muted));
  font-size:12.5px;
  font-weight:600;
  line-height:1.5;
}
.crv1-historyDeleteActions {
  display:flex;
  justify-content:flex-end;
  gap:8px;
  margin-top:16px;
}
.crv1-historyDeleteActions button {
  min-height:35px;
  padding:7px 13px;
  border:1px solid var(--pxl-neutral-border,var(--crv1-border,rgba(148,163,184,.18)));
  border-radius:8px;
  font:inherit;
  font-size:12px;
  font-weight:800;
  cursor:pointer;
}
.crv1-historyDeleteCancel {
  background:var(--pxl-surface-2,var(--crv1-card-2,#151c25));
  color:var(--pxl-text-soft,var(--crv1-body-text,#c5ced7));
}
.crv1-historyDeleteConfirm {
  border-color:var(--pxl-danger-border,rgba(248,81,73,.42)) !important;
  background:var(--pxl-danger-bg,rgba(248,81,73,.08));
  color:var(--pxl-danger-text,#ffb4ae);
}
.crv1-historyDeleteCancel:hover { background:var(--pxl-hover-surface,#1a2330); }
.crv1-historyDeleteConfirm:hover { background:color-mix(in srgb,var(--pxl-danger,#f85149) 14%,var(--pxl-surface,#10161e)); }

@media (max-width:640px) {
  .crv1-progressiveMode .crv1-dynamicHistoryDelete { width:32px; height:32px; flex-basis:32px; }
  .crv1-progressiveMode .crv1-dynamicHistorySideTop { margin-left:auto; }
  .crv1-historyDeleteDialog { padding:15px; border-radius:12px; }
}


/* V14.05 — lịch sử nén động đã thuộc phiên bản cấu hình được khóa thay vì cho xóa. */
.crv1-progressiveMode .crv1-dynamicHistoryRevision {
  display:inline-flex;
  align-items:center;
  min-height:18px;
  padding:1px 6px;
  border:1px solid var(--pxl-neutral-border, var(--crv1-border));
  border-radius:999px;
  background:var(--pxl-neutral-bg, var(--crv1-card-2));
  color:var(--pxl-neutral-text, var(--crv1-muted));
  font-size:9px;
  font-weight:850;
  line-height:1;
  letter-spacing:.02em;
  white-space:nowrap;
}
.crv1-progressiveMode .crv1-dynamicHistoryLock {
  width:30px;
  height:30px;
  flex:0 0 30px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--pxl-border, var(--crv1-border));
  border-radius:8px;
  background:var(--pxl-surface, var(--crv1-card));
  color:var(--pxl-icon-muted, var(--crv1-muted));
  cursor:help;
}
.crv1-progressiveMode .crv1-dynamicHistoryLock svg {
  width:15px;
  height:15px;
  fill:currentColor;
}
@media (max-width:700px) {
  .crv1-progressiveMode .crv1-dynamicHistoryLock { width:32px; height:32px; flex-basis:32px; }
}


/* V14.06 — mobile history footer alignment.
   Presentation only: giữ nguyên công thức, dữ liệu, revision lock và hành vi xóa. */
@media (max-width:640px) {
  .crv1-progressiveMode .crv1-dynamicHistoryRow {
    grid-template-columns:minmax(0,1fr);
    gap:7px;
    align-items:stretch;
  }

  .crv1-progressiveMode .crv1-dynamicHistoryHeadline {
    row-gap:4px;
    column-gap:5px;
  }

  .crv1-progressiveMode .crv1-dynamicHistorySide {
    width:100%;
    min-width:0;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:center;
    gap:8px;
    padding-top:2px;
  }

  .crv1-progressiveMode .crv1-dynamicHistorySideTop {
    min-width:0;
    margin-left:0;
    justify-content:flex-start;
    flex-wrap:wrap;
    gap:5px;
  }

  .crv1-progressiveMode .crv1-dynamicHistoryTime {
    justify-self:end;
    align-self:center;
    margin-left:0;
    text-align:right;
  }

  .crv1-progressiveMode .crv1-dynamicHistoryLock,
  .crv1-progressiveMode .crv1-dynamicHistoryDelete {
    width:30px;
    height:30px;
    flex-basis:30px;
  }
}

@media (max-width:380px) {
  .crv1-progressiveMode .crv1-dynamicHistorySide {
    grid-template-columns:1fr;
    gap:4px;
  }

  .crv1-progressiveMode .crv1-dynamicHistoryTime {
    justify-self:end;
  }
}

/* V14.42 — Engine Geometry history detail affordance. The history row remains
 * compact; the optional geometry module owns the modal and analysis UI. */
.crv1-progressiveMode .crv1-dynamicHistoryGeometryLink{
  display:none;
  margin-top:5px;
  padding:0;
  border:0;
  background:transparent;
  color:var(--pxl-action-tertiary-text,var(--pxl-primary));
  font:inherit;
  font-size:var(--pxl-font-size-xs);
  font-weight:700;
  line-height:1.35;
  cursor:pointer;
  text-decoration:none;
}
.pxl-engine-geometry-enabled .crv1-progressiveMode .crv1-dynamicHistoryGeometryLink{display:inline-flex}
.pxl-engine-geometry-enabled .crv1-progressiveMode .crv1-dynamicHistoryRow{cursor:pointer;transition:background-color .16s ease,border-color .16s ease}
.pxl-engine-geometry-enabled .crv1-progressiveMode .crv1-dynamicHistoryRow:focus-visible{outline:2px solid var(--pxl-primary-ring);outline-offset:-2px}
@media (hover:hover) and (pointer:fine){
  .pxl-engine-geometry-enabled .crv1-progressiveMode .crv1-dynamicHistoryRow:hover{background:var(--pxl-hover-surface,var(--crv1-card-2))}
  .pxl-engine-geometry-enabled .crv1-progressiveMode .crv1-dynamicHistoryRow:hover .crv1-dynamicHistoryGeometryLink{color:var(--pxl-action-tertiary-hover-text,var(--pxl-primary));text-decoration:underline;text-underline-offset:2px}
}

/* V14.43 — history is the single comparison snapshot source. */
.crv1-progressiveMode .crv1-dynamicHistoryGeometryActions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:var(--pxl-space-3);
  margin-top:5px;
}
.crv1-progressiveMode .crv1-dynamicHistoryGeometryActions .crv1-dynamicHistoryGeometryLink{margin-top:0}
.crv1-progressiveMode .crv1-dynamicHistoryCompareChoice{
  display:inline-flex;
  align-items:center;
  gap:var(--pxl-space-1);
  min-height:28px;
  color:var(--pxl-muted);
  font-size:var(--pxl-font-size-xs);
  font-weight:700;
  cursor:pointer;
  user-select:none;
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareChoice.is-selected{color:var(--pxl-action-tertiary-text,var(--pxl-primary))}
.crv1-progressiveMode .crv1-dynamicHistoryCompareInput{
  width:16px;
  height:16px;
  margin:0;
  accent-color:var(--pxl-primary);
  cursor:pointer;
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareInput:focus-visible{outline:2px solid var(--pxl-primary-ring);outline-offset:2px}
@media (hover:hover) and (pointer:fine){
  .pxl-engine-geometry-enabled .crv1-progressiveMode .crv1-dynamicHistoryRow:hover .crv1-dynamicHistoryCompareChoice{color:var(--pxl-text-soft)}
  .pxl-engine-geometry-enabled .crv1-progressiveMode .crv1-dynamicHistoryRow:hover .crv1-dynamicHistoryCompareChoice.is-selected{color:var(--pxl-action-tertiary-hover-text,var(--pxl-primary))}
}
.pxl-engine-geometry-enabled .crv1-progressiveMode .crv1-dynamicHistoryRow.is-geometry-selected{background:var(--pxl-hover-surface,var(--crv1-card-2));box-shadow:inset 3px 0 0 var(--pxl-primary)}

@media (hover:hover) and (pointer:fine){
  .pxl-engine-geometry-enabled .crv1-progressiveMode .crv1-dynamicHistoryRow.is-geometry-selected:hover{background:var(--pxl-hover-surface,var(--crv1-card-2))}
}

/* V14.46 — explicit next-step CTA for history multi-select comparison.
   Selection data remains owned by Dynamic Compression history; Engine Geometry owns the compare modal. */
.crv1-progressiveMode .crv1-dynamicHistoryCompareCta[hidden]{display:none!important}
.crv1-progressiveMode .crv1-dynamicHistoryCompareCta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--pxl-space-3);
  margin-top:7px;
  padding:9px 10px;
  border:1px solid var(--pxl-selected-border,var(--pxl-border,var(--crv1-border)));
  border-radius:var(--pxl-radius-md);
  background:var(--pxl-selected-bg,var(--pxl-surface-2,var(--crv1-card-2)));
  color:var(--pxl-text,var(--crv1-text));
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareCtaCopy{
  display:grid;
  gap:2px;
  min-width:0;
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareCount{
  color:var(--pxl-text-strong,var(--crv1-strong-text));
  font-size:var(--pxl-font-size-sm,12px);
  font-weight:850;
  line-height:1.3;
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareCtaCopy small{
  color:var(--pxl-muted,var(--crv1-muted));
  font-size:var(--pxl-font-size-xs,10.5px);
  line-height:1.35;
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareCtaActions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  flex:0 0 auto;
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareNow,
.crv1-progressiveMode .crv1-dynamicHistoryCompareClear{
  min-height:34px;
  padding:0 11px;
  border-radius:var(--pxl-radius-md);
  font:inherit;
  font-size:var(--pxl-font-size-xs,10.5px);
  font-weight:800;
  cursor:pointer;
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareNow{
  border:1px solid var(--pxl-action-primary-border,var(--pxl-primary));
  background:var(--pxl-action-primary-bg,var(--pxl-primary));
  color:var(--pxl-action-primary-text,#fff);
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareNow:hover{
  background:var(--pxl-action-primary-hover-bg,var(--pxl-primary));
  border-color:var(--pxl-action-primary-hover-border,var(--pxl-primary));
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareClear{
  border:1px solid transparent;
  background:transparent;
  color:var(--pxl-action-tertiary-text,var(--pxl-primary));
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareClear:hover{
  background:var(--pxl-action-tertiary-hover-bg,var(--pxl-hover-surface,var(--crv1-card-2)));
  color:var(--pxl-action-tertiary-hover-text,var(--pxl-primary));
}
.crv1-progressiveMode .crv1-dynamicHistoryCompareNow:focus-visible,
.crv1-progressiveMode .crv1-dynamicHistoryCompareClear:focus-visible{
  outline:2px solid var(--pxl-primary-ring);
  outline-offset:2px;
}
@media(max-width:640px){
  .crv1-progressiveMode .crv1-dynamicHistoryCompareCta{
    align-items:stretch;
    flex-direction:column;
    gap:8px;
  }
  .crv1-progressiveMode .crv1-dynamicHistoryCompareCtaActions{
    width:100%;
    justify-content:stretch;
  }
  .crv1-progressiveMode .crv1-dynamicHistoryCompareNow{flex:1 1 auto}
  .crv1-progressiveMode .crv1-dynamicHistoryCompareClear{flex:0 0 auto}
}
@media(max-width:400px){
  .crv1-progressiveMode .crv1-dynamicHistoryCompareCtaActions{flex-direction:column;align-items:stretch}
  .crv1-progressiveMode .crv1-dynamicHistoryCompareNow,
  .crv1-progressiveMode .crv1-dynamicHistoryCompareClear{width:100%}
}


/* crv1-stale-dynamic-context-style: crv1-stale-dynamic-context.css */
/* V13.37 — previous dynamic context shown above the static-result CTA after static inputs change.
   Presentation only; uses the existing CRV1 color/spacing language. */
.crv1-staleDynamicContext {
  margin: 10px 0 0;
  padding: 10px 11px;
  border: 1px solid rgba(245,158,11,.26);
  border-radius: 9px;
  background: rgba(245,158,11,.055);
}

.crv1-staleDynamicContext[hidden] { display:none !important; }

.crv1-staleDynamicHead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
}

.crv1-staleDynamicLabel {
  color: var(--crv1-text);
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: .015em;
  text-transform: uppercase;
}

.crv1-staleDynamicBadge {
  flex: 0 0 auto;
  padding: 3px 7px;
  border: 1px solid rgba(245,158,11,.32);
  border-radius: 999px;
  background: rgba(245,158,11,.08);
  color: #fbbf24;
  font-size: 9.5px;
  font-weight: 850;
  line-height: 1.15;
  text-transform: uppercase;
}

.crv1-staleDynamicBody {
  display: flex;
  align-items: baseline;
  gap: 9px;
  min-width: 0;
}

.crv1-staleDynamicValue {
  flex: 0 0 auto;
  color: var(--crv1-text);
  font-size: 17px;
  font-weight: 900;
  line-height: 1.15;
}

.crv1-staleDynamicMeta {
  min-width: 0;
  color: var(--crv1-muted);
  font-size: 11px;
  font-weight: 650;
  line-height: 1.4;
}



/* V14.32 — when the static result is dirty, the helper becomes a 2-column
   icon/copy grid. The previous dynamic snapshot is a full-width third row;
   otherwise its intrinsic width expands column 1 and crushes the copy column. */
.crv1-guided-flow-ready.crv1-static-dirty .crv1-staticResultAdvice > .crv1-staleDynamicContext {
  grid-column: 1 / -1;
  width: 100%;
  min-width: 0;
  margin-top: 7px;
}

@media (max-width:640px) {
  .crv1-staleDynamicContext {
    margin-top: 9px;
    padding: 9px 10px;
  }

  .crv1-staleDynamicHead { margin-bottom: 5px; }
  .crv1-staleDynamicLabel { font-size: 10.8px; }
  .crv1-staleDynamicBadge { font-size: 9px; padding: 3px 6px; }

  .crv1-staleDynamicBody {
    display: block;
  }

  .crv1-staleDynamicValue {
    display: block;
    margin-bottom: 3px;
    font-size: 16.5px;
  }

  .crv1-staleDynamicMeta {
    display: block;
    font-size: 10.7px;
    line-height: 1.38;
  }
}

@media (prefers-reduced-motion:reduce) {
  .crv1-staleDynamicContext { animation:none !important; }
}


/* crv1-stale-result-visibility-style: crv1-stale-result-visibility.css */
/* V13.38: when the static inputs make the last dynamic result stale, the full
   dynamic result card is no longer presented as a current result. The compact
   previous-result snapshot above the CTA remains the only visible old result. */
[data-crv1].crv1-has-stale-dynamic-context .crv1-dynamicResultCard {
  display: none !important;
}


/* crv1-static-commit-ux-style: crv1-static-commit-ux.css */
/* V13.40 Static Commit UX — presentation only; stronger stale state + richer press/reveal. */
.crv1-staticResultTitle .crv1-staticCommitBadge {
  display:inline-flex;
  align-items:center;
  margin-left:auto;
  padding:3px 7px;
  border:1px solid rgba(234,179,8,.46);
  border-radius:999px;
  background:rgba(234,179,8,.10);
  color:#facc15;
  font-size:10px;
  font-weight:850;
  line-height:1;
  letter-spacing:.02em;
  white-space:nowrap;
}
.crv1-staticResultTitle .crv1-staticCommitBadge[hidden] { display:none !important; }
.crv1-progressiveMode .crv1-staticResultCard > label.crv1-staticResultTitle {
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.crv1-staticCommitRow {
  display:flex;
  justify-content:flex-end;
  margin-top:11px;
}
.crv1-staticCommitRow[hidden] { display:none !important; }
.crv1-staticCommitBtn { min-width:240px; }
.crv1-staticCommitBtn.is-loading { pointer-events:none; }

/* The committed result stays visible as context without looking disabled. */
.crv1-static-dirty .crv1-staticResultCard #crv1_cr,
.crv1-static-dirty .crv1-staticResultCard #crv1_staticGauge {
  transition:opacity .2s ease, filter .2s ease;
}
.crv1-staticCommitBtn {
  position:relative;
  overflow:hidden;
  transform:translateZ(0);
  transition:transform .11s ease, filter .16s ease;
}
.crv1-staticCommitBtn:active { transform:scale(.972); }
.crv1-staticCommitBtn.is-loading {
  transform:scale(.985);
  filter:brightness(.96);
}
.crv1-staticCommitBtn.is-loading::after {
  content:"";
  position:absolute;
  inset:-30% auto -30% -42%;
  width:34%;
  transform:skewX(-18deg);
  background:color-mix(in srgb,var(--pxl-on-primary,#fff) 14%,transparent);
  animation:crv1StaticButtonSweep .72s ease-in-out infinite;
  pointer-events:none;
}
@keyframes crv1StaticButtonSweep {
  0% { left:-42%; opacity:0; }
  18% { opacity:.9; }
  78% { opacity:.55; }
  100% { left:118%; opacity:0; }
}
.crv1-static-calc-pending .crv1-staticResultCard {
  transform:scale(.992);
  transition:transform .2s ease;
}
.crv1-static-calc-pending .crv1-staticResultCard #crv1_cr,
.crv1-static-calc-pending .crv1-staticResultCard #crv1_staticGauge,
.crv1-static-calc-pending .crv1-staticResultAdvice {
  opacity:.24;
}
@keyframes crv1StaticCommitPop {
  0% { transform:scale(.966); box-shadow:inset 3px 0 0 rgba(47,129,247,.72); }
  38% { transform:scale(1.014); box-shadow:inset 3px 0 0 rgba(47,129,247,.96), 0 0 0 3px rgba(47,129,247,.12); }
  68% { transform:scale(.996); box-shadow:inset 3px 0 0 rgba(47,129,247,.84), 0 0 0 1px rgba(47,129,247,.08); }
  100% { transform:scale(1); box-shadow:inset 3px 0 0 rgba(47,129,247,.72); }
}
.crv1-staticResultCard.crv1-staticCommitPop { animation:crv1StaticCommitPop .68s cubic-bezier(.16,.84,.24,1); }

@media (max-width:640px) {
  .crv1-staticCommitRow { display:grid; margin-top:10px; }
  .crv1-staticCommitBtn { width:100%; min-width:0; min-height:48px; }
  .crv1-staticResultTitle .crv1-staticCommitBadge { font-size:9.5px; }
}
@media (prefers-reduced-motion:reduce) {
  .crv1-staticResultCard.crv1-staticCommitPop { animation:none !important; }
  .crv1-staticCommitBtn.is-loading::after { animation:none !important; display:none !important; }
  .crv1-staticCommitBtn, .crv1-staticCommitBtn.is-loading { transform:none !important; transition:none !important; }
  .crv1-static-calc-pending .crv1-staticResultCard { transform:none !important; }
}


/* V14.23 — stale static result redesign: previous-result framing + warning banner. */
.crv1-progressiveMode .crv1-staticResultTitle .crv1-staticResultTitleText {
  display:inline-flex;
  align-items:center;
}
.crv1-progressiveMode .crv1-staticCommitNotice {
  display:flex;
  align-items:flex-start;
  gap:10px;
  margin:10px 0 12px;
  padding:12px 14px;
  border:1px solid var(--pxl-warning-border, rgba(234,179,8,.32));
  border-radius:12px;
  background:var(--pxl-warning-bg, rgba(234,179,8,.10));
  color:var(--pxl-warning-text, #d97706);
}
.crv1-progressiveMode .crv1-staticCommitNotice[hidden] { display:none !important; }
.crv1-progressiveMode .crv1-staticCommitNoticeIcon {
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:24px;
  height:24px;
  border-radius:999px;
  border:1px solid color-mix(in srgb, currentColor 24%, transparent);
  background:color-mix(in srgb, currentColor 10%, transparent);
  font-size:14px;
  line-height:1;
}
.crv1-progressiveMode .crv1-staticCommitNoticeText {
  color:var(--pxl-text-strong, var(--crv1-strong-text));
  font-size:13px;
  line-height:1.5;
}
.crv1-progressiveMode.crv1-static-dirty .crv1-staticResultCard {
  border-color:var(--pxl-border, var(--crv1-border)) !important;
  box-shadow:0 10px 28px color-mix(in srgb, var(--pxl-text,#0f172a) 5%, transparent), inset 0 0 0 1px var(--pxl-border, var(--crv1-border)) !important;
}
.crv1-progressiveMode.crv1-static-dirty .crv1-staticResultCard #crv1_cr {
  opacity:1;
  filter:none;
}
.crv1-progressiveMode.crv1-static-dirty .crv1-staticResultCard #crv1_staticGauge {
  opacity:.92;
  filter:saturate(.92);
}
.crv1-progressiveMode.crv1-static-dirty .crv1-staticResultAdvice {
  opacity:1;
  background:var(--pxl-tool-card,var(--crv1-card));
  border-color:var(--pxl-border, var(--crv1-border));
}
.crv1-progressiveMode.crv1-static-dirty .crv1-staticResultAdviceTitle,
.crv1-progressiveMode.crv1-static-dirty .crv1-staticResultAdviceText {
  opacity:1;
}
.crv1-progressiveMode.crv1-static-dirty .crv1-staticCommitRow {
  margin-top:14px;
}
@media (max-width:640px) {
  .crv1-progressiveMode .crv1-staticCommitNotice {
    gap:8px;
    padding:10px 11px;
  }
  .crv1-progressiveMode .crv1-staticCommitNoticeText {
    font-size:12px;
    line-height:1.45;
  }
}


/* crv1-next-step-cta-style: crv1-next-step-cta.css */
/* V14.55: shared presentation for stale static/dynamic context. */

/* When static inputs are dirty, the static warning + recalculate action are the
   authority. Keep the previous Dynamic snapshot when one exists. */
.crv1-guided-flow-ready.crv1-static-dirty .crv1-staticResultAdviceTitle,
.crv1-guided-flow-ready.crv1-static-dirty .crv1-staticResultAdviceText {
  display:none !important;
}

.crv1-guided-flow-ready.crv1-static-dirty .crv1-staticResultAdvice {
  display:none;
}

.crv1-guided-flow-ready.crv1-static-dirty .crv1-staticResultAdvice.crv1-has-stale-dynamic-context {
  display:block;
  margin-top:12px;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.crv1-guided-flow-ready.crv1-static-dirty .crv1-staticResultAdvice.crv1-has-stale-dynamic-context::before {
  content:none;
  display:none;
}
.crv1-guided-flow-ready.crv1-static-dirty .crv1-staticResultAdvice.crv1-has-stale-dynamic-context > .crv1-staleDynamicContext {
  width:100%;
  min-width:0;
  margin:0;
}


/* crv1-mobile-first-result-fx-style: crv1-mobile-first-result-fx.css */
/* V13.30 — Mobile-first dynamic UX + result micro-interactions.
   Presentation only. The base theme, formulas, credit/payment and save/load behavior remain owned by existing assets. */

/* Result FX is deliberately subtle and transform/opacity based so it stays cheap on mobile GPUs. */
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-card-pending {
  isolation: isolate;
}

.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-card-pending > * {
  opacity: .28;
  filter: saturate(.72);
  transition: opacity .14s ease, filter .14s ease;
}

.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-card-pending::after {
  content: '⚡ Đang tính kết quả mới...';
  position: absolute;
  z-index: 4;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 16px;
  border-radius: inherit;
  background: rgba(13,17,23,.38);
  color: #e5e7eb;
  font-size: 12.5px;
  font-weight: 800;
  letter-spacing: .01em;
  text-align: center;
  pointer-events: none;
}

.crv1-progressiveMode #crv1_btnDynamic.crv1-fx-button-loading {
  position: relative;
  overflow: hidden;
}

/* V14.33: keep the loading label visually stable; no animated overlay crosses it. */
.crv1-progressiveMode #crv1_btnDynamic.crv1-fx-button-loading::after {
  content: none !important;
  display: none !important;
}

.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop {
  animation: crv1FxResultPop .42s cubic-bezier(.2,.78,.24,1) both;
}

.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop #crv1_dynamicCr {
  animation: crv1FxValueHit .38s cubic-bezier(.2,.78,.24,1) both;
}

.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop #crv1_dynamicGaugeMarker {
  animation: crv1FxMarkerHit .42s cubic-bezier(.2,.78,.24,1) both;
}

.crv1-progressiveMode .crv1-dynamicPreviousResult.crv1-fx-previous-in {
  animation: crv1FxPreviousIn .28s ease-out both;
}

.crv1-progressiveMode .crv1-fx-error-hit #crv1_btnDynamic {
  animation: crv1FxErrorHit .22s ease-out both;
}

@keyframes crv1FxButtonSweep {
  0%   { left: -45%; opacity: 0; }
  24%  { opacity: 1; }
  100% { left: 120%; opacity: 0; }
}

@keyframes crv1FxResultPop {
  0%   { opacity: .42; transform: scale(.984); box-shadow: inset 3px 0 0 rgba(240,136,62,.50), 0 0 0 rgba(240,136,62,0); }
  58%  { opacity: 1; transform: scale(1.004); box-shadow: inset 3px 0 0 rgba(240,136,62,.92), 0 0 22px rgba(240,136,62,.13); }
  100% { opacity: 1; transform: scale(1); box-shadow: inset 3px 0 0 rgba(240,136,62,.78), 0 0 0 rgba(240,136,62,0); }
}

@keyframes crv1FxValueHit {
  0%   { transform: scale(.985); filter: brightness(.92); }
  62%  { transform: scale(1.012); filter: brightness(1.14); }
  100% { transform: scale(1); filter: brightness(1); }
}

@keyframes crv1FxMarkerHit {
  0%   { transform: translateX(-50%) scale(.84); opacity: .55; }
  62%  { transform: translateX(-50%) scale(1.28); opacity: 1; }
  100% { transform: translateX(-50%) scale(1); opacity: 1; }
}

@keyframes crv1FxPreviousIn {
  from { opacity: 0; transform: translateY(5px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes crv1FxErrorHit {
  0%,100% { transform: translateX(0); }
  35% { transform: translateX(-3px); }
  70% { transform: translateX(3px); }
}

/* Mobile result/history presentation. Dynamic form/control layout is owned by
   crv1-dynamic-funnel-boost.css (V14.39), so this layer no longer duplicates it. */
@media (max-width: 640px) {
  /* Main result: fewer nested-card gaps, same theme language. */
  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicResultCard.crv1-dynamicResultInPlace {
    margin: 8px 0 10px;
    padding: 11px;
    border-radius: 11px;
  }

  .crv1-progressiveMode .crv1-dynamicResultCard > label.crv1-dynamicResultTitle {
    margin-bottom: 7px;
    font-size: 12px;
  }

  .crv1-progressiveMode .crv1-dynamicResultCard.has-result #crv1_dynamicCr {
    min-height: 46px;
    padding-top: 8px;
    padding-bottom: 8px;
    font-size: 18px;
  }

  .crv1-progressiveMode .crv1-dynamicResultMeta {
    margin: 7px 1px 1px;
    font-size: 10.7px;
    line-height: 1.38;
  }

  .crv1-progressiveMode .crv1-dynamicResultCard .crv1-resultGauge {
    margin-top: 8px;
    padding: 8px 9px 7px;
  }

  .crv1-progressiveMode .crv1-dynamicResultCard.has-result .crv1-dynamicStatus:not(:empty) {
    margin-top: 8px;
    padding: 9px 10px;
    border-radius: 9px;
    font-size: 11.7px;
    line-height: 1.4;
  }

  .crv1-progressiveMode .crv1-dynamicResultCard.has-result #crv1_dynamicHint {
    margin-top: 7px;
    font-size: 10.7px;
    line-height: 1.4;
  }

  /* Previous result stays a lightweight comparison, not a second hero card. */
  .crv1-progressiveMode .crv1-dynamicPreviousResult {
    margin: -2px 0 10px;
    padding: 9px 10px;
    border-radius: 9px;
  }

  .crv1-progressiveMode .crv1-dynamicPreviousHead {
    display: flex;
    flex-direction: row;
    align-items: center;
    margin-bottom: 5px;
  }

  .crv1-progressiveMode .crv1-dynamicPreviousTag {
    display: none;
  }

  .crv1-progressiveMode .crv1-dynamicPreviousBody {
    display: grid;
    grid-template-columns: auto minmax(0,1fr);
    align-items: center;
    gap: 8px;
  }

  .crv1-progressiveMode .crv1-dynamicPreviousValue {
    font-size: 15px;
  }

  .crv1-progressiveMode .crv1-dynamicPreviousMeta {
    font-size: 10.4px;
    line-height: 1.35;
  }

  /* Keep purchased-credit status close to the analysis instead of floating far below it. */
  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-paywallBox {
    margin-top: 9px;
    padding: 9px 9px 0;
  }

  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-accessTop {
    gap: 6px;
  }

  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-accessBadge {
    min-height: 21px;
    padding: 3px 7px;
    font-size: 9.8px;
  }

  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-accessTitle {
    font-size: 12.5px;
  }

  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-accessDetail {
    margin-top: 4px;
    font-size: 11.3px;
    line-height: 1.4;
  }

  /* During the short reveal hold, don't expose the freshly-updated card before the pop. */
  .crv1-progressiveMode.crv1-fx-pending .crv1-dynamicResultCard:not(.crv1-fx-card-pending):not([hidden]) {
    opacity: .08;
    transform: scale(.985);
  }

  .crv1-progressiveMode.crv1-fx-pending .crv1-dynamicPreviousResult:not([hidden]) {
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .crv1-progressiveMode #crv1_btnDynamic.crv1-fx-button-loading::after,
  .crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop,
  .crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop #crv1_dynamicCr,
  .crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop #crv1_dynamicGaugeMarker,
  .crv1-progressiveMode .crv1-dynamicPreviousResult.crv1-fx-previous-in,
  .crv1-progressiveMode .crv1-fx-error-hit #crv1_btnDynamic {
    animation: none !important;
  }

  .crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-card-pending > * {
    filter: none;
  }

}

/* V13.41: use the same ~720 ms anticipation + stronger reveal on every viewport. */
.crv1-progressiveMode.crv1-fx-pending .crv1-dynamicResultCard:not(.crv1-fx-card-pending):not([hidden]) {
  opacity: .08;
  transform: scale(.985);
}
.crv1-progressiveMode.crv1-fx-pending .crv1-dynamicPreviousResult:not([hidden]) {
  opacity: 0;
}
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop {
  animation-duration: .68s;
  animation-timing-function: cubic-bezier(.16,.84,.24,1);
}
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop #crv1_dynamicCr {
  animation-duration: .52s;
}
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop #crv1_dynamicGaugeMarker {
  animation-duration: .60s;
}


/* crv1-config-modal-style: crv1-config-modal.css */
/* V13.35 Unified Configuration Modal — input is visible only for Rename. */
.crv1-configModal[hidden]{display:none!important}
.crv1-configModal{
  position:fixed;z-index:var(--pxl-layer-modal,1000);inset:0;display:flex;align-items:center;justify-content:center;padding:16px;
  font-family:var(--ecl-font,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif);
}
.crv1-configModalBackdrop{
  position:absolute;inset:0;background:var(--pxl-overlay-backdrop,rgba(2,6,12,.72));backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  opacity:0;transition:opacity .16s ease;
}
.crv1-configModalDialog{
  position:relative;width:min(430px,100%);max-height:min(86vh,640px);overflow:auto;
  padding:20px;border:1px solid var(--pxl-border,#303945);border-radius:15px;background:var(--pxl-overlay-surface,var(--pxl-surface,#141a22));color:var(--pxl-text,#f0f6fc);
  box-shadow:0 26px 80px rgba(0,0,0,.58);opacity:0;transform:translateY(6px) scale(.988);
  transition:opacity .17s ease,transform .17s ease;
}
.crv1-configModal.is-open .crv1-configModalBackdrop{opacity:1}
.crv1-configModal.is-open .crv1-configModalDialog{opacity:1;transform:translateY(0) scale(1)}
.crv1-configModalClose{
  position:absolute;top:11px;right:11px;width:32px;height:32px;padding:0;border:1px solid var(--pxl-border,#303945);border-radius:9px;
  background:var(--pxl-neutral-bg,var(--pxl-surface-2,#0d131a));color:var(--pxl-icon-muted,var(--pxl-muted,#8f9aa7));font:inherit;font-size:20px;line-height:1;cursor:pointer;
}
.crv1-configModalClose:hover{color:var(--pxl-text-strong,#f0f6fc);border-color:var(--pxl-hover-border,var(--pxl-border,#4a5664));background:var(--pxl-hover-surface,var(--pxl-surface-2,#131b24))}
.crv1-configModalTitle{margin:0 38px 7px 0;font-size:18px;font-weight:850;line-height:1.3;letter-spacing:-.01em}
.crv1-configModalText{margin:0;color:var(--pxl-text-soft,#aab4c0);font-size:13.5px;line-height:1.55}
.crv1-configModalDetail{
  margin-top:12px;padding:10px 12px;border:1px solid var(--pxl-neutral-border,var(--pxl-border,#2c3541));border-radius:10px;background:var(--pxl-neutral-bg,var(--pxl-surface-2,#0d131a));color:var(--pxl-text-strong,#e6edf3);
  font-size:13px;font-weight:800;line-height:1.45;overflow-wrap:anywhere;
}
.crv1-configModal.is-danger .crv1-configModalDetail{border-color:var(--pxl-danger-border,rgba(248,81,73,.30));background:var(--pxl-danger-bg,rgba(248,81,73,.07));color:var(--pxl-danger-text,#ffb4ae)}
.crv1-configModalInputWrap[hidden]{display:none!important}
.crv1-configModalInputWrap{display:block;margin-top:14px}
.crv1-configModalInputLabel{display:block;margin-bottom:6px;color:var(--pxl-text-soft,#c4ccd6);font-size:12.5px;font-weight:750}
.crv1-configModalInput{
  box-sizing:border-box;width:100%;height:46px;padding:0 12px;border:1px solid var(--pxl-border,#384454);border-radius:10px;
  outline:none;background:var(--pxl-input-bg,var(--pxl-surface-2,#0d131a));color:var(--pxl-text-input,var(--pxl-text,#f0f6fc));font:inherit;font-size:16px;transition:border-color .14s ease,box-shadow .14s ease;
}
.crv1-configModalInput:focus{border-color:var(--pxl-primary,#2f81f7);box-shadow:0 0 0 3px var(--pxl-primary-ring,rgba(47,129,247,.16))}
.crv1-configModalInput[aria-invalid="true"]{border-color:var(--pxl-danger,#f85149);box-shadow:0 0 0 3px color-mix(in srgb,var(--pxl-danger,#f85149) 12%,transparent)}
.crv1-configModalError{margin-top:8px;color:var(--pxl-danger-text,#ff9b94);font-size:12px;font-weight:700;line-height:1.4}
.crv1-configModalActions{margin-top:18px;gap:8px}
.crv1-configModalActions.is-inline{display:flex;justify-content:flex-end;align-items:center}
.crv1-configModalActions.is-stack{display:grid;grid-template-columns:1fr}
.crv1-configModalBtn{
  appearance:none;min-height:44px;padding:9px 14px;border:1px solid var(--pxl-border,#303945);border-radius:10px;
  color:var(--pxl-text,#f0f6fc);font:inherit;font-size:13.5px;font-weight:800;line-height:1.2;cursor:pointer;
  transition:background .14s ease,border-color .14s ease,transform .08s ease;
}
.crv1-configModalBtn:active{transform:scale(.985)}
.crv1-configModalBtn.is-primary{background:var(--pxl-primary,#2f81f7);border-color:var(--pxl-primary,#2f81f7);color:var(--pxl-on-primary,#fff)}
.crv1-configModalBtn.is-primary:hover{background:var(--pxl-primary-hover,#1f6feb);border-color:var(--pxl-primary-hover,#1f6feb)}
.crv1-configModalBtn.is-secondary{background:var(--pxl-neutral-bg,var(--pxl-surface-2,#202938));color:var(--pxl-text-strong,#f0f6fc)}
.crv1-configModalBtn.is-secondary:hover{background:var(--pxl-hover-surface,var(--pxl-surface-2,#293446));border-color:var(--pxl-hover-border,var(--pxl-border,#485565))}
.crv1-configModalBtn.is-quiet{background:transparent;color:var(--pxl-muted,#aab4c0)}
.crv1-configModalBtn.is-quiet:hover{background:var(--pxl-hover-surface,var(--pxl-surface-2,#1b232d));color:var(--pxl-text-strong,#f0f6fc)}
.crv1-configModalBtn.is-danger{background:var(--pxl-danger,#b4232d);border-color:var(--pxl-danger-border,#c7333e);color:var(--pxl-on-primary,#fff)}
.crv1-configModalBtn.is-danger:hover{background:color-mix(in srgb,var(--pxl-danger,#c62b36) 88%,black);border-color:var(--pxl-danger,#d53a45)}
.crv1-configModalBtn:focus-visible,.crv1-configModalClose:focus-visible{outline:2px solid var(--pxl-primary,#2f81f7);outline-offset:2px}
.crv1-configModal.is-busy .crv1-configModalBackdrop{cursor:progress}
.crv1-configModal button:disabled,.crv1-configModal input:disabled{opacity:.62;cursor:wait}

@media(max-width:640px){
  .crv1-configModal{align-items:flex-end;padding:10px 10px max(10px,env(safe-area-inset-bottom))}
  .crv1-configModalDialog{width:100%;padding:18px 15px 15px;border-radius:16px 16px 12px 12px}
  .crv1-configModalTitle{font-size:18px}
  .crv1-configModalActions.is-stack .crv1-configModalBtn{width:100%;min-height:48px}
  .crv1-configModalActions.is-inline{display:grid;grid-template-columns:1fr 1fr}
  .crv1-configModalActions.is-inline .crv1-configModalBtn{width:100%;min-height:46px}
}
@media(prefers-reduced-motion:reduce){
  .crv1-configModalBackdrop,.crv1-configModalDialog,.crv1-configModalBtn{transition:none!important}
}


/* crv1-config-library-style: crv1-config-library.css */
/* V13.73 Configuration Library — polished search + accent-insensitive lookup; preset-management UI only.
   Reuses the existing CRV1 theme variables; formulas/base theme remain untouched. */
.crv1-libraryEnhanced .crv1-legacyPresetControl { display:none !important; }

.crv1-configLibrary { margin-top: 12px; }
.crv1-configLibrary[hidden],
.crv1-libraryPanel[hidden],
.crv1-libraryEditing[hidden],
.crv1-libraryUpdateBtn[hidden],
.crv1-libraryEmpty[hidden] { display:none !important; }

.crv1-libraryEditing {
  display:flex;
  align-items:center;
  gap:8px;
  min-height:40px;
  margin: 0 0 10px;
  padding: 8px 10px;
  border: 1px solid rgba(47,129,247,.28);
  border-radius: 9px;
  background: rgba(47,129,247,.07);
}
.crv1-libraryEditingLabel {
  flex:0 0 auto;
  color:var(--crv1-muted);
  font-size:12px;
  font-weight:700;
}
.crv1-libraryEditing strong {
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:var(--crv1-text);
  font-size:13px;
}
.crv1-libraryClear {
  margin-left:auto;
  width:28px;
  height:28px;
  border:1px solid var(--crv1-border);
  border-radius:8px;
  background:var(--pxl-neutral-bg, var(--crv1-card-2));
  color:var(--pxl-neutral-text, var(--crv1-muted));
  cursor:pointer;
  font-size:18px;
  line-height:1;
}
.crv1-libraryClear:hover { color:var(--pxl-text-strong, var(--crv1-text)); border-color:var(--pxl-hover-border, var(--crv1-border)); background:var(--pxl-hover-surface, var(--crv1-card-2)); }

.crv1-libraryPrimaryActions {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
}
.crv1-libraryPrimaryActions .crv1-btn { width:100%; }
.crv1-libraryPrimaryActions .crv1-libraryUpdateBtn:not([hidden]) ~ #crv1_librarySaveNew,
.crv1-libraryPrimaryActions .crv1-libraryUpdateBtn:not([hidden]) ~ #crv1_libraryToggle { }
.crv1-libraryUpdateBtn { background:var(--crv1-ok); }
.crv1-libraryOpenBtn { background:var(--pxl-action-secondary-bg,var(--pxl-neutral-bg, var(--crv1-card-2))); color:var(--pxl-action-secondary-text,var(--pxl-text-strong, var(--crv1-text))); border-color:var(--pxl-action-secondary-border,var(--pxl-neutral-border, var(--crv1-border))); }
.crv1-libraryCount {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:20px;
  margin-left:4px;
  padding:0 6px;
  border-radius:999px;
  background:var(--pxl-selected-bg, var(--crv1-card-2));
  color:var(--pxl-selected-text, var(--crv1-text));
  font-size:11px;
  font-weight:800;
}

.crv1-libraryPanel {
  width:100%;
  min-width:0;
  margin-top:10px;
  padding:11px;
  border:1px solid var(--crv1-border);
  border-radius:11px;
  background:var(--pxl-tool-card-soft, var(--crv1-card-2));
}
.crv1-libraryToolbar {
  display:flex;
  align-items:center;
  width:100%;
  max-width:100%;
  min-width:0;
  gap:9px;
  margin:0 0 11px;
}
.crv1-libraryToolbar[hidden],
.crv1-librarySortWrap[hidden],
.crv1-librarySearchClear[hidden] { display:none !important; }
.crv1-librarySearchWrap {
  position:relative;
  flex:1 1 0;
  width:100%;
  max-width:100%;
  min-width:0;
  margin:0;
  padding:0;
}
.crv1-librarySearchIcon {
  position:absolute;
  left:14px;
  top:50%;
  width:16px;
  height:16px;
  transform:translateY(-50%);
  color:var(--crv1-muted);
  font-size:0;
  line-height:1;
  pointer-events:none;
}
.crv1-librarySearchIcon::before {
  content:"";
  position:absolute;
  left:1px;
  top:1px;
  width:9px;
  height:9px;
  border:1.6px solid currentColor;
  border-radius:50%;
}
.crv1-librarySearchIcon::after {
  content:"";
  position:absolute;
  width:6px;
  height:1.6px;
  left:10px;
  top:11px;
  border-radius:999px;
  background:currentColor;
  transform:rotate(45deg);
  transform-origin:left center;
}
.crv1-librarySearchWrap input[type="search"] {
  -webkit-appearance:none !important;
  appearance:none !important;
  display:block !important;
  box-sizing:border-box !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  height:44px !important;
  min-height:44px !important;
  margin:0 !important;
  padding:10px 42px 10px 40px !important;
  border:1px solid var(--crv1-border) !important;
  border-radius:10px !important;
  background:var(--crv1-input-bg,#0d1117) !important;
  color:var(--crv1-text) !important;
  font:inherit !important;
  font-size:13.5px !important;
  font-weight:500 !important;
  line-height:1.35 !important;
  outline:none !important;
  box-shadow:inset 0 1px 0 var(--pxl-subtle-bg, transparent) !important;
  transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease !important;
}
.crv1-librarySearchWrap input[type="search"]::placeholder {
  color:var(--crv1-muted) !important;
  opacity:.78 !important;
}
.crv1-librarySearchWrap input[type="search"]:hover {
  border-color:var(--pxl-hover-border, var(--crv1-border)) !important;
}
.crv1-librarySearchWrap input[type="search"]:focus {
  border-color:var(--crv1-accent) !important;
  background:var(--pxl-input-bg, var(--crv1-input-bg)) !important;
  box-shadow:0 0 0 3px var(--pxl-primary-ring, rgba(47,129,247,.14)) !important;
}
.crv1-librarySearchWrap input[type="search"]:focus + .crv1-librarySearchClear,
.crv1-librarySearchWrap:focus-within .crv1-librarySearchIcon {
  color:var(--pxl-selected-text, var(--pxl-link, var(--crv1-accent)));
}
.crv1-librarySearchWrap input[type="search"]::-webkit-search-decoration,
.crv1-librarySearchWrap input[type="search"]::-webkit-search-cancel-button,
.crv1-librarySearchWrap input[type="search"]::-webkit-search-results-button,
.crv1-librarySearchWrap input[type="search"]::-webkit-search-results-decoration {
  -webkit-appearance:none;
  display:none;
}
.crv1-librarySearchClear {
  position:absolute;
  right:8px;
  top:50%;
  transform:translateY(-50%);
  display:flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  padding:0;
  border:0;
  border-radius:7px;
  background:var(--pxl-subtle-bg, transparent);
  color:var(--crv1-muted);
  cursor:pointer;
  font-size:18px;
  line-height:1;
}
.crv1-librarySearchClear:hover { color:var(--pxl-text-strong, var(--crv1-text)); background:var(--pxl-hover-surface, var(--crv1-card-2)); }
.crv1-librarySortWrap {
  flex:0 0 142px;
  width:142px;
  max-width:42%;
  min-width:0;
}
.crv1-librarySortWrap select {
  width:100%;
  min-height:40px !important;
  padding-left:11px !important;
  padding-right:28px !important;
  font-size:12.5px !important;
  font-weight:700;
  cursor:pointer;
}

.crv1-libraryList { display:grid; gap:8px; }
.crv1-libraryCard {
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  padding:11px;
  border:1px solid var(--crv1-border);
  border-radius:10px;
  background:var(--crv1-card-2);
}
.crv1-libraryCard.is-current {
  border-color:rgba(47,129,247,.48);
  box-shadow:inset 3px 0 0 rgba(47,129,247,.72);
}
.crv1-libraryCardMain { min-width:0; }
.crv1-libraryCardTitleRow { display:flex; align-items:center; gap:7px; min-width:0; }
.crv1-libraryCardTitle {
  margin:0;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:var(--crv1-text);
  font-size:14px;
  font-weight:800;
}
.crv1-libraryCurrentBadge,
.crv1-libraryDynamicBadge {
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  min-height:20px;
  padding:2px 6px;
  border-radius:999px;
  font-size:10px;
  font-weight:800;
  line-height:1;
}
.crv1-libraryCurrentBadge { color:var(--pxl-selected-text, var(--pxl-link, var(--crv1-accent))); background:var(--pxl-selected-bg, var(--crv1-card-2)); border:1px solid var(--pxl-selected-border, var(--crv1-border)); }
.crv1-libraryDynamicBadge { color:var(--pxl-success-text, var(--crv1-ok)); background:var(--pxl-success-bg, var(--crv1-card-2)); border:1px solid var(--pxl-success-border, var(--crv1-border)); }
.crv1-librarySummary {
  margin-top:4px;
  color:var(--crv1-muted);
  font-size:12px;
  line-height:1.4;
}
.crv1-libraryNote {
  margin-top:3px;
  color:var(--pxl-text-soft, var(--crv1-muted));
  font-size:11.5px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.crv1-libraryMeta { margin-top:4px; color:var(--pxl-muted, var(--crv1-muted)); font-size:10.5px; }

.crv1-libraryCardActions { display:flex; align-items:center; gap:6px; }
.crv1-libraryEditBtn {
  min-height:34px !important;
  padding:6px 10px !important;
  font-size:12px !important;
}
.crv1-libraryMore { position:relative; }
.crv1-libraryMore > summary {
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:center;
  width:34px;
  height:34px;
  border:1px solid var(--crv1-border);
  border-radius:8px;
  background:var(--pxl-neutral-bg, var(--crv1-card-2));
  color:var(--pxl-text-strong, var(--crv1-text));
  cursor:pointer;
  font-size:18px;
  line-height:1;
}
.crv1-libraryMore > summary::-webkit-details-marker { display:none; }
.crv1-libraryMenu {
  position:absolute;
  z-index:var(--pxl-layer-dropdown,100);
  right:0;
  top:39px;
  width:150px;
  padding:5px;
  border:1px solid var(--crv1-border);
  border-radius:9px;
  background:var(--pxl-overlay-surface, var(--crv1-card));
  box-shadow:0 12px 28px rgba(0,0,0,.34);
}
.crv1-libraryMenu button {
  display:block;
  width:100%;
  padding:8px 9px;
  border:0;
  border-radius:7px;
  background:transparent;
  color:var(--crv1-text);
  text-align:left;
  font:inherit;
  font-size:12px;
  cursor:pointer;
}
.crv1-libraryMenu button:hover { background:var(--pxl-hover-surface, var(--crv1-card-2)); }
.crv1-libraryMenu .is-danger { color:var(--pxl-danger-text, #ff7b72); }
.crv1-libraryEmpty { text-align:center; padding:13px 4px; }

@media (min-width:641px) {
  .crv1-libraryPrimaryActions:has(.crv1-libraryUpdateBtn:not([hidden])) { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:640px) {
  .crv1-libraryPrimaryActions { grid-template-columns:1fr; }
  .crv1-libraryToolbar { align-items:stretch; }
  .crv1-librarySearchWrap { flex:1 1 100%; }
  .crv1-librarySortWrap { flex:0 0 132px; width:132px; max-width:42%; }
  .crv1-libraryCard { grid-template-columns:1fr; }
  .crv1-libraryCardActions { justify-content:flex-end; }
  .crv1-libraryMenu { right:0; }
}


/* V13.73 Saved Configuration Library Modal — theme-synced, wider and clipping-safe. */
.crv1-libraryModal[hidden]{display:none!important}
.crv1-libraryModal{
  position:fixed;z-index:var(--pxl-layer-modal,1000);inset:0;display:flex;align-items:center;justify-content:center;padding:24px;
  color:var(--crv1-text);font-family:var(--crv1-font,inherit);
}
.crv1-libraryModalBackdrop{
  position:absolute;inset:0;background:var(--pxl-overlay-backdrop,rgba(2,6,12,.74));backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  opacity:0;transition:opacity .16s ease;
}
.crv1-libraryModalDialog{
  position:relative;display:flex;flex-direction:column;width:min(920px,calc(100vw - 48px));
  min-height:min(400px,calc(100vh - 48px));min-height:min(400px,calc(100dvh - 48px));max-height:min(82vh,820px);max-height:min(82dvh,820px);
  overflow:hidden;border:1px solid var(--crv1-border);border-radius:var(--crv1-radius,16px);background:var(--crv1-card);color:var(--crv1-text);
  box-shadow:0 28px 90px rgba(0,0,0,.54);opacity:0;transform:translateY(7px) scale(.99);
  transition:opacity .17s ease,transform .17s ease;
}
.crv1-libraryModal.is-open .crv1-libraryModalBackdrop{opacity:1}
.crv1-libraryModal.is-open .crv1-libraryModalDialog{opacity:1;transform:translateY(0) scale(1)}
.crv1-libraryModalHeader{
  flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 18px 14px;
  border-bottom:1px solid var(--crv1-border);background:var(--pxl-tool-card-soft, var(--crv1-card-2));
}
.crv1-libraryModalTitleWrap{min-width:0}
.crv1-libraryModalTitle{margin:0;color:var(--crv1-text);font-size:18px;font-weight:850;line-height:1.25;letter-spacing:-.01em}
.crv1-libraryModalSub{margin-top:3px;color:var(--crv1-muted);font-size:12px;line-height:1.3}
.crv1-libraryModalCount{
  display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;margin-left:3px;padding:0 6px;
  border-radius:999px;background:var(--pxl-neutral-bg, var(--crv1-card-2));color:var(--pxl-neutral-text, var(--crv1-text));font-size:10.5px;font-weight:800;
}
.crv1-libraryModalClose{
  flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--crv1-border);
  border-radius:10px;background:var(--pxl-neutral-bg, var(--crv1-input-bg));color:var(--pxl-icon-muted, var(--crv1-muted));font:inherit;font-size:20px;line-height:1;cursor:pointer;
}
.crv1-libraryModalClose:hover{color:var(--pxl-text-strong,var(--crv1-text));border-color:var(--pxl-hover-border,var(--crv1-border));background:var(--pxl-hover-surface,var(--crv1-card-2))}
.crv1-libraryModalClose:focus-visible{outline:2px solid var(--pxl-primary,var(--crv1-accent));outline-offset:2px}
.crv1-libraryModalBody{
  flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:16px 18px 18px;
  scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--pxl-icon-muted,var(--crv1-muted)) transparent;
}
.crv1-libraryModalBody::-webkit-scrollbar{width:9px}
.crv1-libraryModalBody::-webkit-scrollbar-track{background:transparent}
.crv1-libraryModalBody::-webkit-scrollbar-thumb{background:var(--pxl-icon-muted,var(--crv1-muted));border:2px solid transparent;border-radius:999px;background-clip:padding-box}
.crv1-libraryModal .crv1-libraryPanel{margin:0;padding:0;border:0;border-radius:0;background:transparent}
.crv1-libraryModal .crv1-libraryToolbar{position:sticky;top:-16px;z-index:5;padding:16px 0 12px;margin:0;background:var(--crv1-card)}
.crv1-libraryModal .crv1-libraryList{padding-bottom:2px}
.crv1-libraryModal .crv1-libraryCard{padding:13px 14px;background:var(--crv1-card-2)}
.crv1-libraryModal .crv1-libraryEditBtn{min-width:68px}
.crv1-libraryModal .crv1-libraryMore{z-index:6}
.crv1-libraryModal .crv1-libraryMore.is-menu-up .crv1-libraryMenu{top:auto;bottom:39px}

@media(max-width:760px){
  .crv1-libraryModal{padding:16px}
  .crv1-libraryModalDialog{width:min(100%,760px);min-height:min(390px,calc(100vh - 32px));min-height:min(390px,calc(100dvh - 32px));max-height:88vh;max-height:88dvh}
}
@media(max-width:640px){
  .crv1-libraryModal{align-items:flex-end;padding:10px 10px max(10px,env(safe-area-inset-bottom))}
  .crv1-libraryModalDialog{width:100%;height:min(88vh,760px);height:min(88dvh,760px);min-height:0;max-height:calc(100vh - max(20px,env(safe-area-inset-bottom)));max-height:calc(100dvh - max(20px,env(safe-area-inset-bottom)));border-radius:var(--crv1-radius,16px) var(--crv1-radius,16px) 12px 12px}
  .crv1-libraryModalHeader{padding:15px 15px 12px}
  .crv1-libraryModalBody{padding:12px 12px max(16px,env(safe-area-inset-bottom))}
  .crv1-libraryModal .crv1-libraryToolbar{top:-12px;padding:12px 0 10px}
  .crv1-libraryModal .crv1-libraryCard{grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:11px}
  .crv1-libraryModal .crv1-libraryCardActions{justify-content:flex-end}
  .crv1-libraryModal .crv1-libraryEditBtn{min-width:60px!important;padding:7px 10px!important}
}
@media(max-width:430px){
  .crv1-libraryModal .crv1-libraryToolbar{display:block}
  .crv1-libraryModal .crv1-librarySortWrap{width:100%;max-width:100%;margin-top:8px}
  .crv1-libraryModal .crv1-libraryCard{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){
  .crv1-libraryModalBackdrop,.crv1-libraryModalDialog{transition:none!important}
}


/* crv1-save-ux-style: crv1-save-ux.css */
/* V13.15.1 Save UX — presentation-only layer.
   Reuses the existing CRV1 theme variables; formulas/base theme remain untouched. */
.crv1-saveBoxEnhanced .crv1-saveHeader { margin-bottom:4px; }
.crv1-saveLead { margin:0 0 14px; }
.crv1-saveFieldLabel {
  display:block;
  margin:0 0 7px;
  color:var(--crv1-text);
  font-size:14px;
  font-weight:700;
}
.crv1-saveNameRow { margin:0 0 9px; }
.crv1-noteToggle {
  appearance:none;
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:34px;
  margin:0 0 10px;
  padding:5px 0;
  border:0;
  background:transparent;
  color:var(--pxl-selected-text, var(--pxl-link, #2f81f7));
  font:inherit;
  font-size:13px;
  font-weight:800;
  cursor:pointer;
  text-align:left;
}
.crv1-noteToggle span { color:var(--crv1-muted); font-weight:600; }
.crv1-noteToggle:hover { color:var(--pxl-link-hover,var(--crv1-accent-hover)); }
.crv1-noteToggle:focus-visible {
  outline:2px solid rgba(47,129,247,.55);
  outline-offset:3px;
  border-radius:6px;
}
.crv1-noteRowCollapsed[hidden] { display:none !important; }
.crv1-noteRowCollapsed {
  margin:0 0 11px;
  padding:11px;
  border:1px solid var(--crv1-border);
  border-radius:10px;
  background:var(--pxl-neutral-bg,var(--crv1-card-2));
}
.crv1-noteRowCollapsed textarea { min-height:76px; }
.crv1-saveBoxEnhanced.is-editing #crv1_saveTitle { color:var(--pxl-selected-text, var(--pxl-link, #2f81f7)); }
.crv1-saveBoxEnhanced.is-editing .crv1-libraryEditing {
  margin-top:2px;
  border-color:rgba(47,129,247,.36);
}
@media (max-width:640px) {
  .crv1-noteToggle { width:100%; }
}


/* V14.01 — Save panel clarity: one status, one primary action, quieter secondary actions. */
.crv1-saveBoxEnhanced .crv1-memberSaveHint { display:none !important; }
/* Keep the state node for JS compatibility, but do not repeat the same status in the UI. */
.crv1-saveBoxEnhanced .crv1-libraryEditing { display:none !important; }
.crv1-saveBoxEnhanced .crv1-saveLead { margin-bottom:14px; }
.crv1-saveBoxEnhanced .crv1-profileDetailLink {
  margin:2px 0 12px;
  padding:10px 12px;
  background:rgba(47,129,247,.045);
  border-color:rgba(47,129,247,.18);
}
.crv1-saveBoxEnhanced .crv1-profileDetailLink:hover {
  background:rgba(47,129,247,.085);
  border-color:rgba(47,129,247,.34);
}
.crv1-saveBoxEnhanced .crv1-configLibrary { margin-top:0; }
.crv1-saveBoxEnhanced .crv1-libraryPrimaryActions {
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:9px;
}
.crv1-saveBoxEnhanced .crv1-libraryUpdateBtn:not([hidden]) {
  grid-column:1 / -1 !important;
  background:var(--crv1-accent);
}
.crv1-saveBoxEnhanced .crv1-libraryUpdateBtn:not([hidden]):hover { background:var(--crv1-accent-hover); }
.crv1-saveBoxEnhanced.is-editing #crv1_librarySaveNew,
.crv1-saveBoxEnhanced.is-editing #crv1_libraryToggle {
  background:var(--pxl-action-secondary-bg,var(--pxl-neutral-bg,var(--crv1-card-2)));
  border-color:var(--pxl-action-secondary-border,var(--pxl-neutral-border,var(--crv1-border)));
  color:var(--pxl-action-secondary-text,var(--pxl-text-strong,var(--crv1-text)));
}
.crv1-saveBoxEnhanced.is-editing #crv1_librarySaveNew:hover,
.crv1-saveBoxEnhanced.is-editing #crv1_libraryToggle:hover {
  background:var(--pxl-action-secondary-hover-bg,var(--pxl-hover-surface,var(--crv1-card-2)));
  border-color:var(--pxl-action-secondary-hover-border,var(--pxl-hover-border,var(--crv1-border)));
}
.crv1-saveBoxEnhanced:not(.is-editing) #crv1_librarySaveNew { grid-column:1 / -1; }
.crv1-saveBoxEnhanced .crv1-libraryNewBtn {
  grid-column:1 / -1 !important;
  min-height:36px;
  background:transparent !important;
  border-color:transparent !important;
  color:var(--pxl-action-tertiary-text, var(--pxl-link, #2f81f7)) !important;
  font-size:13px;
}
.crv1-saveBoxEnhanced .crv1-libraryNewBtn:hover {
  background:var(--pxl-action-tertiary-hover-bg,var(--pxl-primary-tint,rgba(47,129,247,.06))) !important;
  border-color:transparent !important;
}
#crv1_saveHint:empty { display:none; }
@media (max-width:640px) {
  .crv1-saveBoxEnhanced .crv1-libraryPrimaryActions { grid-template-columns:1fr !important; }
  .crv1-saveBoxEnhanced .crv1-libraryUpdateBtn:not([hidden]),
  .crv1-saveBoxEnhanced:not(.is-editing) #crv1_librarySaveNew,
  .crv1-saveBoxEnhanced .crv1-libraryNewBtn { grid-column:1; }
}


/* crv1-profile-detail-link-style: crv1-profile-detail-link.css */
/* V14.00 — lối tắt sang Cấu hình chi tiết; không ảnh hưởng công thức. */
.crv1-profileDetailLink{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 12px;padding:12px 13px;border:1px solid rgba(47,129,247,.24);border-radius:12px;background:rgba(47,129,247,.07);color:var(--pxl-text,#dfe5eb)!important;text-decoration:none;font-family:inherit}
.crv1-profileDetailLink[hidden]{display:none!important}.crv1-profileDetailLink:hover{border-color:rgba(47,129,247,.42);background:rgba(47,129,247,.11)}.crv1-profileDetailLink span{min-width:0}.crv1-profileDetailLink strong{display:block;color:var(--pxl-text-strong,#e8edf2);font-size:12px;font-weight:700;line-height:1.3}.crv1-profileDetailLink small{display:block;margin-top:3px;color:var(--pxl-muted,#8e99a6);font-size:10.5px;line-height:1.4}.crv1-profileDetailLink b{flex:0 0 auto;color:var(--pxl-selected-text, var(--pxl-link, #2f81f7));font-size:17px;font-weight:700}

/* V14.01: secondary, not a required save step. */
.crv1-saveBoxEnhanced .crv1-profileDetailLink{margin:2px 0 12px;padding:10px 12px;background:rgba(47,129,247,.045);border-color:rgba(47,129,247,.18)}
.crv1-saveBoxEnhanced .crv1-profileDetailLink:hover{background:rgba(47,129,247,.085);border-color:rgba(47,129,247,.34)}


/* V14.04 — tăng độ nhận diện cho “Cấu hình chi tiết” nhưng vẫn thấp hơn CTA Cập nhật cấu hình. */
.crv1-saveBoxEnhanced .crv1-profileDetailLink{
  position:relative;
  min-height:58px;
  margin:4px 0 13px;
  padding:11px 13px 11px 14px;
  border-color:color-mix(in srgb, var(--pxl-primary,#2f81f7) 34%, var(--pxl-border,#30363d));
  background:linear-gradient(90deg,
    color-mix(in srgb, var(--pxl-primary,#2f81f7) 8%, var(--pxl-surface-2,#151c25)),
    color-mix(in srgb, var(--pxl-primary,#2f81f7) 3%, var(--pxl-surface-2,#151c25)) 72%);
  box-shadow:inset 3px 0 0 color-mix(in srgb, var(--pxl-primary,#2f81f7) 72%, transparent);
  transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .08s ease;
}
.crv1-saveBoxEnhanced .crv1-profileDetailLink::before{
  content:'▦';
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  border:1px solid color-mix(in srgb, var(--pxl-primary,#2f81f7) 36%, var(--pxl-border,#30363d));
  border-radius:9px;
  background:color-mix(in srgb, var(--pxl-primary,#2f81f7) 10%, transparent);
  color:var(--pxl-primary-soft,var(--pxl-selected-text, var(--pxl-link, #2f81f7)));
  font-size:14px;
  line-height:1;
}
.crv1-saveBoxEnhanced .crv1-profileDetailLink span{flex:1 1 auto;}
.crv1-saveBoxEnhanced .crv1-profileDetailLink strong{
  color:var(--pxl-text-strong,#e8edf2);
  font-size:12.5px;
  font-weight:800;
  letter-spacing:.005em;
}
.crv1-saveBoxEnhanced .crv1-profileDetailLink small{
  margin-top:4px;
  color:color-mix(in srgb, var(--pxl-muted,#8e99a6) 90%, var(--pxl-text,#dfe5eb));
  font-size:10.75px;
}
.crv1-saveBoxEnhanced .crv1-profileDetailLink b{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  border-radius:999px;
  background:color-mix(in srgb, var(--pxl-primary,#2f81f7) 10%, transparent);
  color:var(--pxl-primary-soft,var(--pxl-selected-text, var(--pxl-link, #2f81f7)));
  font-size:18px;
  transition:transform .16s ease,background .16s ease;
}
.crv1-saveBoxEnhanced .crv1-profileDetailLink:hover{
  border-color:color-mix(in srgb, var(--pxl-primary,#2f81f7) 58%, var(--pxl-border,#30363d));
  background:linear-gradient(90deg,
    color-mix(in srgb, var(--pxl-primary,#2f81f7) 13%, var(--pxl-surface-2,#151c25)),
    color-mix(in srgb, var(--pxl-primary,#2f81f7) 6%, var(--pxl-surface-2,#151c25)) 72%);
  box-shadow:inset 3px 0 0 var(--pxl-primary,#2f81f7),0 0 0 1px color-mix(in srgb, var(--pxl-primary,#2f81f7) 8%, transparent);
}
.crv1-saveBoxEnhanced .crv1-profileDetailLink:hover b{transform:translateX(2px);background:color-mix(in srgb, var(--pxl-primary,#2f81f7) 16%, transparent);}
.crv1-saveBoxEnhanced .crv1-profileDetailLink:active{transform:translateY(1px);}
.crv1-saveBoxEnhanced .crv1-profileDetailLink:focus-visible{
  outline:3px solid color-mix(in srgb, var(--pxl-primary,#2f81f7) 20%, transparent);
  outline-offset:2px;
}
@supports not (background:color-mix(in srgb, black 50%, transparent)){
  .crv1-saveBoxEnhanced .crv1-profileDetailLink{border-color:rgba(47,129,247,.34);background:rgba(47,129,247,.075);box-shadow:inset 3px 0 0 rgba(47,129,247,.72)}
  .crv1-saveBoxEnhanced .crv1-profileDetailLink:hover{border-color:rgba(47,129,247,.58);background:rgba(47,129,247,.12)}
  .crv1-saveBoxEnhanced .crv1-profileDetailLink::before,
  .crv1-saveBoxEnhanced .crv1-profileDetailLink b{background:rgba(47,129,247,.10)}
}
@media(max-width:520px){
  .crv1-saveBoxEnhanced .crv1-profileDetailLink{padding:11px 12px;gap:10px;}
  .crv1-saveBoxEnhanced .crv1-profileDetailLink::before{width:26px;height:26px;}
  .crv1-saveBoxEnhanced .crv1-profileDetailLink b{width:26px;height:26px;}
}


/* crv1-new-config-style: crv1-new-config.css */
/* V13.34 New Configuration — draft/new-workspace UX only. Shared modal lives in crv1-config-modal.css. */
.crv1-libraryNewBtn {
  grid-column:1 / -1;
  background:var(--pxl-neutral-bg,var(--crv1-card-2));
  border:1px solid var(--crv1-border);
  color:var(--crv1-text);
}
.crv1-libraryNewBtn:hover {
  background:var(--pxl-hover-surface,var(--crv1-card-2));
  border-color:var(--pxl-hover-border,var(--crv1-border));
}
.crv1-libraryNewBtn:focus-visible {
  outline:2px solid rgba(47,129,247,.55);
  outline-offset:2px;
}
.crv1-saveBoxEnhanced.is-editing .crv1-libraryUpdateBtn:not([hidden]) {
  grid-column:1 / -1;
}
.crv1-saveBoxEnhanced.is-new-draft {
  border-color:rgba(47,129,247,.34);
}
.crv1-saveBoxEnhanced.is-new-draft #crv1_saveTitle { color:var(--pxl-selected-text, var(--pxl-link, #2f81f7)); }
.crv1-saveBoxEnhanced.is-new-draft #crv1_memberSaveHint {
  display:inline-flex;
  align-items:center;
  min-height:24px;
  margin:2px 0 10px;
  padding:3px 8px;
  border:1px solid rgba(47,129,247,.28);
  border-radius:999px;
  background:rgba(47,129,247,.08);
  color:var(--pxl-selected-text, var(--pxl-link, #2f81f7));
  font-size:11.5px;
  font-weight:800;
}
.crv1-newConfigFlash { animation:crv1NewConfigFlash .36s ease-out; }
@keyframes crv1NewConfigFlash {
  0% { box-shadow:0 0 0 0 rgba(47,129,247,.26); }
  100% { box-shadow:0 0 0 9px rgba(47,129,247,0); }
}

/* Shared modal moved to crv1-config-modal.css. */

/* Toast */
.crv1-newConfigToast {
  position:fixed;
  z-index:var(--pxl-layer-toast,1100);
  left:50%;
  bottom:max(22px,calc(env(safe-area-inset-bottom) + 14px));
  width:max-content;
  max-width:min(90vw,420px);
  padding:10px 14px;
  border:1px solid var(--pxl-success-border,rgba(63,185,80,.30));
  border-radius:10px;
  background:var(--pxl-success-bg,var(--crv1-card-2));
  color:var(--pxl-success-text,var(--crv1-ok));
  box-shadow:var(--pxl-shadow,0 14px 38px rgba(0,0,0,.38));
  font-family:var(--ecl-font,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif);
  font-size:13px;
  font-weight:800;
  line-height:1.35;
  text-align:center;
  pointer-events:none;
  opacity:0;
  transform:translate(-50%,10px) scale(.98);
  transition:opacity .18s ease,transform .18s ease;
}
.crv1-newConfigToast.is-visible { opacity:1; transform:translate(-50%,0) scale(1); }
.crv1-newConfigToast.is-error {
  border-color:var(--pxl-danger-border,rgba(248,81,73,.34));
  background:var(--pxl-danger-bg,var(--crv1-card-2));
  color:var(--pxl-danger-text,#ff9b94);
}

@media (prefers-reduced-motion:reduce) {
  .crv1-newConfigFlash { animation:none !important; }
  .crv1-newConfigBackdrop,
  .crv1-newConfigDialog,
  .crv1-newConfigToast { transition:none !important; }
}

/* V14.01 clarity override (loads after save-ux.css). */
.crv1-saveBoxEnhanced .crv1-libraryNewBtn {
  grid-column:1 / -1 !important; min-height:36px; background:transparent !important;
  border-color:transparent !important; color:var(--pxl-action-tertiary-text, var(--pxl-link, #2f81f7)) !important; font-size:13px;
}
.crv1-saveBoxEnhanced .crv1-libraryNewBtn:hover { background:var(--pxl-action-tertiary-hover-bg,var(--pxl-primary-tint,rgba(47,129,247,.06))) !important; border-color:transparent !important; color:var(--pxl-action-tertiary-hover-text,var(--pxl-link-hover,var(--crv1-accent-hover))) !important; }
.crv1-saveBoxEnhanced.is-new-draft #crv1_memberSaveHint { display:none !important; }


/* crv1-draft-recovery-style: crv1-draft-recovery.css */
/* V13.50 — no visible draft card. Only a short autosave acknowledgement. */
.crv1-autosaveToast{
  position:fixed;
  right:18px;
  bottom:18px;
  z-index:var(--pxl-layer-toast,1100);
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  max-width:min(320px,calc(100vw - 28px));
  padding:9px 13px;
  border:1px solid rgba(47,139,255,.46);
  border-radius:10px;
  background:rgba(12,24,40,.96);
  color:#dcecff;
  box-shadow:0 8px 26px rgba(0,0,0,.24);
  font-size:12px;
  font-weight:800;
  line-height:1.25;
  opacity:0;
  transform:translateY(7px) scale(.985);
  pointer-events:none;
  transition:opacity .18s ease,transform .22s cubic-bezier(.16,.84,.24,1);
}
.crv1-autosaveToast[hidden]{display:none!important}
.crv1-autosaveToast.is-visible{opacity:1;transform:translateY(0) scale(1)}
.crv1-autosaveToast.is-leaving{opacity:0;transform:translateY(4px) scale(.99)}
@media (max-width:640px){
  .crv1-autosaveToast{right:14px;bottom:14px;left:14px;max-width:none}
}
@media (prefers-reduced-motion:reduce){
  .crv1-autosaveToast{transition:none!important;transform:none!important}
}


/* crv1-unified-interactions-style: crv1-unified-interactions.css */
/* V13.41 Unified Button Interaction — presentation only. */

/* Shared physical tap feedback for every button owned by the calculator, including modal buttons. */
[data-crv1] button,
.crv1-configModal button {
  transform-origin: center;
  -webkit-tap-highlight-color: transparent;
}
[data-crv1] button.crv1-ui-press:not(:disabled),
.crv1-configModal button.crv1-ui-press:not(:disabled) {
  transform: translateY(1px) scale(.974) !important;
  filter: brightness(.96);
}
[data-crv1] button.crv1-ui-release:not(:disabled),
.crv1-configModal button.crv1-ui-release:not(:disabled) {
  animation: crv1UnifiedButtonRebound .20s cubic-bezier(.16,.84,.24,1) both;
}
@keyframes crv1UnifiedButtonRebound {
  0%   { transform: translateY(1px) scale(.974); }
  56%  { transform: translateY(0) scale(1.012); }
  100% { transform: translateY(0) scale(1); }
}

/* V14.33 — dynamic loading copy has one owner: the real button text set by
   crv1-paywall.js. Avoid a generated ::before label competing with the DOM
   label while the disabled/AJAX state changes. */
.crv1-progressiveMode #crv1_btnDynamic.crv1-fx-button-loading {
  position: relative;
  overflow: hidden;
  pointer-events: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  color: var(--pxl-on-primary,#fff) !important;
}
.crv1-progressiveMode #crv1_btnDynamic.crv1-fx-button-loading::before {
  content: none !important;
  display: none !important;
}

/* V14.34 — Piston Speed follows the same single-owner rule as Dynamic:
   crv1-piston-speed.js owns the real DOM loading copy. No generated label or
   sweep is allowed to compete with it while AJAX is running. */
.crv1-progressiveMode #crv1_btnPistonSpeed.crv1-unified-calc-loading {
  position: relative;
  overflow: hidden;
  pointer-events: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  transform: scale(.985);
  filter: brightness(.96);
  color: var(--pxl-on-primary,#fff) !important;
}
.crv1-progressiveMode #crv1_btnPistonSpeed.crv1-unified-calc-loading::before,
.crv1-progressiveMode #crv1_btnPistonSpeed.crv1-unified-calc-loading::after {
  content: none !important;
  display: none !important;
}
/* V14.34: the freshly written piston result stays visible immediately.
   Its optional pop animation may still run, but loading completion never waits
   behind an invisible result card. */
.crv1-progressiveMode.crv1-piston-fx-pending #crv1_pistonResults:not([hidden]),
.crv1-progressiveMode.crv1-piston-fx-pending #crv1_pistonLockedPreview:not([hidden]),
.crv1-progressiveMode.crv1-piston-fx-pending #crv1_pistonGate:not([hidden]) {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}
.crv1-progressiveMode .crv1-unified-result-pop {
  animation: crv1UnifiedResultPop .68s cubic-bezier(.16,.84,.24,1) both;
}
.crv1-progressiveMode .crv1-unified-result-pop #crv1_pistonMeanSpeed,
.crv1-progressiveMode .crv1-unified-result-pop .crv1-premiumEvaluation {
  animation: crv1UnifiedValueHit .52s cubic-bezier(.16,.84,.24,1) both;
}
@keyframes crv1UnifiedResultPop {
  0%   { opacity:.40; transform:scale(.966); }
  38%  { opacity:1; transform:scale(1.014); }
  68%  { opacity:1; transform:scale(.996); }
  100% { opacity:1; transform:scale(1); }
}
@keyframes crv1UnifiedValueHit {
  0%   { transform:scale(.985); filter:brightness(.92); }
  58%  { transform:scale(1.018); filter:brightness(1.12); }
  100% { transform:scale(1); filter:brightness(1); }
}
.crv1-progressiveMode.crv1-piston-fx-error #crv1_btnPistonSpeed {
  animation: crv1UnifiedErrorHit .22s ease-out both;
}
@keyframes crv1UnifiedErrorHit {
  0%,100% { transform:translateX(0); }
  35% { transform:translateX(-3px); }
  70% { transform:translateX(3px); }
}

@media (prefers-reduced-motion: reduce) {
  [data-crv1] button.crv1-ui-press,
  [data-crv1] button.crv1-ui-release,
  .crv1-configModal button.crv1-ui-press,
  .crv1-configModal button.crv1-ui-release,
  .crv1-progressiveMode .crv1-unified-result-pop,
  .crv1-progressiveMode .crv1-unified-result-pop #crv1_pistonMeanSpeed,
  .crv1-progressiveMode .crv1-unified-result-pop .crv1-premiumEvaluation,
  .crv1-progressiveMode.crv1-piston-fx-error #crv1_btnPistonSpeed {
    animation: none !important;
    transform: none !important;
    filter: none !important;
  }
  .crv1-progressiveMode #crv1_btnPistonSpeed.crv1-unified-calc-loading::after {
    display: none !important;
    animation: none !important;
  }
  .crv1-progressiveMode.crv1-piston-fx-pending #crv1_pistonResults:not([hidden]),
  .crv1-progressiveMode.crv1-piston-fx-pending #crv1_pistonLockedPreview:not([hidden]),
  .crv1-progressiveMode.crv1-piston-fx-pending #crv1_pistonGate:not([hidden]) {
    opacity: 1;
    transform: none;
    transition: none;
  }
}


/* crv1-unified-blue-motion-style: crv1-unified-blue-motion.css */
/* V13.42 Unified Blue + Instrument Motion.
   Presentation only: calculation formulas, credits, paywall and stored data remain untouched. */

/* One visual language: blue = PXL tool/action/result shell.
   Green/yellow/orange/red remain reserved for engineering severity inside gauges/statuses. */
.crv1-progressiveMode .crv1-dynamicSpotlight,
.crv1-progressiveMode .crv1-dynamicSpotlight.crv1-dynamicSpotlight-high,
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicCompact,
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow {
  border-color: rgba(47,129,247,.46) !important;
  background:
    linear-gradient(180deg, rgba(47,129,247,.055), rgba(47,129,247,0) 150px),
    var(--crv1-card-2) !important;
  box-shadow: inset 3px 0 0 rgba(47,129,247,.82) !important;
}
.crv1-progressiveMode .crv1-dynamicSpotlight-high .crv1-dynamicBadge,
.crv1-progressiveMode .crv1-dynamicBadge {
  color:var(--pxl-primary-soft, #bdd1e6) !important;
  border-color:rgba(47,129,247,.42) !important;
  background:rgba(47,129,247,.10) !important;
}
.crv1-progressiveMode .crv1-dynamicSpotlight-high .crv1-dynamicWhy,
.crv1-progressiveMode .crv1-dynamicWhy {
  border-color:rgba(47,129,247,.22) !important;
  background:rgba(47,129,247,.055) !important;
}
.crv1-progressiveMode .crv1-dynamicSpotlight-high .crv1-dynamicWhyIcon,
.crv1-progressiveMode .crv1-dynamicWhyIcon {
  color:var(--pxl-primary-soft, #bdd1e6) !important;
  background:rgba(47,129,247,.13) !important;
}
.crv1-progressiveMode .crv1-dynamicResultCard,
.crv1-progressiveMode .crv1-dynamicResultCard.has-result {
  border-color:rgba(47,129,247,.40) !important;
  background:
    linear-gradient(180deg, rgba(47,129,247,.072), rgba(47,129,247,.016) 48%, rgba(15,20,27,.94) 100%),
    var(--crv1-card-2) !important;
  box-shadow:inset 3px 0 0 rgba(47,129,247,.76) !important;
}
.crv1-progressiveMode .crv1-dynamicResultCard.has-result #crv1_dynamicCr {
  border-color:rgba(47,129,247,.30) !important;
}
.crv1-progressiveMode .crv1-dynamicPreviousResult {
  border-color:rgba(47,129,247,.18) !important;
}

/* Piston Speed is now the same blue module family instead of a separate purple family. */
.crv1-progressiveMode .crv1-premiumModule {
  border-color:rgba(47,129,247,.46) !important;
  background:
    linear-gradient(180deg, rgba(47,129,247,.055), rgba(47,129,247,0) 165px),
    var(--crv1-card-2) !important;
  box-shadow:inset 3px 0 0 rgba(47,129,247,.82) !important;
}
.crv1-progressiveMode .crv1-premiumBadge {
  color:var(--pxl-primary-soft, #bdd1e6) !important;
  border-color:rgba(47,129,247,.42) !important;
  background:rgba(47,129,247,.10) !important;
}
.crv1-progressiveMode .crv1-premiumTool { border-top-color:rgba(47,129,247,.20) !important; }
.crv1-progressiveMode #crv1_pistonResults.crv1-premiumPrimaryResults {
  border-color:rgba(47,129,247,.36) !important;
  background:
    linear-gradient(180deg,rgba(47,129,247,.060),rgba(47,129,247,.014) 52%,rgba(13,17,23,.72) 100%) !important;
  box-shadow:inset 3px 0 0 rgba(47,129,247,.72);
}
.crv1-progressiveMode #crv1_pistonResults #crv1_pistonMeanSpeed {
  border-color:rgba(47,129,247,.30) !important;
  background:rgba(13,17,23,.88) !important;
}
.crv1-progressiveMode .crv1-premiumCalcBtn,
.crv1-progressiveMode .crv1-premiumUnlockBtn,
.crv1-progressiveMode .crv1-curiosityUnlockBtn {
  border-color:rgba(47,129,247,.46) !important;
  box-shadow:0 0 0 1px rgba(47,129,247,.09), 0 7px 18px rgba(0,0,0,.14) !important;
}
.crv1-progressiveMode .crv1-lockedPreview,
.crv1-progressiveMode .crv1-simpleLockedPreview {
  border-color:rgba(47,129,247,.25) !important;
  background:
    radial-gradient(circle at 92% 0%, rgba(47,129,247,.09), transparent 34%),
    rgba(0,0,0,.075) !important;
}
.crv1-progressiveMode .crv1-simpleLockedTitle,
.crv1-progressiveMode .crv1-lockedResultLine strong,
.crv1-progressiveMode .crv1-simpleLockedResult strong,
.crv1-progressiveMode .crv1-simpleUnlockMeta {
  color:var(--pxl-primary-soft, #bdd1e6) !important;
}
.crv1-progressiveMode .crv1-curiosityGate,
.crv1-progressiveMode .crv1-premiumGate {
  border-color:rgba(47,129,247,.25) !important;
  background:linear-gradient(180deg,rgba(47,129,247,.055),rgba(47,129,247,.015)) !important;
}
.crv1-progressiveMode .crv1-simpleGate {
  background:transparent !important;
  border-top-color:rgba(47,129,247,.18) !important;
}
.crv1-progressiveMode .crv1-premiumGate .crv1-accessBadge-lock {
  color:var(--pxl-primary-soft, #bdd1e6) !important;
  border-color:rgba(47,129,247,.42) !important;
  background:rgba(47,129,247,.09) !important;
}

/* Counter overlay: the real readonly value stays intact underneath, so formulas/state never see animation values. */
.crv1-instrument-host { position:relative !important; }
.crv1-instrument-source-hidden {
  color:transparent !important;
  -webkit-text-fill-color:transparent !important;
  text-shadow:none !important;
}
.crv1-instrument-value-overlay {
  position:absolute;
  z-index:var(--pxl-layer-popover,200);
  display:flex;
  align-items:center;
  box-sizing:border-box;
  overflow:hidden;
  pointer-events:none;
  color:var(--pxl-text-strong,var(--crv1-strong-text));
  -webkit-text-fill-color:currentColor;
  white-space:nowrap;
  transform-origin:18% 50%;
  font-variant-numeric:tabular-nums;
  letter-spacing:.01em;
}
.crv1-instrument-value-overlay.crv1-instrument-final-tick {
  animation:crv1InstrumentFinalTick .32s cubic-bezier(.16,.84,.24,1) both;
}
@keyframes crv1InstrumentFinalTick {
  0% { transform:scale(1); filter:brightness(1); }
  46% { transform:scale(1.055); filter:brightness(1.23); }
  100% { transform:scale(1); filter:brightness(1); }
}

/* Gauge motion: marker moves while a restrained sweep passes over the engineering scale. */
.crv1-resultGauge.crv1-instrument-gauge-running .crv1-gaugeTrack {
  position:relative;
  overflow:hidden;
}
.crv1-resultGauge.crv1-instrument-gauge-running .crv1-gaugeTrack::after {
  content:'';
  position:absolute;
  inset:0 auto 0 -26%;
  width:22%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);
  transform:skewX(-15deg);
  animation:crv1GaugeSweep .62s ease-out both;
  pointer-events:none;
}
.crv1-resultGauge.crv1-instrument-gauge-running .crv1-gaugeMarker {
  will-change:left,transform;
  transition:none !important;
}
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop #crv1_dynamicGaugeMarker {
  animation:none !important;
}
@keyframes crv1GaugeSweep {
  0% { left:-26%; opacity:0; }
  18% { opacity:.8; }
  100% { left:110%; opacity:0; }
}

/* Blue final hit for all three result families. */
.crv1-progressiveMode .crv1-instrument-result-hit {
  animation:crv1InstrumentResultHit .42s cubic-bezier(.16,.84,.24,1) both !important;
}
@keyframes crv1InstrumentResultHit {
  0% { box-shadow:inset 3px 0 0 rgba(47,129,247,.72),0 0 0 rgba(47,129,247,0); }
  48% { box-shadow:inset 3px 0 0 rgba(47,129,247,1),0 0 0 3px rgba(47,129,247,.12); }
  100% { box-shadow:inset 3px 0 0 rgba(47,129,247,.76),0 0 0 rgba(47,129,247,0); }
}
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop {
  animation:crv1BlueResultPop .52s cubic-bezier(.16,.84,.24,1) both !important;
}
@keyframes crv1BlueResultPop {
  0% { opacity:.40; transform:scale(.976); box-shadow:inset 3px 0 0 rgba(47,129,247,.48); }
  58% { opacity:1; transform:scale(1.008); box-shadow:inset 3px 0 0 rgba(47,129,247,.96),0 0 20px rgba(47,129,247,.12); }
  100% { opacity:1; transform:scale(1); box-shadow:inset 3px 0 0 rgba(47,129,247,.76); }
}

@media (max-width:640px) {
  .crv1-instrument-value-overlay { letter-spacing:0; }
}

@media (prefers-reduced-motion:reduce) {
  .crv1-instrument-value-overlay.crv1-instrument-final-tick,
  .crv1-resultGauge.crv1-instrument-gauge-running .crv1-gaugeTrack::after,
  .crv1-progressiveMode .crv1-instrument-result-hit,
  .crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop {
    animation:none !important;
  }
  .crv1-instrument-source-hidden {
    color:inherit !important;
    -webkit-text-fill-color:currentColor !important;
  }
  .crv1-instrument-value-overlay { display:none !important; }
}

/* V14.35 — Result Motion Sync.
   Static, Dynamic and Piston Speed now share one visual timeline owned by
   crv1-instrument-motion.js: readout + gauge marker travel once, then a short
   border settle. Existing legacy pop/pending classes remain for compatibility
   but no longer scale, dim or re-animate the whole result card. */
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-card-pending > *,
.crv1-progressiveMode.crv1-fx-pending .crv1-dynamicResultCard:not([hidden]),
.crv1-progressiveMode.crv1-fx-pending .crv1-dynamicPreviousResult:not([hidden]),
.crv1-progressiveMode.crv1-piston-fx-pending #crv1_pistonResults:not([hidden]),
.crv1-progressiveMode.crv1-piston-fx-pending #crv1_pistonLockedPreview:not([hidden]),
.crv1-progressiveMode.crv1-piston-fx-pending #crv1_pistonGate:not([hidden]),
.crv1-progressiveMode.crv1-static-calc-pending .crv1-staticResultCard,
.crv1-progressiveMode.crv1-static-calc-pending .crv1-staticResultCard #crv1_cr,
.crv1-progressiveMode.crv1-static-calc-pending .crv1-staticResultCard #crv1_staticGauge,
.crv1-progressiveMode.crv1-static-calc-pending .crv1-staticResultAdvice {
  opacity:1 !important;
  filter:none !important;
  transform:none !important;
  transition:none !important;
}
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-card-pending::after {
  content:none !important;
  display:none !important;
}
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop,
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop #crv1_dynamicCr,
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-fx-result-pop #crv1_dynamicGaugeMarker,
.crv1-progressiveMode .crv1-dynamicPreviousResult.crv1-fx-previous-in,
.crv1-progressiveMode .crv1-unified-result-pop,
.crv1-progressiveMode .crv1-unified-result-pop #crv1_pistonMeanSpeed,
.crv1-progressiveMode .crv1-unified-result-pop .crv1-premiumEvaluation,
.crv1-progressiveMode .crv1-staticResultCard.crv1-staticCommitPop {
  animation:none !important;
  transform:none !important;
  filter:none !important;
}
.crv1-progressiveMode #crv1_btnPistonSpeed.crv1-unified-calc-loading {
  transform:none !important;
  filter:none !important;
}

/* Keep the engineering scale calm: only the marker travels. The old shine sweep
   and value/card scale hits were the main source of the repeated "giật" feel. */
.crv1-resultGauge.crv1-instrument-gauge-running .crv1-gaugeTrack::after {
  content:none !important;
  display:none !important;
  animation:none !important;
}
.crv1-instrument-value-overlay.crv1-instrument-final-tick {
  animation:none !important;
  transform:none !important;
  filter:none !important;
}
.crv1-progressiveMode .crv1-instrument-result-hit {
  animation:crv1ResultSettle .20s ease-out both !important;
  transform:none !important;
}
@keyframes crv1ResultSettle {
  from { outline-color:color-mix(in srgb,var(--pxl-primary) 34%,transparent); }
  to   { outline-color:transparent; }
}
.crv1-progressiveMode .crv1-staticResultCard.crv1-instrument-result-hit,
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-instrument-result-hit,
.crv1-progressiveMode #crv1_pistonResults.crv1-instrument-result-hit {
  outline:2px solid transparent;
  outline-offset:1px;
}

/* Tabular, reserved gauge readouts prevent the right-side label from changing
   width while values count, which removes another source of micro layout shift. */
#crv1_staticGaugeValue,
#crv1_dynamicGaugeValue,
#crv1_pistonGaugeValue {
  display:inline-block;
  min-width:72px;
  text-align:right;
  font-variant-numeric:tabular-nums;
}
#crv1_pistonGaugeValue { min-width:82px; }

@media (prefers-reduced-motion:reduce) {
  .crv1-progressiveMode .crv1-instrument-result-hit { animation:none !important; outline-color:transparent !important; }
}

/* Calculation buttons use stable text-only busy states. Result feedback belongs
   to the shared result timeline, not a second sweep/scale on the CTA. */
.crv1-progressiveMode .crv1-staticCommitBtn.is-loading {
  transform:none !important;
  filter:none !important;
}
.crv1-progressiveMode .crv1-staticCommitBtn.is-loading::after {
  content:none !important;
  display:none !important;
  animation:none !important;
}

/* V14.37 — No-flash result reveal.
   Result cards themselves must never fade, scale, flash an outline or force a
   second visual beat. Only the numeric readout + gauge marker may animate. */
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-dynamicResultArrive,
.crv1-progressiveMode .crv1-staticResultCard.crv1-instrument-result-hit,
.crv1-progressiveMode .crv1-dynamicResultCard.crv1-instrument-result-hit,
.crv1-progressiveMode #crv1_pistonResults.crv1-instrument-result-hit {
  animation:none !important;
  opacity:1 !important;
  transform:none !important;
  filter:none !important;
  outline:none !important;
}



/* crv1-shared-design-style: crv1-shared-design-system.css */
/* V13.72 Shared Theme Design System
   Theme is the visual source of truth. The plugin keeps safe fallbacks for other themes.
   Presentation only: no formulas, credits, paywall, storage or calculation logic changes. */

:where(.crv1-wrap, .crv1-configModal, .crv1-libraryModal, .crv1-newConfigToast) {
  --crv1-font: var(--pxl-font, var(--ecl-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif));

  --crv1-bg: var(--pxl-bg, var(--ecl-bg, #0d1117));
  --crv1-card: var(--pxl-tool-card, var(--pxl-surface-2, var(--ecl-surface-2, #161b22)));
  --crv1-card-2: var(--pxl-tool-card-soft, var(--pxl-surface, var(--ecl-surface, #0f141b)));
  --crv1-input-bg: var(--pxl-input-bg, var(--ecl-input-bg, #0d1117));
  --crv1-border: var(--pxl-border, var(--ecl-border, #30363d));

  --crv1-text: var(--pxl-text, var(--ecl-text, #dfe5eb));
  --crv1-strong-text: var(--pxl-text-strong, var(--ecl-text-strong, #e8edf2));
  --crv1-body-text: var(--pxl-text-soft, var(--ecl-text-soft, #c5ced7));
  --crv1-input-text: var(--pxl-text-input, var(--ecl-text-input, #d8e0e8));
  --crv1-readonly-text: var(--pxl-text-readonly, var(--ecl-text-readonly, #c6d8e9));
  --crv1-muted: var(--pxl-muted, var(--ecl-muted, #8e99a6));

  --crv1-accent: var(--pxl-primary, var(--ecl-primary, var(--ecl-accent-2, #2f81f7)));
  --crv1-accent-hover: var(--pxl-primary-hover, var(--ecl-primary-hover, #1f6feb));
  --crv1-soft-blue: var(--pxl-primary-soft, var(--ecl-primary-soft, #bdd1e6));

  --crv1-radius: var(--pxl-radius, var(--ecl-radius, 16px));
  --crv1-shadow: var(--pxl-shadow, var(--ecl-shadow, 0 18px 50px rgba(0,0,0,.18)));

  font-family: var(--crv1-font);
  font-synthesis: none;
  font-weight: 400;
  letter-spacing: 0;
}

/* Main tool surfaces now follow the theme tokens. */
.crv1-wrap {
  color: var(--crv1-text);
  font-family: var(--crv1-font);
}
.crv1-wrap .crv1-card { background: var(--crv1-card); border-color: var(--crv1-border); }
.crv1-wrap .crv1-pistonBox,
.crv1-wrap .crv1-saveBox,
.crv1-wrap .crv1-result { background: var(--crv1-card-2); border-color: var(--crv1-border); }
.crv1-wrap input[type="text"],
.crv1-wrap input[type="number"],
.crv1-wrap textarea,
.crv1-wrap select,
.crv1-wrap .crv1-radioItem {
  background: var(--crv1-input-bg);
  color: var(--crv1-input-text);
  border-color: var(--crv1-border);
  font-family: var(--crv1-font);
}
.crv1-wrap input[readonly] { color: var(--crv1-readonly-text); }

/* Typography hierarchy: same font and same text palette as the theme. */
.crv1-wrap .crv1-title {
  color: var(--crv1-strong-text);
  font-weight: 700;
  letter-spacing: -.012em;
}
.crv1-wrap .crv1-row > label,
.crv1-wrap .crv1-pistonLabel,
.crv1-wrap .crv1-saveHeader,
.crv1-wrap .crv1-dynamicHeader .crv1-pistonLabel,
.crv1-wrap .crv1-guestSaveTitle,
.crv1-wrap .crv1-configLibraryTitle,
.crv1-wrap .crv1-configLibraryModalTitle,
.crv1-wrap .crv1-modalTitle {
  color: var(--crv1-strong-text);
  font-weight: 600 !important;
  letter-spacing: -.006em;
}
.crv1-wrap strong,
.crv1-wrap b { font-weight: 700; }

.crv1-wrap .crv1-btn,
.crv1-wrap button.crv1-btn,
.crv1-wrap .crv1-signupBtn,
.crv1-wrap .crv1-premiumCalcBtn,
.crv1-wrap .crv1-premiumUnlockBtn,
.crv1-wrap .crv1-curiosityUnlockBtn,
.crv1-wrap .crv1-configOpenBtn,
.crv1-wrap .crv1-configPrimaryBtn {
  background-color: var(--crv1-accent);
  font-family: var(--crv1-font);
  font-weight: 700 !important;
  letter-spacing: 0 !important;
}
.crv1-wrap .crv1-btn:hover,
.crv1-wrap button.crv1-btn:hover,
.crv1-wrap .crv1-signupBtn:hover,
.crv1-wrap .crv1-premiumCalcBtn:hover,
.crv1-wrap .crv1-premiumUnlockBtn:hover,
.crv1-wrap .crv1-curiosityUnlockBtn:hover,
.crv1-wrap .crv1-configOpenBtn:hover,
.crv1-wrap .crv1-configPrimaryBtn:hover { background-color: var(--crv1-accent-hover); }

.crv1-wrap .crv1-big,
.crv1-wrap #crv1_staticCr,
.crv1-wrap #crv1_dynamicCr,
.crv1-wrap #crv1_pistonMeanSpeed,
.crv1-wrap .crv1-resultValue,
.crv1-wrap .crv1-staticResultValue,
.crv1-wrap .crv1-dynamicResultValue {
  color: var(--crv1-strong-text) !important;
  font-weight: 700 !important;
  letter-spacing: -.006em !important;
}

.crv1-wrap .crv1-sub,
.crv1-wrap .crv1-hint,
.crv1-wrap .crv1-footerNote,
.crv1-wrap .crv1-accessDetail,
.crv1-wrap .crv1-paywallText,
.crv1-wrap .crv1-guestSaveLead,
.crv1-wrap .crv1-guestLogin,
.crv1-wrap .crv1-premiumSub,
.crv1-wrap .crv1-pistonStrokeCompactHint,
.crv1-wrap .crv1-configMeta,
.crv1-wrap .crv1-configUpdated,
.crv1-wrap .crv1-configLibraryHint {
  color: var(--crv1-muted) !important;
  font-weight: 400 !important;
}

.crv1-wrap .crv1-accessBadge,
.crv1-wrap .crv1-dynamicBadge,
.crv1-wrap .crv1-premiumBadge,
.crv1-wrap .crv1-stepEyebrow,
.crv1-wrap .crv1-step3Eyebrow,
.crv1-wrap .crv1-staticResultBadge,
.crv1-wrap .crv1-resultBadge,
.crv1-wrap .crv1-configDynamicBadge,
.crv1-wrap .crv1-configBadge {
  font-weight: 700 !important;
  letter-spacing: .02em !important;
}

/* Brand/accent blue is inherited from the theme; technical gauge colors remain plugin-owned. */
.crv1-wrap .crv1-accessBadge-free,
.crv1-wrap .crv1-accessBadge-member,
.crv1-wrap .crv1-accessBadge-lock,
.crv1-wrap .crv1-accessInlineLink,
.crv1-wrap .crv1-guestLogin a,
.crv1-wrap .crv1-dynamicBadge,
.crv1-wrap .crv1-dynamicWhyIcon,
.crv1-wrap .crv1-premiumBadge,
.crv1-wrap .crv1-simpleLockedTitle,
.crv1-wrap .crv1-lockedResultLine strong,
.crv1-wrap .crv1-simpleLockedResult strong,
.crv1-wrap .crv1-simpleUnlockMeta {
  color: var(--crv1-soft-blue) !important;
}

.crv1-wrap .crv1-accessTitle,
.crv1-wrap .crv1-dynamicWhyCopy strong,
.crv1-wrap .crv1-guestBenefit,
.crv1-wrap .crv1-lockedPreviewLead,
.crv1-wrap .crv1-simpleLockedLead,
.crv1-wrap .crv1-configName,
.crv1-wrap .crv1-resultCardTitle,
.crv1-wrap .crv1-staticResultTitle,
.crv1-wrap .crv1-dynamicResultTitle,
.crv1-wrap .crv1-lockedPreviewTop strong,
.crv1-wrap .crv1-gaugeTop strong {
  color: var(--crv1-text) !important;
  font-weight: 600 !important;
}
.crv1-wrap .crv1-gaugeTop span,
.crv1-wrap .crv1-lockedPreviewTop span { color: var(--crv1-muted) !important; }

/* Saved configuration modals can be moved under <body>, so they receive tokens directly. */
.crv1-configModal,
.crv1-libraryModal,
.crv1-newConfigToast { font-family: var(--crv1-font) !important; }
.crv1-configModalDialog,
.crv1-libraryModalDialog { color: var(--crv1-text); border-color: var(--crv1-border); background: var(--crv1-card); }
.crv1-configModalClose,
.crv1-configModalInput,
.crv1-libraryModalClose { background: var(--crv1-input-bg); border-color: var(--crv1-border); color: var(--crv1-text); }
.crv1-configModalInput { font-family: var(--crv1-font); }
.crv1-configModalTitle,
.crv1-libraryModalTitle { color: var(--crv1-strong-text); font-weight: 600; }
.crv1-configModalText,
.crv1-libraryModalSub { color: var(--crv1-muted); }
.crv1-configModalBtn { font-family: var(--crv1-font); font-weight: 700; }
.crv1-configModalBtn.is-primary { background: var(--crv1-accent); border-color: var(--crv1-accent); }
.crv1-configModalBtn.is-primary:hover { background: var(--crv1-accent-hover); border-color: var(--crv1-accent-hover); }
.crv1-libraryModalHeader { border-color: var(--crv1-border); background: color-mix(in srgb, var(--crv1-card) 84%, transparent); }
.crv1-libraryModal .crv1-libraryToolbar { background: var(--crv1-card); }
.crv1-libraryModal .crv1-libraryCard { background: var(--crv1-card-2); }

@supports not (background: color-mix(in srgb, black 50%, transparent)) {
  .crv1-libraryModalHeader { background: var(--crv1-card); }
}

@media (max-width: 640px) {
  .crv1-wrap .crv1-title { letter-spacing: -.008em; }
}

/* V14.20 — Theme-owned semantic component contract.
 * Platform no longer detects Light/Dark. It consumes --pxl-* tokens only.
 * Technical gauge colors come from theme semantic zone tokens. */
.crv1-wrap .crv1-card,
.crv1-wrap .crv1-pistonBox,
.crv1-wrap .crv1-saveBox,
.crv1-wrap .crv1-result,
.crv1-wrap .crv1-libraryPanel,
.crv1-wrap .crv1-premiumPanel { color: var(--crv1-text); }

.crv1-wrap :is(.crv1-libraryClear,.crv1-librarySearchClear,.crv1-libraryModalClose):hover { background:var(--pxl-hover-surface,#1a2330);border-color:var(--pxl-hover-border,#3a4655);color:var(--pxl-text-strong,#e8edf2); }
.crv1-progressiveMode .crv1-staticResultCard,.crv1-progressiveMode .crv1-dynamicResultCard,.crv1-progressiveMode .crv1-dynamicResultCard.has-result { background:var(--pxl-tool-card,var(--crv1-card))!important;border-color:color-mix(in srgb,var(--pxl-primary,#2f81f7) 30%,var(--pxl-border,#28313d))!important;box-shadow:inset 3px 0 0 color-mix(in srgb,var(--pxl-primary,#2f81f7) 72%,transparent)!important; }
.crv1-progressiveMode .crv1-staticResultCard #crv1_cr,.crv1-progressiveMode .crv1-dynamicResultCard.has-result #crv1_dynamicCr,.crv1-progressiveMode #crv1_pistonResults #crv1_pistonMeanSpeed { background:var(--pxl-tool-card-soft,var(--pxl-surface-2,#151c25))!important;color:var(--pxl-text-strong,#e8edf2)!important;border-color:var(--pxl-border,#28313d)!important; }
.crv1-staticResultAdvice,.crv1-progressiveMode .crv1-dynamicResultCard.has-result .crv1-dynamicStatus:not(:empty),.crv1-resultGauge { background:var(--pxl-tool-card-soft,var(--pxl-surface-2,#151c25));border-color:var(--pxl-border,#28313d); }
.crv1-gaugeTop{color:var(--pxl-muted,#8e99a6)}.crv1-gaugeTop strong{color:var(--pxl-text-strong,#e8edf2)}
.crv1-gaugeTrack{box-shadow:inset 0 0 0 1px var(--pxl-subtle-border,rgba(255,255,255,.10)),0 2px 6px color-mix(in srgb,var(--pxl-text-strong,#e8edf2) 8%,transparent)}
.crv1-gaugeMarker{background:var(--pxl-text-strong,#e8edf2);box-shadow:0 0 0 2px var(--pxl-surface,#10161e),0 1px 5px color-mix(in srgb,var(--pxl-text-strong,#e8edf2) 22%,transparent)}.crv1-gaugeMarker::after{border-top-color:var(--pxl-text-strong,#e8edf2)}
.crv1-progressiveMode .crv1-dynamicSpotlight,.crv1-progressiveMode .crv1-dynamicSpotlight.crv1-dynamicSpotlight-high,.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicCompact,.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow,.crv1-progressiveMode .crv1-premiumModule,.crv1-progressiveMode #crv1_pistonResults.crv1-premiumPrimaryResults{background:var(--pxl-tool-card,var(--pxl-surface,#10161e))!important}
.crv1-progressiveMode .crv1-dynamicBadge,.crv1-progressiveMode .crv1-dynamicWhyIcon,.crv1-progressiveMode .crv1-premiumBadge,.crv1-progressiveMode .crv1-simpleLockedTitle,.crv1-progressiveMode .crv1-lockedResultLine strong,.crv1-progressiveMode .crv1-simpleLockedResult strong,.crv1-progressiveMode .crv1-simpleUnlockMeta,.crv1-progressiveMode .crv1-premiumGate .crv1-accessBadge-lock{color:var(--pxl-selected-text,var(--pxl-primary-soft,#bdd1e6))!important}
.crv1-gaugeTop .crv1-gaugeZone{background:var(--pxl-neutral-bg,var(--pxl-surface,#10161e))!important;border-color:var(--pxl-neutral-border,var(--pxl-border,#28313d))!important;color:var(--pxl-neutral-text,var(--pxl-muted,#8e99a6))!important;box-shadow:none!important}
.crv1-gaugeTop .crv1-gaugeZone.is-green,.crv1-progressiveMode :is(.crv1-dynamicHistoryDelta,.crv1-dynamicHistoryExtreme).zone-green{background:var(--pxl-zone-green-bg,var(--pxl-success-bg,rgba(63,185,80,.08)))!important;border-color:var(--pxl-zone-green-border,var(--pxl-success-border,rgba(63,185,80,.42)))!important;color:var(--pxl-zone-green-text,var(--pxl-success-text,#7ee787))!important}
.crv1-gaugeTop .crv1-gaugeZone.is-yellow,.crv1-progressiveMode :is(.crv1-dynamicHistoryDelta,.crv1-dynamicHistoryExtreme).zone-yellow{background:var(--pxl-zone-yellow-bg,rgba(227,179,65,.09))!important;border-color:var(--pxl-zone-yellow-border,rgba(227,179,65,.42))!important;color:var(--pxl-zone-yellow-text,#f2cc60)!important}
.crv1-gaugeTop .crv1-gaugeZone.is-orange,.crv1-progressiveMode :is(.crv1-dynamicHistoryDelta,.crv1-dynamicHistoryExtreme).zone-orange{background:var(--pxl-zone-orange-bg,var(--pxl-warning-bg,rgba(240,136,62,.08)))!important;border-color:var(--pxl-zone-orange-border,var(--pxl-warning-border,rgba(240,136,62,.42)))!important;color:var(--pxl-zone-orange-text,var(--pxl-warning-text,#f4c66a))!important}
.crv1-gaugeTop .crv1-gaugeZone.is-red,.crv1-progressiveMode :is(.crv1-dynamicHistoryDelta,.crv1-dynamicHistoryExtreme).zone-red{background:var(--pxl-zone-red-bg,var(--pxl-danger-bg,rgba(248,81,73,.08)))!important;border-color:var(--pxl-zone-red-border,var(--pxl-danger-border,rgba(248,81,73,.42)))!important;color:var(--pxl-zone-red-text,var(--pxl-danger-text,#ffb4ae))!important}.crv1-gaugeTop .crv1-gaugeZone::before{box-shadow:none!important}
.crv1-progressiveMode :is(.crv1-dynamicHistoryDelta,.crv1-dynamicHistoryExtreme).zone-neutral{color:var(--pxl-neutral-text,var(--pxl-muted,#8e99a6))!important;border-color:var(--pxl-neutral-border,var(--pxl-border,#28313d))!important;background:var(--pxl-neutral-bg,var(--pxl-surface-2,#151c25))!important}


/* V14.22 — remove final Dark-only islands from guest/save/library UI.
 * No theme-mode selectors: these components consume semantic --pxl-* tokens only. */
.crv1-wrap .crv1-guestSaveCard {
  background:var(--pxl-tool-card-soft,var(--crv1-card-2)) !important;
  border-color:var(--pxl-border,var(--crv1-border)) !important;
  color:var(--pxl-text,var(--crv1-text)) !important;
}
.crv1-wrap .crv1-guestSaveTitle { color:var(--pxl-text-strong,var(--crv1-strong-text)) !important; }
.crv1-wrap .crv1-guestSaveLead,.crv1-wrap .crv1-guestLogin { color:var(--pxl-muted,var(--crv1-muted)) !important; }
.crv1-wrap .crv1-guestBenefit { color:var(--pxl-text-soft,var(--crv1-body-text,var(--crv1-text))) !important; }
.crv1-wrap .crv1-benefitCheck { color:var(--pxl-success-text,var(--crv1-ok)) !important; }
.crv1-wrap .crv1-guestLogin a,.crv1-wrap .crv1-accessInlineLink { color:var(--pxl-link,var(--crv1-accent)) !important; border-bottom-color:color-mix(in srgb,currentColor 32%,transparent) !important; }
.crv1-wrap .crv1-guestLogin a:hover,.crv1-wrap .crv1-accessInlineLink:hover { color:var(--pxl-link-hover,var(--crv1-accent-hover)) !important; border-bottom-color:currentColor !important; }
.crv1-wrap .crv1-accessBadge { background:var(--pxl-neutral-bg,var(--crv1-card-2)); border-color:var(--pxl-neutral-border,var(--crv1-border)); color:var(--pxl-neutral-text,var(--crv1-muted)); }
.crv1-wrap .crv1-accessBadge-free,.crv1-wrap .crv1-accessBadge-member,.crv1-wrap .crv1-accessBadge-lock { background:var(--pxl-selected-bg,var(--crv1-card-2)); border-color:var(--pxl-selected-border,var(--crv1-border)); color:var(--pxl-selected-text,var(--pxl-link,var(--crv1-accent))) !important; }
.crv1-wrap .crv1-accessBadge-ok { background:var(--pxl-success-bg,var(--crv1-card-2)); border-color:var(--pxl-success-border,var(--crv1-border)); color:var(--pxl-success-text,var(--crv1-ok)) !important; }
.crv1-wrap .crv1-accessBadge-warn { background:var(--pxl-warning-bg,var(--crv1-card-2)); border-color:var(--pxl-warning-border,var(--crv1-border)); color:var(--pxl-warning-text,var(--crv1-warn)) !important; }


/* V14.26 — primary CTA contrast contract.
 * Anchor-based CTAs (signup/unlock) must keep on-primary text even when theme/WordPress
 * link, visited or focus rules are loaded later. The theme still owns the actual color token. */
.crv1-wrap .crv1-btn,
.crv1-wrap a.crv1-btn:link,
.crv1-wrap a.crv1-btn:visited,
.crv1-wrap a.crv1-btn:hover,
.crv1-wrap a.crv1-btn:focus,
.crv1-wrap a.crv1-btn:focus-visible,
.crv1-wrap .crv1-signupBtn,
.crv1-wrap .crv1-signupBtn:link,
.crv1-wrap .crv1-signupBtn:visited,
.crv1-wrap .crv1-signupBtn:hover,
.crv1-wrap .crv1-signupBtn:focus,
.crv1-wrap .crv1-signupBtn:focus-visible {
  color:var(--pxl-on-primary,#fff) !important;
  -webkit-text-fill-color:var(--pxl-on-primary,#fff);
}

/* V14.30 — semantic action hierarchy.
 * .crv1-btn is the legacy base class, so secondary/tertiary actions explicitly
 * restore their semantic text/background after the primary CTA contrast rule.
 * This fixes Light Mode without any Light/Dark selector. */
.crv1-wrap .crv1-saveBoxEnhanced.is-editing #crv1_librarySaveNew,
.crv1-wrap .crv1-saveBoxEnhanced.is-editing #crv1_libraryToggle,
.crv1-wrap .crv1-libraryOpenBtn {
  background:var(--pxl-action-secondary-bg,var(--pxl-neutral-bg,var(--crv1-card-2))) !important;
  border-color:var(--pxl-action-secondary-border,var(--pxl-neutral-border,var(--crv1-border))) !important;
  color:var(--pxl-action-secondary-text,var(--pxl-text-strong,var(--crv1-text))) !important;
  -webkit-text-fill-color:var(--pxl-action-secondary-text,var(--pxl-text-strong,var(--crv1-text))) !important;
}
.crv1-wrap .crv1-saveBoxEnhanced.is-editing #crv1_librarySaveNew:hover,
.crv1-wrap .crv1-saveBoxEnhanced.is-editing #crv1_libraryToggle:hover,
.crv1-wrap .crv1-libraryOpenBtn:hover {
  background:var(--pxl-action-secondary-hover-bg,var(--pxl-hover-surface,var(--crv1-card-2))) !important;
  border-color:var(--pxl-action-secondary-hover-border,var(--pxl-hover-border,var(--crv1-border))) !important;
}
.crv1-wrap .crv1-saveBoxEnhanced .crv1-libraryNewBtn {
  background:transparent !important;
  border-color:transparent !important;
  color:var(--pxl-action-tertiary-text,var(--pxl-link,var(--crv1-accent))) !important;
  -webkit-text-fill-color:var(--pxl-action-tertiary-text,var(--pxl-link,var(--crv1-accent))) !important;
}
.crv1-wrap .crv1-saveBoxEnhanced .crv1-libraryNewBtn:hover {
  background:var(--pxl-action-tertiary-hover-bg,var(--pxl-primary-tint,rgba(47,129,247,.08))) !important;
  border-color:transparent !important;
  color:var(--pxl-action-tertiary-hover-text,var(--pxl-link-hover,var(--crv1-accent-hover))) !important;
  -webkit-text-fill-color:var(--pxl-action-tertiary-hover-text,var(--pxl-link-hover,var(--crv1-accent-hover))) !important;
}


/* crv1-field-note-modal-style: crv1-field-note-modal.css */
.crv1-wrap .crv1-fieldNote{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
}
.crv1-wrap .crv1-fieldNoteText{
  display:inline;
}
.crv1-wrap .crv1-fieldNoteMediaBtn{
  appearance:none;
  border:1px solid var(--pxl-neutral-border, var(--crv1-border));
  background:var(--pxl-neutral-bg, var(--crv1-card-2));
  color:var(--crv1-soft-blue);
  border-radius:999px;
  padding:4px 10px;
  font:inherit;
  font-size:12px;
  font-weight:700;
  line-height:1.4;
  cursor:pointer;
}
.crv1-wrap .crv1-fieldNoteMediaBtn:hover{
  background:var(--pxl-hover-surface, var(--crv1-card-2));
}
.crv1-noteModal[hidden]{display:none !important}
.crv1-noteModal{
  position:fixed;
  inset:0;
  z-index:var(--pxl-layer-modal,1000);
}
.crv1-noteModalBackdrop{
  position:absolute;
  inset:0;
  background:var(--pxl-overlay-backdrop, rgba(0,0,0,.68));
}
.crv1-noteModalDialog{
  position:relative;
  z-index:1;
  width:min(92vw,860px);
  max-height:min(88vh,920px);
  margin:4vh auto;
  background:var(--pxl-overlay-surface, var(--pxl-surface, #0f141b));
  color:var(--pxl-text, var(--crv1-text));
  border:1px solid var(--pxl-border, var(--crv1-border));
  border-radius:16px;
  box-shadow:0 24px 64px rgba(0,0,0,.45);
  overflow:auto;
  padding:18px 18px 16px;
}
.crv1-noteModalHeader{
  padding-right:42px;
  margin-bottom:10px;
}
.crv1-noteModalHeader strong{
  font-size:18px;
  line-height:1.3;
}
.crv1-noteModalClose{
  appearance:none;
  position:absolute;
  top:8px;
  right:8px;
  z-index:2;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:42px;
  height:42px;
  padding:0;
  border:0;
  background:transparent;
  color:var(--pxl-icon-muted, var(--pxl-text, var(--crv1-text)));
  font-size:30px;
  line-height:1;
  cursor:pointer;
  touch-action:manipulation;
}
.crv1-noteModalClose > *{
  pointer-events:none;
}
.crv1-noteModalBody{
  display:flex;
  flex-direction:column;
  gap:12px;
}
.crv1-noteModalImage{
  display:block;
  width:100%;
  height:auto;
  max-height:68vh;
  object-fit:contain;
  border-radius:12px;
  background:var(--pxl-subtle-bg, transparent);
}
.crv1-noteModalText{
  margin-top:0;
  font-size:13px;
  line-height:1.6;
  white-space:pre-line;
}
body.crv1-noteModalOpen{
  overflow:hidden;
}
@media (max-width: 640px){
  .crv1-noteModalDialog{
    width:min(94vw,860px);
    margin:3vh auto;
    padding:14px;
    border-radius:14px;
  }
  .crv1-noteModalHeader strong{font-size:16px}
}


/* crv1-dynamic-funnel-boost-style: crv1-dynamic-funnel-boost.css */
/* V14.55: canonical Dynamic form layout, using shared Theme tokens. */

/* Dynamic panel --------------------------------------------------------------- */
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-stepVisible {
  margin-top:var(--pxl-space-3,12px);
  padding:var(--pxl-space-4,16px);
  border-color:color-mix(in srgb,var(--crv1-accent) 34%,var(--crv1-border));
  background:
    linear-gradient(135deg,color-mix(in srgb,var(--crv1-accent) 6%,transparent),transparent 58%),
    var(--pxl-surface-card,var(--crv1-card-2));
  box-shadow:var(--pxl-shadow-sm,none);
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-stepVisible .crv1-dynamicHeader {
  align-items:center;
  margin-bottom:var(--pxl-space-3,12px);
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-stepVisible .crv1-dynamicHeader .crv1-pistonLabel {
  font-size:var(--pxl-font-size-md,15px);
  font-weight:700 !important;
  line-height:1.35;
  letter-spacing:-.006em;
  text-transform:none;
}

/* One canonical grid replaces the old stacked-left + negative-margin action layout. */
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicBody {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  column-gap:var(--pxl-space-3,12px);
  row-gap:var(--pxl-space-3,12px);
  align-items:start;
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCompactField {
  width:auto;
  max-width:none;
  margin:0;
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCompactField > label {
  display:block;
  margin:0 0 var(--pxl-label-gap,var(--pxl-space-1,4px));
  font-size:var(--pxl-font-size-sm,13px);
  line-height:1.35;
}

.crv1-progressiveMode #crv1_dynamicSpotlight .crv1-dynamicInputControl {
  position:relative;
  min-width:0;
}

.crv1-progressiveMode #crv1_dynamicSpotlight .crv1-dynamicInputControl input {
  width:100%;
  min-height:var(--pxl-control-height-lg,48px);
  padding-right:calc(var(--pxl-control-padding-x,var(--pxl-space-3,12px)) + var(--pxl-space-8,40px));
}

.crv1-progressiveMode #crv1_dynamicSpotlight .crv1-dynamicInputUnit {
  position:absolute;
  top:50%;
  right:var(--pxl-control-padding-x,var(--pxl-space-3,12px));
  transform:translateY(-50%);
  pointer-events:none;
  color:var(--pxl-muted,var(--crv1-muted));
  font-size:var(--pxl-font-size-xs,12px);
  font-weight:600;
  line-height:1;
  white-space:nowrap;
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCompactAdjusted {
  display:none !important;
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCalcRow {
  grid-column:1 / -1;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  width:100%;
  max-width:none;
  min-height:0;
  margin:0 !important;
  padding:0;
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCalcRow .crv1-dynamicBtn {
  width:100%;
  min-width:0;
  min-height:var(--pxl-control-height-lg,48px);
  border-radius:var(--pxl-radius,12px);
}

/* Result/history/entitlement remain full-width members of the same visual flow. */
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicResultCard,
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicHistoryWrap,
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicUsageNote,
.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-paywallBox {
  grid-column:1 / -1;
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicResultCard.crv1-dynamicResultInPlace {
  margin:0;
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicUsageNote {
  margin:calc(var(--pxl-space-1,4px) * -1) 0 0;
  font-size:var(--pxl-font-size-xs,12px);
  line-height:1.4;
  text-align:center;
}

.crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-paywallBox {
  margin-top:0;
}

/* First Dynamic calculation keeps the same control geometry; only the concise
   educational note is added above the grid. */
.crv1-progressiveMode:not(.crv1-dynamic-result-ever)
  #crv1_dynamicSpotlight.crv1-stepVisible .crv1-dynamicCompactAdjusted {
  display:none !important;
}
.crv1-progressiveMode:not(.crv1-dynamic-result-ever)
  #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicWhy {
  display:flex !important;
  align-items:flex-start;
  gap:var(--pxl-space-3,12px);
  margin:0 0 var(--pxl-space-3,12px);
  padding:var(--pxl-space-3,12px);
  border:1px solid color-mix(in srgb,var(--crv1-accent) 20%,var(--crv1-border));
  border-radius:var(--pxl-radius,12px);
  background:color-mix(in srgb,var(--crv1-accent) 5%,transparent);
}
.crv1-progressiveMode:not(.crv1-dynamic-result-ever)
  #crv1_dynamicSpotlight .crv1-dynamicWhyIcon {
  flex:0 0 auto;
  color:var(--crv1-accent);
}
.crv1-progressiveMode:not(.crv1-dynamic-result-ever)
  #crv1_dynamicSpotlight .crv1-dynamicWhyCopy {
  display:grid;
  gap:var(--pxl-space-1,4px);
  min-width:0;
}
.crv1-progressiveMode:not(.crv1-dynamic-result-ever)
  #crv1_dynamicSpotlight .crv1-dynamicWhyCopy strong {
  color:var(--crv1-strong-text,var(--crv1-text));
  font-size:var(--pxl-font-size-sm,13px);
  line-height:1.35;
}
.crv1-progressiveMode:not(.crv1-dynamic-result-ever)
  #crv1_dynamicSpotlight .crv1-dynamicWhyCopy span {
  color:var(--crv1-muted);
  font-size:var(--pxl-font-size-xs,12px);
  line-height:1.42;
}
/* Wide desktop/tablet: two equal inputs + one action, aligned to the input line. */
@media (min-width:760px) {
  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicBody {
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(176px,.62fr);
  }

  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCalcRow {
    grid-column:3;
    grid-row:1;
    padding-top:calc(var(--pxl-font-size-sm,13px) * 1.35 + var(--pxl-label-gap,var(--pxl-space-1,4px)));
  }
}

/* Phone: single clear vertical rhythm; action remains full-width and never floats. */
@media (max-width:640px) {
  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-stepVisible {
    padding:var(--pxl-space-3,12px);
  }

  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicBody {
    grid-template-columns:minmax(0,1fr);
    row-gap:var(--pxl-space-3,12px);
  }

  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCompactCam,
  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCompactRod,
  .crv1-progressiveMode #crv1_dynamicSpotlight.crv1-dynamicStableFlow .crv1-dynamicCalcRow {
    grid-column:1;
  }

  .crv1-progressiveMode #crv1_dynamicSpotlight .crv1-dynamicInputControl input {
    font-size:var(--pxl-font-size-base,16px);
  }

}



/* crv1-smart-sticky-action-style: crv1-smart-sticky-action.css */
/* V14.10 — smart sticky next-action CTA + return-to-result focus. */
.crv1-smartStickyAction {
  position: fixed;
  right: 20px;
  bottom: max(20px, env(safe-area-inset-bottom));
  z-index: var(--pxl-layer-sticky,20);
  width: min(300px, calc(100vw - 28px));
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(12px);
  transition: opacity .18s ease, transform .18s ease, visibility .18s ease, left .12s ease, width .12s ease;
  font-family: var(--pxl-font, inherit);
}
.crv1-smartStickyAction.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}

/* Desktop: place the action immediately beside the calculator rather than at the far viewport edge. */
.crv1-smartStickyAction.is-calculator-side {
  left: var(--crv1-sticky-left, auto);
  right: auto;
  bottom: max(22px, env(safe-area-inset-bottom));
  width: var(--crv1-sticky-width, 260px);
}

/* If there is not enough room beside the calculator, keep the CTA aligned to the calculator itself. */
.crv1-smartStickyAction.is-calculator-dock {
  left: var(--crv1-sticky-left, 14px);
  right: auto;
  bottom: max(14px, env(safe-area-inset-bottom));
  width: var(--crv1-sticky-width, calc(100vw - 28px));
}

.crv1-smartStickyAction__btn {
  width: 100%;
  min-height: 48px;
  margin: 0;
  padding: 11px 17px;
  border: 1px solid color-mix(in srgb, var(--pxl-primary, #2f81f7) 72%, #fff 8%);
  border-radius: var(--pxl-radius-md, 11px);
  background: var(--pxl-primary, #2f81f7);
  color: var(--pxl-on-primary,#fff);
  box-shadow: 0 12px 34px rgba(0,0,0,.28), 0 0 0 1px rgba(255,255,255,.04) inset;
  font: inherit;
  font-size: 14px;
  font-weight: 750;
  line-height: 1.3;
  text-align: center;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: filter .14s ease, transform .08s ease, box-shadow .14s ease;
}
.crv1-smartStickyAction__btn:hover,
.crv1-smartStickyAction__btn:focus-visible {
  filter: brightness(1.07);
  box-shadow: 0 14px 38px rgba(0,0,0,.32), 0 0 0 3px var(--pxl-primary-ring, rgba(47,129,247,.20));
  outline: 0;
}
.crv1-smartStickyAction__btn:active { transform: translateY(1px); }
.crv1-smartStickyAction__btn:disabled {
  opacity: .58;
  cursor: default;
  filter: none;
}
.crv1-smartStickyAction[data-phase="dynamic"] .crv1-smartStickyAction__btn {
  background: color-mix(in srgb, var(--pxl-primary, #2f81f7) 92%, #0b1320 8%);
}
.crv1-smartFocusPulse { animation: crv1SmartFocusPulse .72s ease; }
#crv1_dynamicSpotlight.crv1-nextActionPulse { animation: crv1NextActionPulse .72s ease; }
@keyframes crv1SmartFocusPulse {
  0%,100% { box-shadow: inherit; }
  45% { box-shadow: 0 0 0 4px var(--pxl-primary-ring, rgba(47,129,247,.22)); }
}
@keyframes crv1NextActionPulse {
  0%,100% { box-shadow: none; }
  45% { box-shadow: 0 0 0 3px var(--pxl-primary-ring, rgba(47,129,247,.18)); }
}

/* Mobile: centered pill, leaving both screen corners free for site-level floating controls (e.g. Hỏi PXL). */
@media (max-width: 720px) {
  .crv1-smartStickyAction,
  .crv1-smartStickyAction.is-calculator-side,
  .crv1-smartStickyAction.is-calculator-dock {
    left: 50% !important;
    right: auto !important;
    bottom: max(13px, env(safe-area-inset-bottom));
    width: min(280px, calc(100vw - 112px)) !important;
    min-width: 190px;
    transform: translate(-50%, 12px);
  }
  .crv1-smartStickyAction.is-visible {
    transform: translate(-50%, 0);
  }
  .crv1-smartStickyAction__btn {
    min-height: 48px;
    padding: 10px 16px;
    border-radius: 999px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}
@media (max-width: 360px) {
  .crv1-smartStickyAction,
  .crv1-smartStickyAction.is-calculator-side,
  .crv1-smartStickyAction.is-calculator-dock {
    width: calc(100vw - 104px) !important;
    min-width: 176px;
  }
  .crv1-smartStickyAction__btn {
    padding-left: 12px;
    padding-right: 12px;
    font-size: 13px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .crv1-smartStickyAction,
  .crv1-smartStickyAction__btn { transition: none; }
  .crv1-smartFocusPulse,
  #crv1_dynamicSpotlight.crv1-nextActionPulse { animation: none; }
}
@supports not (background: color-mix(in srgb, black 50%, white)) {
  .crv1-smartStickyAction__btn,
  .crv1-smartStickyAction[data-phase="dynamic"] .crv1-smartStickyAction__btn {
    background: var(--pxl-primary, #2f81f7);
    border-color: var(--pxl-primary, #2f81f7);
  }
}


/* After an explicit successful calculation, softly mark the result the user was returned to. */
.crv1-staticResultCard.crv1-resultReturnHit,
.crv1-dynamicResultCard.crv1-resultReturnHit {
  animation: crv1ResultReturnHit .72s ease;
}
@keyframes crv1ResultReturnHit {
  0%,100% { box-shadow: inherit; }
  38% { box-shadow: 0 0 0 3px var(--pxl-primary-ring, rgba(47,129,247,.20)), 0 12px 28px rgba(0,0,0,.12); }
}
@media (prefers-reduced-motion: reduce) {
  .crv1-staticResultCard.crv1-resultReturnHit,
  .crv1-dynamicResultCard.crv1-resultReturnHit { animation: none; }
}

