/* ==========================================================
   ACCEL AIR / A·TEMP — QUOTE BUILDER
   RUNNING SUMMARY
   The sticky ticket, and the mobile total bar that takes over once the
   ticket stops being sticky.

   Part 4 of 9. Loaded by index.html in numbered order and
   CASCADES IN THAT ORDER — a rule here can be overridden by any later
   part, so keep the <link> tags in sequence and add new parts at the
   position they belong, not at the end.
   ========================================================== */
/* ══════════════════════════════════════════════════════════
   TICKET (sticky summary sidebar)
   ══════════════════════════════════════════════════════════ */
.ticket{position:sticky;top:calc(var(--hdrH) + 14px);min-width:0}
.ticket-card{background:#fff;border:1px solid rgba(19,28,38,.07);border-radius:var(--r-lg);
  box-shadow:var(--e3);overflow:hidden}
/* Long quotes would otherwise push the action buttons past the fold: the
   sticky column scrolls internally. The padding/negative-margin pair keeps the
   card's drop shadow from being clipped by the scroll container. */
.ticket-scroll{max-height:calc(100vh - var(--hdrH) - 30px);overflow-y:auto;
  overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:8px;margin:-8px}
.ticket-hdr{background:linear-gradient(135deg,var(--pl) 0%,var(--p) 55%,var(--pd) 100%);
  padding:16px 18px;color:#fff}
.ticket-hdr .t-name{font-weight:700;font-size:1.02rem;letter-spacing:-.01em}
.ticket-hdr .t-sub{font-size:.75rem;opacity:.82;margin-top:3px;overflow-wrap:anywhere}
.ticket-lines{padding:var(--s3) var(--s4)}
.t-line{display:flex;justify-content:space-between;align-items:baseline;padding:8px 0;
  border-bottom:1px solid var(--line-2);gap:var(--s2)}
.t-line:last-child{border-bottom:none}
.t-line .tl-desc{flex:1;font-size:.83rem;font-weight:500;color:var(--ink-2);min-width:0;overflow-wrap:anywhere}
.t-line.neg .tl-desc{color:var(--ok)}
.t-line.promo .tl-desc{color:var(--amber)}
.t-line .tl-amt{font-weight:700;font-size:.88rem;white-space:nowrap;color:var(--ink)}
.t-line.neg .tl-amt{color:var(--ok)}
.t-line.promo .tl-amt{color:var(--amber)}
.t-line.boost .tl-desc,.t-line.boost .tl-amt{color:var(--p)}
.t-line .tl-qty{font-size:.7rem;color:var(--muted);display:block}
.ticket-totals{border-top:1px solid var(--line);padding:var(--s3) var(--s4)}
.ticket-total-row{display:flex;justify-content:space-between;margin-bottom:6px;gap:var(--s2)}
.ticket-total-row span{font-size:.84rem;color:var(--soft)}
.ticket-total-row strong{font-weight:600;color:var(--ink-2)}
.ticket-grand{display:flex;justify-content:space-between;align-items:center;padding:13px 15px;
  background:linear-gradient(135deg,var(--bg),color-mix(in srgb,var(--p) 16%,#fff));
  border:1px solid color-mix(in srgb,var(--p) 22%,transparent);
  border-radius:var(--r);gap:var(--s2)}
.ticket-grand span{font-weight:700;color:var(--pd);font-size:.82rem;letter-spacing:.06em;text-transform:uppercase}
.ticket-grand strong{font-weight:800;font-size:1.3rem;color:var(--pd);white-space:nowrap;letter-spacing:-.02em}
.ticket-gst{text-align:right;font-size:.72rem;color:var(--muted);margin-top:5px}
.ticket-boost{text-align:right;font-size:.72rem;color:var(--p);font-weight:600;margin-top:4px}
.ticket-actions{padding:0 var(--s4) var(--s4);display:grid;grid-template-columns:1.65fr 1fr;gap:var(--s2)}
/* "Quote Document" wrapped to two lines in an even split. The primary action
   earns the wider half. */
.btn-primary{background:linear-gradient(180deg,#f5967f,var(--pa));color:#fff;border:none;
  border-radius:var(--r-sm);padding:13px 8px;font-weight:700;font-size:.88rem;cursor:pointer;
  width:100%;font-family:inherit;box-shadow:0 2px 10px color-mix(in srgb,var(--pa) 45%,transparent);
  transition:transform var(--t) var(--ease),box-shadow var(--t) var(--ease),filter var(--t) var(--ease)}
.btn-primary:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.04);
  box-shadow:0 4px 16px color-mix(in srgb,var(--pa) 52%,transparent)}
.btn-primary:active:not(:disabled){transform:translateY(0)}
.btn-secondary{background:#fff;color:var(--pd);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:13px 8px;font-weight:600;font-size:.85rem;cursor:pointer;width:100%;font-family:inherit;
  transition:border-color var(--t) var(--ease),background var(--t) var(--ease)}
.btn-secondary:hover:not(:disabled){border-color:var(--pl);background:var(--bg)}
.btn-primary:disabled,.btn-secondary:disabled{opacity:.42;cursor:not-allowed;box-shadow:none}
.warn-box{background:var(--amberBg);border:1px solid #fbe3b5;border-radius:var(--r);
  padding:13px 15px;margin-top:var(--s3);font-size:.74rem;color:var(--amber);box-shadow:var(--e1)}
.warn-box b{display:block;margin-bottom:6px}
.warn-box ul{margin:0;padding-left:15px;line-height:1.85}

/* ══════════════════════════════════════════════════════════
   MOBILE TOTAL BAR — appears once the ticket stops being sticky
   ══════════════════════════════════════════════════════════ */
.mobile-bar{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:60;
  background:rgba(255,255,255,.92);backdrop-filter:saturate(170%) blur(14px);
  border-top:1px solid var(--line);box-shadow:0 -6px 24px rgba(19,28,38,.13);
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  align-items:center;gap:10px;
}
.mobile-bar .mb-info{flex:1;min-width:0}
.mobile-bar .mb-label{display:block;font-size:.63rem;font-weight:800;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted)}
.mobile-bar .mb-amt{font-size:1.2rem;font-weight:800;color:var(--pd);letter-spacing:-.02em}
.mobile-bar .mb-btn{background:linear-gradient(180deg,#f5967f,var(--pa));color:#fff;border:none;
  border-radius:var(--r-sm);padding:12px 18px;font-weight:700;font-size:.85rem;cursor:pointer;
  white-space:nowrap;box-shadow:0 2px 10px color-mix(in srgb,var(--pa) 45%,transparent)}
.mobile-bar .mb-btn:disabled{opacity:.42;cursor:not-allowed;box-shadow:none}
.mobile-bar .mb-jump{background:#fff;color:var(--pd);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:12px 14px;font-weight:600;font-size:.85rem;cursor:pointer;white-space:nowrap}

/* The quote document and its printed output keep the original stack. That
   typography reaches customers and was signed off; this redesign is for the
   builder the rep works in. */
.modal-inner,#printArea{font-family:'Segoe UI',system-ui,-apple-system,Roboto,Arial,sans-serif}
