/* Quote modal and product-page quote buttons (inc/quote/class-tt-quote.php).
 * Moved out of an inline PHP string on 23 Sep 2026 for the two-step redesign;
 * the rules for the buttons and the modal box are unchanged from that version. */

/* ---- product page buttons -------------------------------------------- */
.tt-quote-cta{display:flex;flex-direction:column;gap:12px;margin:24px 0 6px;}
.tt-quote-how{list-style:none;margin:14px 0 0;padding:12px 0 0;border-top:1px solid rgba(29,36,32,.12);}
.tt-quote-how li{position:relative;padding-left:18px;font-size:14px;line-height:1.55;color:#5d655c;margin:0 0 5px;}
.tt-quote-how li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:#a9854f;}
.tt-quote-alt{display:inline-block;margin:10px 0 4px;font-size:14.5px;color:#a9854f;text-decoration:none;}
.tt-quote-alt:hover{text-decoration:underline;}
.tt-quote-btn{display:flex;align-items:center;justify-content:center;width:100%;
	padding:14px 24px;font-size:18px;font-weight:400;line-height:1.33;text-align:center;
	border:0;border-radius:0;cursor:pointer;transition:background-color .3s;}
/* Text color pinned on hover and focus: the parent theme sets a near-white
 * hover color on every button, which made the label unreadable. */
.tt-quote-btn--primary,
.tt-quote-btn--primary:hover,
.tt-quote-btn--primary:focus{background:var(--tt-green-900,#23302a);color:#fff;}
.tt-quote-btn--primary:hover,
.tt-quote-btn--primary:focus{background:#3d4a44;}
/* On a piece that can be bought, Add to cart is the primary action. */
.tt-quote-cta--ask{gap:8px;margin-top:14px;}
.tt-quote-cta--ask .tt-quote-btn--primary,
.tt-quote-cta--ask .tt-quote-btn--primary:hover,
.tt-quote-cta--ask .tt-quote-btn--primary:focus{background:#f5f6f6;color:var(--tt-ink,#1d2420);}
.tt-quote-cta--ask .tt-quote-btn--primary:hover,
.tt-quote-cta--ask .tt-quote-btn--primary:focus{background:#eceded;}
.tt-quote-cta--ask .tt-quote-btn{font-size:16px;padding:12px 20px;}
@media (max-width:768px){.tt-quote-btn{font-size:17px;}}
/* The theme's own inquiry button scrolled the visitor away from the product. */
.single-product .pls-single-inquiry-btn,
.single-product a.pls-single-inquiry-btn{display:none !important;}

/* ---- modal shell ------------------------------------------------------- */
/* Something on this theme strips [hidden] at runtime, so open is a class. */
.tt-quote-modal{display:none;position:fixed;inset:0;z-index:99999;align-items:center;justify-content:center;padding:20px;}
.tt-quote-modal.is-open{display:flex;}
.tt-quote-modal [hidden]{display:none !important;}
.tt-quote-modal__scrim{position:absolute;inset:0;background:rgba(20,26,22,.55);}
.tt-quote-modal__box{position:relative;background:#fff;width:min(460px,100%);
	max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;
	padding:24px 26px 18px;border-radius:3px;box-shadow:0 24px 60px rgba(0,0,0,.28);}
.tt-quote-modal__box:focus{outline:none;}
.tt-quote-modal__x{position:absolute;top:8px;right:8px;border:0;background:#fff;font-size:26px;
	line-height:1;cursor:pointer;color:#5f665f;width:44px;height:44px;display:flex;
	align-items:center;justify-content:center;border-radius:50%;z-index:2;padding:0;}
.tt-quote-modal__x:hover{background:var(--tt-bg-alt,#f4f2ee);color:#1d2420;}
.tt-quote-modal__h{margin:0 0 8px;font-size:22px;line-height:1.25;padding-right:44px;}

/* CF7 ships its own card; inside the modal that is a card in a card. */
.tt-quote-modal .wpcf7,
.tt-quote-modal .wpcf7-form{background:none !important;border:0 !important;box-shadow:none !important;
	padding:0 !important;margin:0 !important;border-radius:0 !important;max-width:none !important;}

/* ---- steps ------------------------------------------------------------- */
.tt-q-progress{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:0 0 14px;}
.tt-q-progress span{height:3px;background:#e4e6e3;border-radius:2px;}
.tt-q-progress span:first-child{background:var(--tt-green-900,#23302a);}
.tt-q[data-step="2"] .tt-q-progress span{background:var(--tt-green-900,#23302a);}
.tt-q-step{border:0;margin:0;padding:0;min-width:0;}
.tt-q-step__h{padding:0;margin:0 0 12px;font-size:15px;font-weight:600;color:var(--tt-ink,#1d2420);}
.tt-q-step__n{display:block;font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:#6b7169;margin-bottom:2px;}
/* Only the current step shows. Without JS both stay visible and the form still works. */
.tt-q.is-js .tt-q-step{display:none;}
.tt-q.is-js[data-step="1"] .tt-q-step[data-tt-q-step="1"],
.tt-q.is-js[data-step="2"] .tt-q-step[data-tt-q-step="2"]{display:block;}
.tt-q:not(.is-js) [data-tt-q-next],
.tt-q:not(.is-js) [data-tt-q-back]{display:none;}

/* ---- fields ------------------------------------------------------------ */
.tt-q-f{margin:0 0 12px;}
.tt-q-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.tt-q-row > .tt-q-f{min-width:0;}
.tt-q-row > .tt-q-f--qty{max-width:none;}
.tt-q-row:has(.tt-q-f--qty){grid-template-columns:1fr 96px;}
.tt-quote-modal label{display:block;font-size:13px;font-weight:600;margin:0 0 4px;color:var(--tt-ink,#1d2420);}
.tt-quote-modal .tt-optional{font-weight:400;color:#6b7169;}
.tt-quote-modal .wpcf7-form-control-wrap{display:block;}
.tt-quote-modal input[type=text],.tt-quote-modal input[type=email],
.tt-quote-modal input[type=tel],.tt-quote-modal input[type=date],
.tt-quote-modal textarea{width:100%;padding:11px 12px;margin:0;
	border:1px solid rgba(29,36,32,.22);border-radius:2px;font-size:16px;line-height:1.35;
	background:#fff;color:inherit;box-shadow:none;}
/* 16px, not 15: iOS zooms the page on focus when a field is under 16px. */
.tt-quote-modal input[type=date]{min-height:45px;-webkit-appearance:none;appearance:none;}
.tt-quote-modal textarea{min-height:70px;height:auto;resize:vertical;}
.tt-quote-modal input:focus,.tt-quote-modal textarea:focus{border-color:#a9854f;outline:none;box-shadow:0 0 0 3px rgba(169,133,79,.16);}
.tt-quote-modal input[type=file]{width:100%;font-size:14px;padding:6px 0;color:#4a524c;border:0;}
.tt-q-hint{margin:4px 0 0;font-size:13px;line-height:1.45;color:#6b7169;}
.tt-q-row + .tt-q-hint{margin:-6px 0 12px;}

/* Errors: next to the field, in plain words, and the typed value stays. */
.tt-quote-modal .wpcf7-not-valid-tip{display:block;margin:5px 0 0;font-size:13px;line-height:1.4;color:#a3261e;}
.tt-quote-modal .wpcf7-not-valid{border-color:#a3261e !important;}
.tt-quote-modal .wpcf7-form-control-wrap.is-ok input{border-color:#5b8a6a;}

/* ---- buttons in the form ----------------------------------------------- */
.tt-quote-modal .tt-q-next-btn,
.tt-quote-modal input[type=submit],
.tt-quote-modal input[type=submit]:hover,
.tt-quote-modal input[type=submit]:focus{display:block;width:100%;margin:6px 0 0;padding:14px 24px;
	background:var(--tt-green-900,#23302a) !important;color:#fff !important;
	border:0 !important;border-radius:0 !important;
	font-size:18px !important;font-weight:400 !important;letter-spacing:normal !important;
	line-height:1.33;cursor:pointer;transition:background-color .3s;text-transform:none;}
.tt-quote-modal .tt-q-next-btn:hover,
.tt-quote-modal .tt-q-next-btn:focus,
.tt-quote-modal input[type=submit]:hover,
.tt-quote-modal input[type=submit]:focus{background:#3d4a44 !important;color:#fff !important;}
.tt-quote-modal .wpcf7-spinner{display:none;margin:8px auto 0;}
.tt-quote-modal form.submitting .wpcf7-spinner{display:block;}
.tt-q-link{background:none !important;border:0;padding:0;margin:0;color:#6b5330 !important;font-size:14px;
	text-decoration:underline;text-underline-offset:2px;cursor:pointer;font-weight:400;}
.tt-q-back{display:block;width:100%;text-align:center;margin:12px 0 0;}

/* ---- the promise and the "what happens next" block --------------------- */
.tt-q-promise{margin:8px 0 0;font-size:14px;line-height:1.45;color:#2f4a3a;text-align:center;}
.tt-q-promise::before{content:"";display:inline-block;width:7px;height:7px;margin:0 7px 1px 0;border-radius:50%;background:#4f8a62;}
.tt-q-next{margin:16px 0 0;padding:12px 14px;background:#f5f4f0;border-radius:2px;font-size:13.5px;line-height:1.5;color:#3c443e;}
.tt-q-next__h{margin:0 0 4px;font-weight:600;font-size:13px;color:var(--tt-ink,#1d2420);}
.tt-q-next ol{margin:0 0 6px 18px;padding:0;}
.tt-q-next li{margin:0 0 2px;}
.tt-q-next__pay{margin:0;font-weight:600;color:var(--tt-green-900,#23302a);}

.tt-q-restored{margin:-4px 0 12px;padding:8px 10px;background:#f5f4f0;font-size:13px;color:#3c443e;}
.tt-q-restored .tt-q-link{font-size:13px;margin-left:4px;}
.tt-q-call{margin:12px 0 0;padding-top:10px;border-top:1px solid rgba(29,36,32,.1);font-size:13.5px;color:#6b7169;text-align:center;}
.tt-q-call a{color:#6b5330;text-decoration:underline;text-underline-offset:2px;white-space:nowrap;}
.tt-quote-modal .wpcf7-response-output{margin:10px 0 0 !important;padding:8px 10px !important;font-size:13.5px;}
.tt-quote-modal.is-done .wpcf7-response-output{display:none !important;}

/* ---- confirmation ------------------------------------------------------ */
.tt-quote-done{padding:0 0 2px;}
.tt-quote-done__lead{margin:0 0 12px;font-size:15px;color:#3c443e;}
.tt-quote-done__sum{display:grid;grid-template-columns:auto 1fr;gap:5px 14px;margin:0 0 14px;padding:12px 14px;
	background:#f5f4f0;font-size:14px;line-height:1.45;}
.tt-quote-done__sum dt{color:#6b7169;margin:0;font-weight:400;}
.tt-quote-done__sum dd{margin:0;color:var(--tt-ink,#1d2420);overflow-wrap:anywhere;}
.tt-quote-done__promise{margin:0 0 6px;font-size:15px;line-height:1.5;color:var(--tt-green-900,#23302a);}
.tt-quote-done__p{margin:0 0 14px;font-size:14px;line-height:1.55;color:#4a524c;}
.tt-quote-done__read{margin:0 0 16px;}
.tt-quote-done__rh{margin:0 0 4px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#6b7169;}
.tt-quote-done__read ul{list-style:none;margin:0;padding:0;}
.tt-quote-done__read li{margin:0 0 4px;font-size:14.5px;line-height:1.4;}
.tt-quote-done__read a{color:#6b5330;text-decoration:underline;text-underline-offset:2px;}
.tt-quote-done .tt-quote-btn{display:block;width:100%;text-align:center;text-decoration:none;}
.tt-quote-modal.is-fail .tt-q-call{display:none;}

@media (max-width:600px){
	.tt-quote-modal{padding:10px;}
	.tt-quote-modal__box{padding:20px 18px 16px;max-height:calc(100vh - 20px);max-height:calc(100dvh - 20px);}
	.tt-quote-modal__h{font-size:20px;}
}
@media (max-width:360px){.tt-q-row{grid-template-columns:1fr;}}
.tt-q-step > br{display:none;}
.tt-quote-modal .cf7-cf-turnstile{margin:0 !important;}
/* The close button stays in view while a long form scrolls inside the dialog (astra: the × scrolled away). */
.tt-quote-modal__x{position:sticky !important;top:0;float:right;z-index:5;margin:-4px -4px 0 12px;width:44px;height:44px;border-radius:22px;background:#fff !important;box-shadow:0 1px 6px rgba(0,0,0,.12);color:#1f2a22 !important;}

/* Terms first: three short ticks under the heading, before any field (astra, 23 Sep). */
.tt-q-terms{list-style:none;margin:0 0 14px;padding:10px 12px;background:#f1f5f0;border-radius:6px;font-size:15px;line-height:1.45;color:var(--tt-ink,#1d2420);}
.tt-q-terms li{position:relative;margin:0;padding:2px 0 2px 24px;}
.tt-q-terms li::before{content:"";position:absolute;left:4px;top:.55em;width:10px;height:5px;border-left:2px solid #2d6a3e;border-bottom:2px solid #2d6a3e;transform:rotate(-45deg);}
.tt-quote-modal.is-done .tt-q-terms,.tt-quote-modal.is-fail .tt-q-terms{display:none;}
