/* OWHA Quote Engine UI. Inherits theme tokens; safe defaults if the theme is absent. */
.owha-app { --q-navy:var(--owha-navy,#0B2D5B); --q-royal:var(--owha-royal,#0A67C8); --q-royal-dark:var(--owha-royal-dark,#084F9A); --q-cyan:var(--owha-cyan,#00B4E6); --q-ice:var(--owha-ice,#EAF4FC); --q-gray:var(--owha-gray-100,#F3F6FA); --q-gray3:var(--owha-gray-300,#C9D3DF); --q-gray5:var(--owha-gray-500,#5B6878); --q-ink:var(--owha-ink,#14202E); --q-success:var(--owha-success,#146C46); --q-warn:var(--owha-warning,#A34F00); --q-danger:#B42318; --q-radius:12px;
  font-family: var(--owha-font-body, Inter, system-ui, sans-serif); color: var(--q-ink); max-width: 720px; margin: 0 auto; padding: 0 0 2rem; }
.owha-app *, .owha-app *::before, .owha-app *::after { box-sizing: border-box; }
.owha-app__loading { padding: 3rem 1rem; text-align: center; color: var(--q-gray5); }
.owha-app h2 { font-family: var(--owha-font-head, Montserrat, Inter, sans-serif); color: var(--q-navy); font-size: clamp(1.375rem, 3.5vw, 1.875rem); line-height: 1.2; margin: 0 0 .5rem; }
.owha-app p { line-height: 1.55; }
.owha-app .q-help { color: var(--q-gray5); font-size: .9375rem; margin: 0 0 1.25rem; }
/* Low-specificity reset: lets .q-btn and other component classes set their own weight and size. */
:where(.owha-app) button { font: inherit; }

/* Progress */
.q-progress { display: flex; align-items: center; gap: .75rem; margin: 0 0 1.25rem; font-size: .8125rem; color: var(--q-gray5); }
.q-progress__bar { flex: 1; height: 6px; background: var(--q-gray); border-radius: 999px; overflow: hidden; }
.q-progress__fill { height: 100%; background: var(--q-cyan); width: 0; transition: width 240ms ease; }

/* Screen */
.q-screen { animation: q-in 180ms ease; }
@keyframes q-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .q-screen { animation: none; } }

/* Option cards */
.q-cards { display: grid; gap: .75rem; grid-template-columns: repeat(2, 1fr); margin: 0 0 1.25rem; }
@media (min-width: 640px) { .q-cards { grid-template-columns: repeat(3, 1fr); } .q-cards--2 { grid-template-columns: repeat(2, 1fr); } }
.q-card { display: flex; flex-direction: column; align-items: flex-start; gap: .4rem; text-align: left; min-height: 96px; padding: 1rem; background: #fff; border: 2px solid var(--q-gray); border-radius: var(--q-radius); cursor: pointer; transition: border-color 140ms, box-shadow 140ms; color: var(--q-ink); width: 100%; }
.q-card:hover { border-color: var(--q-royal); }
.q-card:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(0,180,230,.55); }
.q-card[aria-pressed="true"] { border-color: var(--q-royal); background: var(--q-ice); box-shadow: 0 2px 8px rgba(11,45,91,.08); }
.q-card__icon { width: 40px; height: 40px; color: var(--q-navy); }
.q-card__icon svg { width: 100%; height: 100%; }
.q-card__title { font-weight: 700; color: var(--q-navy); }
.q-card__desc { font-size: .8125rem; color: var(--q-gray5); line-height: 1.4; }
.q-card--muted { background: var(--q-gray); border-color: var(--q-gray); }

/* Inputs */
.q-field { margin: 0 0 1rem; }
.q-field label { display: block; font-weight: 600; margin-bottom: .35rem; color: var(--q-navy); }
.q-field input, .q-field select, .q-field textarea { width: 100%; font: inherit; font-size: 1.0625rem; padding: .8rem .9rem; border: 2px solid var(--q-gray3); border-radius: 8px; min-height: 48px; background: #fff; color: var(--q-ink); }
.q-field input:focus, .q-field select:focus, .q-field textarea:focus { outline: none; border-color: var(--q-royal); box-shadow: 0 0 0 3px rgba(0,180,230,.35); }
.q-field .q-error { color: var(--q-danger); font-size: .8125rem; margin-top: .3rem; display: none; }
.q-field.is-invalid input { border-color: var(--q-danger); }
.q-field.is-invalid .q-error { display: block; }
.q-row { display: grid; gap: .75rem; grid-template-columns: 1fr 1fr; }
@media (max-width: 480px) { .q-row { grid-template-columns: 1fr; } }
.q-stepper { display: inline-flex; align-items: center; border: 2px solid var(--q-gray3); border-radius: 999px; overflow: hidden; }
.q-stepper button { width: 48px; height: 48px; border: 0; background: #fff; font-size: 1.25rem; cursor: pointer; color: var(--q-royal); }
.q-stepper output { min-width: 3rem; text-align: center; font-weight: 700; }
.q-check { display: flex; gap: .6rem; align-items: flex-start; font-size: .9375rem; margin: .5rem 0; }
.q-check input { width: 22px; height: 22px; margin-top: .1rem; flex: none; accent-color: var(--q-royal); }

/* Actions */
.q-actions { display: flex; gap: .75rem; align-items: center; justify-content: space-between; margin-top: 1rem; position: sticky; bottom: 0; background: linear-gradient(180deg, rgba(255,255,255,0), #fff 30%); padding: .75rem 0 .25rem; }
.q-btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 48px; padding: .85rem 1.5rem; border-radius: 999px; font-weight: 700; font-size: .9375rem; border: 2px solid transparent; cursor: pointer; text-decoration: none; }
.q-btn--primary { background: var(--q-royal); color: #fff; }
.q-btn--primary:hover { background: var(--q-royal-dark); }
.q-btn--primary:disabled { opacity: .5; cursor: not-allowed; }
.q-btn--ghost { background: transparent; color: var(--q-navy); border-color: var(--q-gray3); }
.q-btn--link { background: none; border: 0; color: var(--q-royal); padding: .5rem; font-weight: 600; cursor: pointer; text-decoration: underline; text-underline-offset: .15em; }
.q-btn--block { width: 100%; }
.q-btn--cyan { background: var(--q-cyan); color: var(--q-navy); }

/* Explainers */
.q-what { margin: .5rem 0 1rem; }
.q-what summary { cursor: pointer; color: var(--q-royal); font-weight: 600; font-size: .9375rem; list-style: none; }
.q-what summary::-webkit-details-marker { display: none; }
.q-what p { margin: .5rem 0 0; font-size: .9375rem; color: #2C3A4B; background: var(--q-ice); padding: .75rem 1rem; border-left: 4px solid var(--q-cyan); border-radius: 0 8px 8px 0; }
.q-safety { background: #FFF4E5; border-left: 4px solid var(--q-warn); padding: .75rem 1rem; border-radius: 0 8px 8px 0; font-size: .9375rem; margin: 0 0 1rem; }
.q-safety strong { color: var(--q-warn); }
.q-mascot { display: grid; grid-template-columns: 56px 1fr; gap: .75rem; align-items: start; background: var(--q-gray); border-radius: var(--q-radius); padding: .75rem 1rem; margin: 0 0 1.25rem; font-size: .9375rem; }
.q-mascot img { width: 56px; height: auto; }

/* Photo upload */
.q-photos { display: grid; gap: .75rem; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 640px) { .q-photos { grid-template-columns: repeat(3, 1fr); } }
.q-photo { position: relative; border: 2px dashed var(--q-gray3); border-radius: var(--q-radius); padding: .75rem; min-height: 110px; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; font-size: .8125rem; color: var(--q-gray5); cursor: pointer; background: #fff; }
.q-photo input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.q-photo img { max-height: 90px; border-radius: 6px; }
.q-photo.has-file { border-style: solid; border-color: var(--q-success); }
.q-photo strong { color: var(--q-navy); }

/* Availability windows */
.q-windows { display: grid; gap: .6rem; grid-template-columns: 1fr; margin: 0 0 1rem; }
@media (min-width: 560px) { .q-windows { grid-template-columns: 1fr 1fr; } }
.q-window { display: flex; justify-content: space-between; align-items: center; padding: .85rem 1rem; border: 2px solid var(--q-gray); border-radius: 10px; background: #fff; cursor: pointer; font-weight: 600; color: var(--q-navy); text-align: left; }
.q-window[aria-pressed="true"] { border-color: var(--q-royal); background: var(--q-ice); }
.q-window small { color: var(--q-gray5); font-weight: 500; }
.q-status { display: inline-block; padding: .35rem .7rem; border-radius: 999px; font-weight: 700; font-size: .8125rem; }
.q-status--same-day { background: #E6F6EE; color: var(--q-success); }
.q-status--next-day, .q-status--this-week { background: var(--q-ice); color: var(--q-navy); }
.q-status--call { background: #FFF4E5; color: var(--q-warn); }
.q-status--outside { background: var(--q-gray); color: var(--q-ink); }

/* Results */
.q-results { max-width: none; }
.q-tiers { display: grid; gap: 1rem; grid-template-columns: 1fr; }
@media (min-width: 900px) { .q-tiers { grid-template-columns: repeat(3, 1fr); align-items: start; } .owha-app.q-results { max-width: 1200px; } }
.q-tier { border: 2px solid var(--q-gray); border-radius: var(--q-radius); background: #fff; padding: 1.25rem; position: relative; display: flex; flex-direction: column; }
.q-tier--preferred { border-color: var(--q-royal); box-shadow: 0 8px 24px rgba(11,45,91,.12); }
.q-tier--preferred::before { content: "Recommended"; position: absolute; top: -12px; left: 1rem; background: var(--q-royal); color: #fff; font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: .25rem .6rem; border-radius: 999px; }
.q-tier h3 { margin: 0; font-family: var(--owha-font-head, Montserrat, sans-serif); text-transform: uppercase; letter-spacing: .02em; color: var(--q-navy); font-size: 1.125rem; }
.q-tier__sys { color: var(--q-gray5); font-size: .9375rem; margin: .2rem 0 .75rem; }
.q-tier__price { font-family: var(--owha-font-head, Montserrat, sans-serif); font-weight: 800; font-size: 1.875rem; color: var(--q-navy); line-height: 1.1; }
.q-tier__price small { display: block; font-family: inherit; font-weight: 500; font-size: .75rem; color: var(--q-gray5); letter-spacing: 0; }
.q-tier__monthly { font-size: .875rem; color: var(--q-gray5); margin: .25rem 0 .75rem; }
.q-tier__meta { display: flex; flex-wrap: wrap; gap: .4rem .9rem; font-size: .8125rem; color: var(--q-gray5); margin: .5rem 0 .75rem; }
.q-tier__meta b { color: var(--q-ink); font-weight: 600; }
.q-group { margin: .6rem 0; }
.q-group h4 { margin: 0 0 .35rem; font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--q-gray5); font-weight: 700; }
.q-line { display: grid; grid-template-columns: 1fr auto; gap: .5rem; align-items: start; padding: .45rem 0; border-top: 1px solid var(--q-gray); font-size: .9rem; }
.q-line:first-of-type { border-top: 0; }
.q-line__name { display: flex; flex-direction: column; gap: .15rem; }
.q-line__why { font-size: .8125rem; color: var(--q-gray5); }
.q-line__price { font-weight: 700; white-space: nowrap; color: var(--q-navy); }
.q-line label { display: flex; gap: .5rem; align-items: flex-start; cursor: pointer; }
.q-line input { width: 20px; height: 20px; accent-color: var(--q-royal); flex: none; margin-top: .1rem; }
.q-chip { display: inline-block; font-size: .65rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: .2rem .5rem; border-radius: 999px; margin-right: .35rem; vertical-align: middle; }
.q-chip--included { background: #E6F6EE; color: var(--q-success); }
.q-chip--required { background: #FDECEA; color: var(--q-danger); }
.q-chip--recommended { background: var(--q-ice); color: var(--q-royal); }
.q-chip--optional { background: var(--q-gray); color: var(--q-ink); }
.q-chip--verify { background: #FFF4E5; color: var(--q-warn); }
.q-tier details { margin-top: .5rem; }
.q-tier details summary { cursor: pointer; color: var(--q-royal); font-weight: 600; font-size: .875rem; }
.q-tier .q-btn { margin-top: 1rem; }
.q-fine { font-size: .8125rem; color: var(--q-gray5); margin: 1rem 0; }
.q-legend { display: flex; flex-wrap: wrap; gap: .5rem 1rem; font-size: .8125rem; color: var(--q-gray5); margin: .75rem 0 1.25rem; }
.q-compare { background: var(--q-ice); border-radius: var(--q-radius); padding: 1rem 1.25rem; margin: 1rem 0; }
.q-compare h4 { margin: 0 0 .4rem; color: var(--q-navy); }
.q-alert { background: var(--q-gray); border-radius: 10px; padding: .85rem 1rem; font-size: .9375rem; margin: 0 0 1rem; }
.q-alert--ok { background: #E6F6EE; color: var(--q-success); }
.q-alert--warn { background: #FFF4E5; color: var(--q-warn); }
.q-summary { border: 1px solid var(--q-gray3); border-radius: var(--q-radius); padding: 1rem 1.25rem; margin: 0 0 1rem; font-size: .9375rem; }
.q-summary dl { display: grid; grid-template-columns: auto 1fr; gap: .3rem 1rem; margin: 0; }
.q-summary dt { color: var(--q-gray5); }
.q-summary dd { margin: 0; font-weight: 600; }
.q-done { text-align: center; padding: 1.5rem 0; }
.q-done .q-ok { width: 64px; height: 64px; border-radius: 50%; background: #E6F6EE; color: var(--q-success); display: inline-grid; place-items: center; font-size: 2rem; margin-bottom: .75rem; }
.q-sizing-out { background: var(--q-ice); border-radius: var(--q-radius); padding: 1.25rem; }
.q-sizing-out .q-big { font-family: var(--owha-font-head, Montserrat, sans-serif); font-size: 1.75rem; color: var(--q-navy); font-weight: 800; }
.q-kv { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: .75rem; margin: .75rem 0; }
.q-kv div { background: #fff; border-radius: 8px; padding: .75rem; }
.q-kv b { display: block; color: var(--q-navy); font-size: 1.125rem; }
.q-kv span { font-size: .75rem; color: var(--q-gray5); }

/* Programmatic focus on step headings: no ring for mouse users, ring kept for keyboard */
.owha-app h2[tabindex="-1"]:focus:not(:focus-visible) { outline: none; box-shadow: none; }

.q-actions.q-actions--top { position: static; background: none; margin: 0 0 1rem; padding: 0; }

/* CLS guard: reserve the app's first-screen height before JS renders */
.owha-app[data-owha-app="quote"] { min-height: 520px; }
.owha-app[data-owha-app="sizing"], .owha-app[data-owha-app="improve"] { min-height: 640px; }
.owha-app[data-owha-app="identify"], .owha-app[data-owha-app="ask"] { min-height: 420px; }
.owha-app[data-owha-app="availability"] { min-height: 260px; }

/* ---------- v2 builder chrome: one question per screen, big targets ---------- */
body.owha-in-builder { background: var(--owha-sky, #F4F9FE); }
body.owha-in-builder .owha-builder { padding: clamp(1.25rem, 4vw, 2.5rem) var(--owha-gutter, 1rem) 3rem; }
body.owha-in-builder .owha-quote-title { text-align: center; font-size: .8125rem !important; letter-spacing: .12em; text-transform: uppercase; color: var(--owha-royal, #0A67C8); font-family: var(--owha-font-body, Inter, sans-serif); font-weight: 700; margin: 0 auto 1rem; }
.owha-app { max-width: 680px; }
.owha-app.q-results { max-width: 1100px; }
.q-progress { max-width: 680px; margin: 0 auto 1rem; font-weight: 600; }
.q-progress__bar { height: 8px; background: #fff; box-shadow: inset 0 0 0 1px var(--owha-line, #E3EAF2); }
.q-progress__fill { background: linear-gradient(90deg, var(--q-royal), var(--q-cyan)); }
.q-progress__label { color: var(--q-navy); }
.q-screen { background: #fff; border-radius: 24px; box-shadow: 0 1px 2px rgba(11,45,91,.05), 0 12px 32px rgba(11,45,91,.08); padding: clamp(1.25rem, 4.5vw, 2.25rem); }
.q-results .q-screen { background: transparent; box-shadow: none; padding: 0; }
.owha-app .q-screen h2 { font-size: clamp(1.5rem, 1.1rem + 2vw, 2rem); margin-bottom: .6rem; }
.owha-app h2[tabindex="-1"]:focus { outline: none; }
.owha-app .q-help { font-size: 1rem; }
.q-cards { gap: .85rem; }
.q-card { min-height: 104px; padding: 1.1rem 1.1rem 1rem; border-radius: 18px; border-width: 2px; border-color: var(--owha-line, #E3EAF2); position: relative; transition: border-color 140ms, box-shadow 140ms, transform 140ms; }
.q-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(11,45,91,.08); }
.q-card[aria-pressed="true"]::after { content: ""; position: absolute; top: .75rem; right: .75rem; width: 22px; height: 22px; border-radius: 50%; background: var(--q-royal) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E") center / 14px no-repeat; }
.q-card__icon { width: 44px; height: 44px; color: var(--q-royal); }
.q-card__title { font-size: 1.0625rem; }
.q-what summary { display: inline-flex; align-items: center; gap: .35rem; min-height: 44px; }
.q-what summary::before { content: "?"; display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--q-ice); color: var(--q-royal); font-size: .75rem; font-weight: 800; }
.q-actions { margin-top: 1.5rem; padding-top: 1rem; background: linear-gradient(180deg, rgba(255,255,255,0), #fff 35%); }
.q-actions .q-btn--primary { min-width: 9rem; min-height: 52px; font-size: 1rem; }
.q-save { display: flex; flex-wrap: wrap; gap: .6rem; align-items: flex-start; background: var(--q-ice); border-radius: 16px; padding: 1rem; margin: 0 0 1.25rem; }
.q-save .q-field { flex: 1 1 14rem; margin: 0; }
.q-save__msg { flex-basis: 100%; margin: 0; font-size: .9375rem; }
@media (max-width: 599px) {
  body.owha-in-builder .owha-builder { padding-top: 1rem; }
  .q-screen { border-radius: 20px; }
  .q-cards { grid-template-columns: 1fr; }
  .q-card { min-height: 64px; justify-content: center; }
  .q-card:has(.q-card__icon) { display: grid; grid-template-columns: 44px 1fr; column-gap: .9rem; row-gap: .15rem; align-items: center; align-content: center; }
  .q-card:has(.q-card__icon) .q-card__icon { grid-row: span 2; }
  .q-card[aria-pressed="true"] { padding-right: 2.5rem; }
  .q-actions { position: sticky; bottom: 0; margin-inline: calc(-1 * clamp(1.25rem, 4.5vw, 2.25rem)); padding-inline: clamp(1.25rem, 4.5vw, 2.25rem); border-radius: 0 0 20px 20px; }
  .q-actions .q-btn--primary { flex: 1; }
}
.owha-app h2[tabindex="-1"]:focus, .owha-app h2[tabindex="-1"]:focus-visible { outline: none; box-shadow: none; }
@media (min-width: 600px) { .q-actions { position: static; background: none; } }

/* ---------- Instant Price Estimator ---------- */
.owha-app.owha-est { max-width: none; min-height: 900px; }
.est { display: grid; gap: clamp(1.25rem, 3vw, 2rem); align-items: start; }
@media (min-width: 960px) { .est { grid-template-columns: minmax(0, 1.25fr) minmax(320px, .85fr); } }
.est__controls { display: grid; gap: 1rem; min-width: 0; }
.est-group { border: 0; margin: 0; padding: clamp(1rem, 3vw, 1.5rem); background: #fff; border-radius: 20px; box-shadow: 0 1px 2px rgba(11,45,91,.05), 0 8px 24px rgba(11,45,91,.06); min-width: 0; }
.est-group legend { float: left; width: 100%; padding: 0; margin: 0 0 .85rem; font: 800 1.0625rem/1.3 var(--owha-font-head, Montserrat, sans-serif); color: var(--q-navy); }
.est-group legend + * { clear: both; }
.est-hint { font-size: .875rem; color: var(--q-gray5); margin: .75rem 0 0; }
.est-note { font-size: .875rem; background: var(--q-ice); border-left: 4px solid var(--q-cyan); padding: .6rem .85rem; border-radius: 0 10px 10px 0; margin: .75rem 0 0; }
.est-types { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 8.5rem), 1fr)); }
.est-type { display: flex; flex-direction: column; align-items: center; gap: .4rem; padding: .85rem .5rem; min-height: 96px; border: 2px solid var(--owha-line, #E3EAF2); border-radius: 16px; background: #fff; color: var(--q-navy); font: 700 .875rem/1.2 var(--owha-font-body, Inter, sans-serif); cursor: pointer; text-align: center; transition: border-color .14s, background .14s; }
.est-type .q-card__icon { width: 36px; height: 36px; color: var(--q-royal); }
.est-type:hover { border-color: var(--q-royal); }
.est-type[aria-pressed="true"] { border-color: var(--q-royal); background: var(--q-ice); box-shadow: inset 0 0 0 1px var(--q-royal); }
.est-chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.est-chip { min-height: 44px; padding: .55rem 1rem; border-radius: 999px; border: 1.5px solid var(--owha-line, #E3EAF2); background: #fff; color: var(--q-navy); font: 600 .9375rem/1.2 var(--owha-font-body, Inter, sans-serif); cursor: pointer; transition: background .14s, border-color .14s, color .14s; }
.est-chip:hover { border-color: var(--q-royal); }
.est-chip[aria-pressed="true"] { background: var(--q-navy); border-color: var(--q-navy); color: #fff; }
.est-q { display: grid; gap: .5rem; padding: .85rem 0; border-top: 1px solid var(--owha-line, #E3EAF2); }
.est-q:first-of-type { border-top: 0; padding-top: 0; }
.est-q__label { font-weight: 700; color: var(--q-ink); font-size: .9375rem; }
.est-q__label small { display: block; font-weight: 400; color: var(--q-gray5); font-size: .8125rem; margin-top: .15rem; }
.est-zip { width: 100%; max-width: 14rem; font: inherit; font-size: 1.125rem; letter-spacing: .08em; padding: .7rem 1rem; min-height: 52px; border: 2px solid var(--q-gray3); border-radius: 12px; }
.est-zip:focus { outline: none; border-color: var(--q-royal); box-shadow: 0 0 0 3px rgba(0,180,230,.35); }
.est__summary { position: relative; background: #fff; border-radius: 24px; padding: clamp(1.25rem, 3vw, 1.75rem); box-shadow: 0 1px 2px rgba(11,45,91,.06), 0 18px 44px rgba(11,45,91,.12); border-top: 6px solid var(--q-royal); transition: opacity .2s; }
@media (min-width: 960px) { .est__summary { position: sticky; top: calc(var(--owha-header-h, 72px) + 1rem); max-height: calc(100vh - var(--owha-header-h, 72px) - 2rem); overflow-y: auto; } }
.est__summary.is-loading { opacity: .6; }
.est-sum__eyebrow { margin: 0 0 .75rem; font-size: .75rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--q-royal); }
.est-tiers { display: grid; grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); gap: .4rem; margin-bottom: 1rem; }
.est-tier { display: grid; gap: .1rem; text-align: left; padding: .6rem .7rem; border: 1.5px solid var(--owha-line, #E3EAF2); border-radius: 14px; background: #fff; cursor: pointer; font: inherit; color: var(--q-ink); min-height: 44px; }
.est-tier[aria-pressed="true"] { border-color: var(--q-royal); background: var(--q-ice); box-shadow: inset 0 0 0 1px var(--q-royal); }
.est-tier__name { font-weight: 800; font-size: .8125rem; color: var(--q-navy); display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; }
.est-tier__name em { font-style: normal; font-size: .625rem; letter-spacing: .06em; text-transform: uppercase; background: var(--q-royal); color: #fff; border-radius: 999px; padding: .1rem .4rem; }
.est-tier__price { font-weight: 700; font-size: .9375rem; }
.est-tier__warr { font-size: .6875rem; color: var(--q-gray5); }
.est-total { display: grid; margin: 0 0 1rem; }
.est-total__amt { font: 800 clamp(2.25rem, 1.8rem + 1.6vw, 2.9rem)/1.05 var(--owha-font-head, Montserrat, sans-serif); color: var(--q-navy); letter-spacing: -.02em; }
.est-total__sub { color: var(--q-gray5); font-size: .875rem; margin-top: .3rem; }
.est-lines { list-style: none; margin: 0 0 1rem; padding: 0; border-top: 1px solid var(--owha-line, #E3EAF2); }
.est-line { display: flex; justify-content: space-between; gap: 1rem; padding: .6rem 0; border-bottom: 1px solid var(--owha-line, #E3EAF2); font-size: .9375rem; }
.est-line__name small { display: block; color: var(--q-gray5); font-size: .75rem; margin-top: .1rem; }
.est-line__val { font-weight: 700; white-space: nowrap; color: var(--q-navy); }
.est-line--inc .est-line__val { color: var(--q-success); }
.est-line--req .est-line__val { color: var(--q-warn); }
.est-line--opt label { display: flex; gap: .6rem; align-items: flex-start; cursor: pointer; }
.est-line--opt input { width: 20px; height: 20px; margin-top: .1rem; accent-color: var(--q-royal); flex: none; }
.est-verify { background: #FFF4E5; border-radius: 12px; padding: .75rem .9rem; margin: 0 0 1rem; font-size: .875rem; }
.est-verify strong { color: var(--q-warn); }
.est-verify p { margin: .25rem 0 0; }
.est-facts { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; gap: .35rem; font-size: .875rem; }
.est-facts li::before { content: "✓"; color: var(--q-success); font-weight: 800; margin-right: .45rem; }
.est-avail { margin: 0 0 1rem; font-size: .875rem; }
.est-ctas { display: grid; gap: .6rem; margin-bottom: .75rem; }
.est-ctas .q-btn--link { justify-self: center; }
.est-faq { margin-top: clamp(2rem, 5vw, 3rem); }
.est-faq h2 { font-family: var(--owha-font-head, Montserrat, sans-serif); color: var(--q-navy); font-size: clamp(1.4rem, 1.1rem + 1.2vw, 1.9rem); margin: 0 0 1rem; }
.est-faq__list { display: grid; gap: .6rem; }
@media (min-width: 900px) { .est-faq__list { grid-template-columns: 1fr 1fr; align-items: start; } }
.est-faq__item { background: #fff; border-radius: 16px; box-shadow: 0 1px 2px rgba(11,45,91,.05), 0 6px 18px rgba(11,45,91,.05); padding: 0 1.1rem; }
.est-faq__item summary { cursor: pointer; list-style: none; padding: 1rem 0; font-weight: 700; color: var(--q-navy); display: flex; justify-content: space-between; gap: 1rem; min-height: 44px; }
.est-faq__item summary::-webkit-details-marker { display: none; }
.est-faq__item summary::after { content: "+"; color: var(--q-royal); font-size: 1.25rem; line-height: 1; }
.est-faq__item[open] summary::after { content: "–"; }
.est-faq__item p { margin: 0 0 1rem; color: #2C3A4B; font-size: .9375rem; line-height: 1.6; }
.owha-est .q-mascot { background: var(--q-ice); margin: 0; }
.owha-est .q-mascot img { width: 64px; }
.est-live { display: none; }
@media (max-width: 959px) {
  .est-live { position: sticky; bottom: calc(var(--owha-sticky-h, 72px) + 10px + env(safe-area-inset-bottom)); z-index: 5; display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .55rem .6rem .55rem 1rem; border-radius: 999px; background: var(--q-navy); color: #fff; box-shadow: 0 10px 28px rgba(11,45,91,.35); font-weight: 800; }
  body.owha-sticky-off .est-live { bottom: calc(10px + env(safe-area-inset-bottom)); }
  .est-live__btn { flex: none; min-height: 40px; padding: .45rem .9rem; border-radius: 999px; border: 0; background: #fff; color: var(--q-navy); font: 700 .8125rem/1 var(--owha-font-body, Inter, sans-serif); cursor: pointer; }
}
@media (min-width: 960px) { .est__summary { top: calc(var(--owha-header-h, 72px) + 76px); max-height: calc(100vh - var(--owha-header-h, 72px) - 96px); } }
.est-types { grid-template-columns: repeat(auto-fill, minmax(min(100%, 7.5rem), 1fr)); }
@media (min-width: 1100px) { .est-types { grid-template-columns: repeat(5, 1fr); } }
.est-ctas { margin: 0 0 1.25rem; }
.q-answers { margin-top: 2rem; }
.q-answers h2 { font-size: 1.375rem; }

/* =====================================================================
   v2 "price in three taps" (plugin 1.7.0)
   ===================================================================== */
.q-screen--same { animation: none; }
.q-screen { animation: q-in2 260ms cubic-bezier(.2,.8,.2,1); }
@keyframes q-in2 { from { opacity: 0; transform: translateX(14px); } to { opacity: 1; transform: none; } }
.q-card { transition: border-color 140ms, box-shadow 140ms, transform 140ms; }
.q-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(11,45,91,.10); }
.q-card:active { transform: scale(.98); }
.q-card[aria-pressed="true"] { position: relative; }
.q-card[aria-pressed="true"]::after { content: ""; position: absolute; top: .6rem; right: .6rem; width: 20px; height: 20px; border-radius: 50%; background: var(--q-royal) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 10.5l3 3 7-7' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px no-repeat; }
.q-progress__label { white-space: nowrap; }
.q-progress__fill { background: linear-gradient(90deg, var(--q-cyan), var(--q-royal)); transition: width 380ms cubic-bezier(.2,.8,.2,1); }

/* Live price pill */
.q-pill { display: inline-flex; align-items: baseline; gap: .3rem; padding: .3rem .75rem; border-radius: 999px; background: var(--q-navy); color: #fff; font-size: .75rem; white-space: nowrap; box-shadow: 0 4px 12px rgba(11,45,91,.18); }
.q-pill b { font-size: .95rem; font-variant-numeric: tabular-nums; }
.q-pill small { opacity: .75; font-size: .7rem; }
.q-pill.is-bump { animation: q-bump 420ms ease; }
@keyframes q-bump { 0% { transform: scale(1); } 40% { transform: scale(1.12); background: var(--q-royal); } 100% { transform: scale(1); } }
@media (max-width: 480px) { .q-progress { flex-wrap: wrap; } .q-progress__label { display: none; } }

/* "More types" disclosure */
.q-more { margin: -.25rem 0 1rem; }
.q-more > summary { cursor: pointer; color: var(--q-royal); font-weight: 600; font-size: .9375rem; list-style: none; padding: .5rem 0; min-height: 44px; display: flex; align-items: center; gap: .35rem; }
.q-more > summary::-webkit-details-marker { display: none; }
.q-more > summary::after { content: "+"; font-weight: 700; }
.q-more[open] > summary::after { content: "–"; }
.q-btn--lg { min-height: 56px; font-size: 1.0625rem; margin: .5rem 0 0; box-shadow: 0 8px 20px rgba(10,103,200,.25); }
.q-btn { transition: background 140ms, transform 120ms, box-shadow 140ms; }
.q-btn:active { transform: scale(.98); }

/* Results */
.q-res__head { margin: 0 0 1rem; }
.q-res__head .q-help { margin-bottom: .5rem; }
.q-res__avail { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: 0; }
.q-res__avail small { color: var(--q-gray5); font-size: .8125rem; }
.q-res__loading { display: flex; align-items: center; justify-content: center; gap: .75rem; padding: 3rem 1rem; color: var(--q-gray5); font-weight: 600; }
.q-spin { width: 22px; height: 22px; border-radius: 50%; border: 3px solid var(--q-gray); border-top-color: var(--q-royal); animation: q-rot 800ms linear infinite; }
@keyframes q-rot { to { transform: rotate(360deg); } }

.q-tiers2 { display: grid; gap: .75rem; margin: 0 0 1rem; }
@media (min-width: 760px) { .q-tiers2 { grid-template-columns: repeat(3, 1fr); align-items: start; } .q-tiers2:has(> :nth-child(4)) { grid-template-columns: repeat(2, 1fr); } }
.q-t2 { position: relative; background: #fff; border: 2px solid var(--q-gray); border-radius: 14px; padding: 1rem 1rem .9rem; cursor: pointer; transition: border-color 160ms, box-shadow 160ms, transform 160ms; animation: q-rise 360ms cubic-bezier(.2,.8,.2,1) both; }
.q-t2:nth-child(2) { animation-delay: 60ms; } .q-t2:nth-child(3) { animation-delay: 120ms; } .q-t2:nth-child(4) { animation-delay: 180ms; }
@keyframes q-rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.q-t2:hover { border-color: var(--q-gray3); }
.q-t2:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(0,180,230,.55); }
.q-t2.is-rec { border-color: var(--q-cyan); }
.q-t2.is-on { border-color: var(--q-royal); background: linear-gradient(180deg, var(--q-ice), #fff 60%); box-shadow: 0 10px 28px rgba(11,45,91,.14); }
.q-t2__badge { position: absolute; top: -11px; left: 1rem; background: var(--q-navy); color: #fff; font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: .22rem .6rem; border-radius: 999px; }
.q-t2__top { display: flex; justify-content: space-between; gap: .75rem; align-items: flex-start; }
.q-t2 h3 { margin: 0; font-family: var(--owha-font-head, Montserrat, sans-serif); color: var(--q-navy); font-size: 1.0625rem; }
.q-t2__note { margin: .15rem 0 0; font-size: .8125rem; color: var(--q-gray5); line-height: 1.35; }
.q-t2__price { text-align: right; flex: none; }
.q-t2__num { display: block; font-family: var(--owha-font-head, Montserrat, sans-serif); font-size: 1.625rem; line-height: 1.1; color: var(--q-navy); font-variant-numeric: tabular-nums; }
.q-t2__price small { font-size: .7rem; color: var(--q-gray5); }
.q-t2__perks { list-style: none; margin: .75rem 0 .5rem; padding: 0; display: grid; gap: .3rem; font-size: .875rem; }
.q-t2__perks li { position: relative; padding-left: 1.4rem; }
.q-t2__perks li::before { content: ""; position: absolute; left: 0; top: .3rem; width: 14px; height: 14px; border-radius: 50%; background: #E6F6EE url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3.5 7.2l2.2 2.2 4.8-4.8' fill='none' stroke='%23146C46' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat; }
.q-t2__more { margin: .25rem 0 .75rem; }
.q-t2__more > summary { cursor: pointer; color: var(--q-royal); font-weight: 600; font-size: .8125rem; min-height: 36px; display: flex; align-items: center; }
.q-t2 .q-btn { min-height: 46px; }

/* Make it exact */
.q-tune { border: 2px dashed var(--q-gray3); border-radius: 14px; margin: 0 0 1rem; background: #fff; }
.q-tune[open] { border-style: solid; border-color: var(--q-ice); background: #FBFDFF; }
.q-tune > summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: .75rem; padding: .9rem 1rem; min-height: 52px; }
.q-tune > summary::-webkit-details-marker { display: none; }
.q-tune > summary b { color: var(--q-navy); }
.q-tune > summary b::before { content: "⚡ "; }
.q-tune > summary small { color: var(--q-gray5); font-size: .8125rem; text-align: right; }
.q-tune__body { padding: 0 1rem 1rem; display: grid; gap: .85rem; }
.q-tune__row > span { display: block; font-weight: 600; font-size: .875rem; color: var(--q-navy); margin: 0 0 .35rem; }
.q-chips { display: flex; flex-wrap: wrap; gap: .4rem; }
.q-chipbtn { min-height: 40px; padding: .45rem .85rem; border-radius: 999px; border: 1.5px solid var(--q-gray3); background: #fff; color: var(--q-ink); font-size: .875rem; font-weight: 600; cursor: pointer; transition: all 120ms; }
.q-chipbtn:hover { border-color: var(--q-royal); }
.q-chipbtn[aria-pressed="true"] { background: var(--q-royal); border-color: var(--q-royal); color: #fff; }
.q-tune__photo { position: relative; display: flex; gap: .75rem; align-items: center; padding: .75rem; border: 1.5px dashed var(--q-gray3); border-radius: 10px; cursor: pointer; }
.q-tune__photo svg { width: 32px; height: 32px; color: var(--q-navy); flex: none; }
.q-tune__photo span { display: flex; flex-direction: column; font-size: .875rem; }
.q-tune__photo small { color: var(--q-gray5); }
.q-tune__photo input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }

/* Trust + FAQ */
.q-trust { list-style: none; padding: 0; margin: 0 0 1rem; display: grid; gap: .5rem; }
.q-trust li { display: flex; gap: .6rem; align-items: center; font-size: .875rem; color: #2C3A4B; }
.q-trust svg { width: 22px; height: 22px; flex: none; color: var(--q-royal); }
.q-faq2 { border-top: 1px solid var(--q-gray); padding: .5rem 0; }
.q-faq2 > summary { cursor: pointer; font-weight: 600; color: var(--q-navy); min-height: 44px; display: flex; align-items: center; }

/* Sticky price bar */
.q-stick { position: sticky; bottom: 0; z-index: 5; display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin: 1rem -.25rem 0; padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom)); background: var(--q-navy); color: #fff; border-radius: 14px 14px 0 0; box-shadow: 0 -8px 24px rgba(11,45,91,.22); animation: q-up 300ms cubic-bezier(.2,.8,.2,1); }
@keyframes q-up { from { transform: translateY(100%); } to { transform: none; } }
.q-stick small { display: block; font-size: .75rem; opacity: .8; }
.q-stick b { font-size: 1.375rem; font-variant-numeric: tabular-nums; }

.q-results .q-actions--top { position: static; background: none; }

@media (prefers-reduced-motion: reduce) {
  .q-screen, .q-t2, .q-stick, .q-pill.is-bump, .q-spin { animation: none !important; }
  .q-card, .q-btn, .q-t2 { transition: none; }
  .q-card:hover { transform: none; }
}
.q-label { display: block; font-weight: 600; margin-bottom: .45rem; color: var(--q-navy); }
.q-field .q-chipbtn { min-height: 44px; padding: .55rem 1rem; }
.q-trust li > :first-child { width: 22px; height: 22px; flex: none; display: inline-flex; color: var(--q-royal); }
.q-trust li > :first-child svg { width: 100%; height: 100%; }
@media (min-width: 760px) { .q-t2__top { flex-direction: column; gap: .5rem; } .q-t2__price { text-align: left; } .q-t2 { padding-top: 1.25rem; } }

/* 1.8.0: "Not ready to book?" send-my-price card */
.q-send { background: #fff; border: 2px solid var(--q-ice); border-radius: 14px; padding: 1rem 1rem 1.1rem; margin: 0 0 1rem; box-shadow: 0 4px 14px rgba(11,45,91,.06); }
.q-send h3 { margin: 0 0 .25rem; font-family: var(--owha-font-head, Montserrat, sans-serif); color: var(--q-navy); font-size: 1.0625rem; line-height: 1.3; }
.q-send .q-help { margin: 0 0 .85rem; font-size: .875rem; }
.q-send__row { display: grid; gap: 0 .75rem; grid-template-columns: 1fr; }
@media (min-width: 560px) { .q-send__row { grid-template-columns: 1fr 1fr; } }
.q-send .q-field { margin-bottom: .6rem; }
.q-send .q-field label { font-size: .8125rem; }
.q-send .q-field input { min-height: 46px; font-size: 1rem; padding: .65rem .8rem; border-width: 1.5px; border-radius: 10px; }
.q-send .q-error { display: none !important; }
.q-send .q-check { font-size: .8125rem; line-height: 1.45; color: #2C3A4B; margin: .35rem 0 .6rem; }
.q-send .q-check input { width: 20px; height: 20px; }
.q-send__sms span { color: var(--q-gray5); }
.q-send__err { color: var(--q-danger); font-size: .8125rem; font-weight: 600; margin: 0 0 .6rem; }
.q-send .q-btn--block { margin-top: .25rem; }
.q-send__link { display: block; margin: .5rem auto 0; font-size: .875rem; }
.q-send__ok { margin: .35rem 0 0; padding: .75rem .9rem; border-radius: 10px; background: #E6F6EE; color: var(--q-success); font-weight: 600; font-size: .9375rem; }
.q-send__ok a { color: var(--q-success); text-decoration: underline; }

/* ============ 1.8.3: one button system, compact booking summary ============ */
.owha-app { --q-btn-h: 52px; --q-btn-h-lg: 56px; }
.q-btn { min-height: var(--q-btn-h); padding: .8rem 1.45rem; font-weight: 700; font-size: 1rem; line-height: 1.2; letter-spacing: .005em; text-wrap: balance; }
.q-btn--lg { min-height: var(--q-btn-h-lg); font-size: 1.0625rem; }
.q-btn--primary { box-shadow: 0 6px 16px rgba(10, 103, 200, .22); }
.q-btn--primary:hover:not(:disabled) { background: var(--q-royal-dark); box-shadow: 0 8px 20px rgba(10, 103, 200, .28); }
.q-btn--ghost { background: #fff; border: 1.5px solid rgba(11, 45, 91, .24); }
.q-btn--ghost:hover { border-color: var(--q-navy); background: #F4F9FE; }
.q-btn:focus-visible, .q-btn--link:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(0, 180, 230, .55); }
.q-btn--link { min-height: 44px; font-weight: 700; }
.q-btn[aria-busy="true"] { cursor: progress; opacity: .85; }
.q-t2 .q-btn { min-height: 50px; }
.q-actions .q-btn--primary { min-height: var(--q-btn-h); font-size: 1rem; }

/* Selected package: a check mark joins the blue border so the choice reads at a glance. */
.q-t2.is-on::after { content: ""; position: absolute; top: .85rem; right: .85rem; width: 24px; height: 24px; border-radius: 50%; background: var(--q-royal) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E") center / 14px no-repeat; }
.q-t2.is-on .q-t2__price { padding-right: 2rem; }
@media (min-width: 760px) { .q-t2.is-on .q-t2__price { padding-right: 0; } .q-t2.is-on h3 { padding-right: 2rem; } }

/* Booking summary: compact navy bar. Summary left, one-line "Pick a time" pill right;
   stacks over a full-width button only where the row would be cramped. */
.q-stick { gap: .85rem; margin: 1rem 0 0; padding: .7rem .75rem calc(.7rem + env(safe-area-inset-bottom)) 1.1rem; border-radius: 16px 16px 0 0; }
.q-stick > div { flex: 1 1 auto; min-width: 0; }
.q-stick small { font-size: .75rem; line-height: 1.35; opacity: .85; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.q-stick b { display: block; font-size: 1.375rem; line-height: 1.15; margin-top: .1rem; }
.q-stick .q-btn { flex: none; white-space: nowrap; min-height: var(--q-btn-h); padding: 0 1.6rem; background: var(--q-royal); color: #fff; border: 0; box-shadow: 0 0 0 1px rgba(255, 255, 255, .16), 0 6px 16px rgba(0, 0, 0, .22); }
.q-stick .q-btn:hover { background: #1B7BDE; }
.q-stick .q-btn:focus-visible { box-shadow: 0 0 0 3px #fff, 0 0 0 6px rgba(0, 180, 230, .7); }
/* Small phones: keep one compact row. The deposit sentence is shown in full on the page above the bar. */
@media (max-width: 359px) {
  .q-stick { gap: .6rem; padding-left: .95rem; padding-right: .6rem; }
  .q-stick__dep { display: none; }
  .q-stick b { font-size: 1.25rem; }
  .q-stick .q-btn { padding: 0 1.15rem; font-size: .9375rem; }
}
/* Very narrow windows (iPad Slide Over, zoomed text): stack instead of squeezing. */
@media (max-width: 299px) {
  .q-stick { flex-wrap: wrap; }
  .q-stick > div { flex-basis: 100%; }
  .q-stick .q-btn { width: 100%; }
}
@media (min-width: 760px) { .q-stick { padding: .8rem .85rem calc(.8rem + env(safe-area-inset-bottom)) 1.4rem; } .q-stick small { -webkit-line-clamp: 1; } .q-stick b { font-size: 1.5rem; } }
/* Short landscape phones: keep the bar slim so content stays visible. */
@media (max-height: 480px) and (orientation: landscape) { .q-stick { padding-block: .45rem calc(.45rem + env(safe-area-inset-bottom)); } .q-stick small { -webkit-line-clamp: 1; } .q-stick b { font-size: 1.125rem; } .q-stick .q-btn { min-height: 46px; } }
/* Package cards line up: every price starts at the same height on tablet and desktop. */
@media (min-width: 760px) { .q-t2__note { min-height: 2.7em; } }
@media (min-width: 760px) {
  .q-tiers2 { align-items: stretch; }
  .q-t2 { display: flex; flex-direction: column; }
  .q-t2 > .q-btn--block { margin-top: auto; }
}

/* 1.8.4: reserve the first step's real height on wider screens so the section below does not jump (CLS). */
@media (min-width: 782px) { .owha-app[data-owha-app="quote"] { min-height: 800px; } }
