/**
 * Dini Petty Quotes - Frontend Styles
 *
 * @package DiniPettyQuotes
 * @version 2.0.0
 */

/* ==========================================================================
   CSS Variables
   ========================================================================== */

:root {
    --dpq-gold: #D0AB6A;
    --dpq-gold-hover: #C49B5A;
    --dpq-dark: #1a1a1a;
    --dpq-text: #333333;
    --dpq-text-light: #666666;
    --dpq-border: #e5e5e5;
    --dpq-bg: #f7f7f7;
    --dpq-white: #ffffff;
    --dpq-success: #28a745;
    --dpq-error: #dc3545;
    --dpq-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
    --dpq-transition: all 0.3s ease;
}

/* ==========================================================================
   Add to Quote Button
   (used on product pages and loop — text is filtered by PHP to "Add to Quote")
   ========================================================================== */

.dinipetty-add-to-quote-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 20px;
    background: var(--dpq-bg);
    color: var(--dpq-text);
    border: 1px solid var(--dpq-border);
    border-radius: 3px;
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    cursor: pointer;
    transition: var(--dpq-transition);
}

.dinipetty-add-to-quote-btn:hover {
    background: var(--dpq-gold);
    border-color: var(--dpq-gold);
    color: var(--dpq-white);
}

.dinipetty-add-to-quote-btn.in-cart {
    background: var(--dpq-gold);
    border-color: var(--dpq-gold);
    color: var(--dpq-white);
}

.dinipetty-add-to-quote-btn.in-cart:hover {
    background: var(--dpq-gold-hover);
    border-color: var(--dpq-gold-hover);
}

.dinipetty-add-to-quote-btn.loading {
    pointer-events: none;
    opacity: 0.7;
}

/* ==========================================================================
   WooCommerce Cart Page — Archive-only overrides
   Hide price and subtotal columns when the cart contains archive episodes.
   The PHP filter (class-quote-filters.php) already returns '' for subtotals;
   these rules provide belt-and-suspenders visual suppression.
   ========================================================================== */

.woocommerce-cart-form .shop_table th.product-price,
.woocommerce-cart-form .shop_table td.product-price,
.woocommerce-cart-form .shop_table th.product-subtotal,
.woocommerce-cart-form .shop_table td.product-subtotal {
    /* Hidden by PHP — just in case anything slips through */
}

/* Archive quote cart: hide pricing, quantity, coupon, and totals sections */
body.dinipetty-archive-quote-cart .woocommerce-cart-form .shop_table th.product-price,
body.dinipetty-archive-quote-cart .woocommerce-cart-form .shop_table td.product-price,
body.dinipetty-archive-quote-cart .woocommerce-cart-form .shop_table th.product-quantity,
body.dinipetty-archive-quote-cart .woocommerce-cart-form .shop_table td.product-quantity,
body.dinipetty-archive-quote-cart .woocommerce-cart-form .shop_table th.product-subtotal,
body.dinipetty-archive-quote-cart .woocommerce-cart-form .shop_table td.product-subtotal,
body.dinipetty-archive-quote-cart .woocommerce-cart-form .shop_table .coupon,
body.dinipetty-archive-quote-cart .woocommerce-cart-form .shop_table button[name="update_cart"],
body.dinipetty-archive-quote-cart .cart_totals,
body.dinipetty-archive-quote-cart .woocommerce-cart .cart-collaterals {
    display: none !important;
}

/* Cart page heading override: PHP doesn't easily change it, so JS or a
   separate hook handles this; the CSS just leaves room for it. */

/* ==========================================================================
   WooCommerce Mini-Cart — Archive overrides
   JS hides .woocommerce-mini-cart__total when archives are present.
   Declare the hidden state so the transition is clean.
   ========================================================================== */

.woocommerce-mini-cart__total[style*="display: none"],
.woocommerce-mini-cart__total[style*="display:none"] {
    display: none !important;
}

/* ==========================================================================
   Quote Request Fields (Company / Intended Use)
   Rendered by DiniPetty_Quote_Filters::render_archive_checkout_summary() inside
   the "Additional information" column. Styled to match Marcell theme
   conventions: height 3.25em, border-radius 0, with !important where the theme
   forces it.
   ========================================================================== */

.dinipetty-quote-fields {
    margin-top: 4px;
    margin-bottom: 18px;
}

.dinipetty-quote-fields .dinipetty-field-row {
    margin-bottom: 15px;
}

.dinipetty-quote-fields .dinipetty-field-label {
    display: block;
    font-size: 14px;
    font-weight: 600;
    color: var(--dpq-text);
    margin-bottom: 6px;
}

/* Required asterisk */
.dinipetty-quote-fields .dinipetty-field-label abbr.required {
    color: #c0392b;
    border: none;
    text-decoration: none;
    font-weight: 700;
}

/* Match Marcell theme: height 3.25em, border-radius 0 */
.dinipetty-quote-fields input.dinipetty-field-input,
.dinipetty-quote-fields select.dinipetty-field-input {
    width: 100% !important;
    height: 3.25em !important;
    border-radius: 0 !important;
    padding: 0 15px !important;
    border: 1px solid var(--dpq-border) !important;
    font-size: 14px;
    color: var(--dpq-text);
    background: var(--dpq-white) !important;
    box-sizing: border-box;
    transition: border-color 0.2s ease;
}

.dinipetty-quote-fields input.dinipetty-field-input:focus,
.dinipetty-quote-fields select.dinipetty-field-input:focus {
    border-color: var(--dpq-gold) !important;
    outline: none;
    box-shadow: 0 0 0 2px rgba(208, 171, 106, 0.15) !important;
}

/* ==========================================================================
   Checkout — hide the (now empty) quote payment box, keep the submit button
   ========================================================================== */

body.dinipetty-archive-quote-checkout #payment > .wc_payment_methods,
body.dinipetty-archive-quote-checkout #payment ul.wc_payment_methods,
body.dinipetty-archive-quote-checkout #payment .payment_box {
    display: none !important;
}

/* Keep the place-order / "Submit Quote Request" button visible and tidy */
body.dinipetty-archive-quote-checkout #payment .place-order {
    padding: 0 !important;
    border: 0 !important;
}

/* Fallback: hide any stray WC "Additional information" heading (direct child of
   the additional-fields wrapper) so it can't duplicate our own heading, which
   lives nested inside .dinipetty-checkout-summary. */
body.dinipetty-archive-quote-checkout .woocommerce-additional-fields > h3:not(.dinipetty-checkout-summary-heading) {
    display: none !important;
}

/* Our consolidated section heading */
.dinipetty-checkout-summary-heading {
    margin: 0 0 16px !important;
    padding: 0 !important;
}

/* ==========================================================================
   Quote Form Fields (legacy — class-quote-form.php, kept for backwards compat)
   ========================================================================== */

.dinipetty-quote-form-container {
    padding: 30px;
    border-top: 2px solid var(--dpq-gold);
}

.dinipetty-quote-form-container h3 {
    margin: 0 0 10px 0;
    font-size: 20px;
    color: var(--dpq-dark);
}

.dinipetty-quote-form-intro {
    color: var(--dpq-text-light);
    margin-bottom: 25px;
}

.dinipetty-quote-form {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.dinipetty-form-row {
    display: flex;
    gap: 20px;
}

.dinipetty-form-field {
    flex: 1;
}

.dinipetty-form-field-half {
    flex: 1;
}

.dinipetty-form-field label {
    display: block;
    font-size: 14px;
    font-weight: 600;
    color: var(--dpq-text);
    margin-bottom: 8px;
}

.dinipetty-form-field label .required {
    color: var(--dpq-error);
}

.dinipetty-form-field input[type="text"],
.dinipetty-form-field input[type="email"],
.dinipetty-form-field input[type="tel"],
.dinipetty-form-field select,
.dinipetty-form-field textarea {
    width: 100%;
    padding: 12px 15px;
    border: 1px solid var(--dpq-border);
    border-radius: 3px;
    font-size: 14px;
    color: var(--dpq-text);
    background: var(--dpq-white);
    transition: var(--dpq-transition);
}

.dinipetty-form-field input:focus,
.dinipetty-form-field select:focus,
.dinipetty-form-field textarea:focus {
    outline: none;
    border-color: var(--dpq-gold);
    box-shadow: 0 0 0 2px rgba(208, 171, 106, 0.1);
}

.dinipetty-form-field textarea {
    resize: vertical;
    min-height: 100px;
}

.dinipetty-form-checkbox label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-weight: normal;
    cursor: pointer;
}

.dinipetty-form-checkbox input[type="checkbox"] {
    margin-top: 3px;
    width: 18px;
    height: 18px;
    accent-color: var(--dpq-gold);
}

.dinipetty-form-actions {
    margin-top: 10px;
}

.dinipetty-submit-quote {
    min-width: 200px;
}

.dinipetty-submit-quote.loading {
    pointer-events: none;
    opacity: 0.7;
}

/* Form messages */
.dinipetty-quote-form-message {
    padding: 15px 20px;
    border-radius: 4px;
    font-size: 14px;
    margin-top: 15px;
}

.dinipetty-quote-form-message.success {
    background: rgba(40, 167, 69, 0.1);
    border: 1px solid var(--dpq-success);
    color: var(--dpq-success);
}

.dinipetty-quote-form-message.error {
    background: rgba(220, 53, 69, 0.1);
    border: 1px solid var(--dpq-error);
    color: var(--dpq-error);
}

/* ==========================================================================
   Floating Action Button (Quote List)
   Positioned above the theme's back-to-top button (usually bottom: 20-30px).
   White text/icon forced with !important to override any theme inheritance.
   ========================================================================== */

.dinipetty-quote-fab {
    position: fixed;
    bottom: 88px;  /* clears Marcell back-to-top (typically 20px + ~48px button = ~68px) */
    right: 20px;
    z-index: 9998;
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 13px 20px;
    background: #2C2C2C !important;
    color: #fff !important;
    border: none !important;
    border-radius: 50px !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    letter-spacing: 0.3px;
    cursor: pointer;
    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.16);
    transition: background 0.25s ease, box-shadow 0.25s ease, transform 0.2s ease;
    white-space: nowrap;
    line-height: 1;
    text-transform: none !important;
    /* Kill any theme ::before underline */
    text-decoration: none !important;
    border-bottom: 0 !important;
    background-image: none !important;
}

.dinipetty-quote-fab::before,
.dinipetty-quote-fab::after {
    content: none !important;
    display: none !important;
    border: 0 !important;
    background: none !important;
    box-shadow: none !important;
}

/* Ensure icon stroke is white regardless of theme cascade */
.dinipetty-quote-fab svg {
    flex-shrink: 0;
    stroke: #fff !important;
    fill: none !important;
    display: block;
}

/* Count badge */
.dinipetty-quote-fab .dpq-fab-count {
    background: #fff;
    color: #2C2C2C !important;
    border-radius: 20px;
    padding: 3px 9px;
    font-size: 12px;
    font-weight: 700;
    min-width: 22px;
    text-align: center;
    line-height: 1.4;
}

.dinipetty-quote-fab:hover,
.dinipetty-quote-fab:focus {
    background: #1a1a1a !important;
    color: #fff !important;
    box-shadow: 0 5px 14px rgba(0, 0, 0, 0.22);
    transform: translateY(-2px);
    outline: none;
}

.dinipetty-quote-fab:focus-visible {
    outline: 3px solid var(--dpq-gold);
    outline-offset: 3px;
}

/* Hidden when cart is empty */
.dinipetty-quote-fab.dpq-empty {
    display: none !important;
}

/* ==========================================================================
   Quote Drawer (slide-in panel)
   ========================================================================== */

/* Full-screen container — invisible until .dpq-is-open */
.dinipetty-quote-drawer {
    position: fixed;
    inset: 0;
    z-index: 99990;
    visibility: hidden;
    pointer-events: none;
}

.dinipetty-quote-drawer.dpq-is-open {
    visibility: visible;
    pointer-events: auto;
}

/* Semi-transparent overlay */
.dpq-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.42);
    opacity: 0;
    transition: opacity 0.3s ease;
}

.dinipetty-quote-drawer.dpq-is-open .dpq-overlay {
    opacity: 1;
}

/* Sliding panel */
.dpq-panel {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 390px;
    max-width: 92vw;
    background: #fff;
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 0.32s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: -5px 0 24px rgba(0, 0, 0, 0.13);
    overflow: hidden;
}

.dinipetty-quote-drawer.dpq-is-open .dpq-panel {
    transform: translateX(0);
}

/* ---- Header ---- */
.dpq-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 22px;
    border-bottom: 1px solid #ebebeb;
    flex-shrink: 0;
    background: #fff;
}

.dpq-header-title {
    margin: 0;
    font-size: 18px;
    font-weight: 700;
    color: #111;
    display: flex;
    align-items: center;
    gap: 10px;
    line-height: 1.2;
}

.dpq-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--dpq-gold);
    color: #fff;
    border-radius: 20px;
    padding: 2px 11px;
    font-size: 13px;
    font-weight: 700;
    min-width: 28px;
}

.dpq-close {
    background: none !important;
    border: none !important;
    font-size: 26px !important;
    line-height: 1 !important;
    color: #888 !important;
    cursor: pointer;
    padding: 4px 8px !important;
    border-radius: 4px;
    transition: background 0.2s, color 0.2s;
    /* Kill theme ::before underline */
    text-decoration: none !important;
}

.dpq-close:hover {
    background: #f4f4f4 !important;
    color: #111 !important;
}

/* ---- Scrollable body ---- */
.dpq-body {
    flex: 1;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* ---- Items list ---- */
.dpq-items-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.dpq-item {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 22px;
    border-bottom: 1px solid #f2f2f2;
    position: relative;
    transition: background 0.15s;
}

.dpq-item:hover {
    background: #fafafa;
}

/* Thumbnail */
.dpq-item-thumb {
    flex-shrink: 0;
    width: 72px;
    height: 54px;
    border-radius: 4px;
    overflow: hidden;
    background: #ece5d8;
}

.dpq-item-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.dpq-item-thumb--empty {
    background: linear-gradient(135deg, #e8d5b7 0%, #c9a96e 100%);
}

/* Info */
.dpq-item-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.dpq-item-name {
    font-size: 13px;
    font-weight: 600;
    color: #111;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
}

.dpq-item-meta {
    font-size: 12px;
    color: #999;
    line-height: 1.3;
}

/* Remove × */
.dpq-item-remove {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #bbb !important;
    font-size: 20px;
    text-decoration: none !important;
    border-radius: 50%;
    transition: background 0.2s, color 0.2s;
    line-height: 1;
}

.dpq-item-remove:hover {
    background: #fdecea;
    color: #e53e3e !important;
}

/* ---- Empty state ---- */
.dpq-empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px 28px;
    text-align: center;
    color: #888;
}

.dpq-empty-state p {
    margin: 0 0 20px;
    font-size: 15px;
}

.dpq-btn-browse {
    display: inline-block;
    padding: 10px 26px;
    background: var(--dpq-gold);
    color: #fff !important;
    border-radius: 4px;
    text-decoration: none !important;
    font-size: 14px;
    font-weight: 700;
    transition: background 0.2s;
}

.dpq-btn-browse:hover {
    background: var(--dpq-gold-hover);
    color: #fff !important;
}

/* ---- Footer ---- */
.dpq-footer {
    flex-shrink: 0;
    padding: 18px 22px;
    border-top: 1px solid #ebebeb;
    display: flex;
    flex-direction: column;
    gap: 10px;
    background: #fafafa;
}

.dpq-btn-submit {
    display: block;
    padding: 14px 20px;
    background: var(--dpq-gold) !important;
    color: #fff !important;
    text-align: center;
    text-decoration: none !important;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    border-radius: 3px;
    transition: background 0.2s;
    border: none !important;
    /* Kill theme ::before */
    content: none;
}

.dpq-btn-submit:hover {
    background: var(--dpq-gold-hover) !important;
    color: #fff !important;
}

.dpq-btn-view {
    display: block;
    padding: 11px 20px;
    background: transparent;
    color: var(--dpq-text) !important;
    text-align: center;
    text-decoration: none !important;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border: 1px solid #ddd !important;
    border-radius: 3px;
    transition: background 0.2s, border-color 0.2s;
}

.dpq-btn-view:hover {
    background: #efefef;
    color: var(--dpq-text) !important;
    border-color: #ccc !important;
}

/* ---- Body scroll-lock ---- */
body.dpq-drawer-open {
    overflow: hidden;
}

/* ==========================================================================
   Checkout — episode table + segment request (inside Additional Info column)
   ========================================================================== */

/* Hide WooCommerce "Your order" heading.
   Targets #order_review_heading (standard WC) and any h1-h4 that is a direct
   child of #order_review (covers Marcell / ThemeREX template variants). */
body.dinipetty-archive-quote-checkout #order_review_heading,
body.dinipetty-archive-quote-checkout .woocommerce-checkout-review-order h3,
body.dinipetty-archive-quote-checkout .woocommerce-checkout-review-order h2,
body.dinipetty-archive-quote-checkout #order_review > h1,
body.dinipetty-archive-quote-checkout #order_review > h2,
body.dinipetty-archive-quote-checkout #order_review > h3,
body.dinipetty-archive-quote-checkout #order_review > h4 {
    display: none !important;
}

/* Hide privacy policy text and terms & conditions checkbox.
   PHP hook removal handles this too; CSS is a fallback for cached markup. */
body.dinipetty-archive-quote-checkout .woocommerce-privacy-policy-text,
body.dinipetty-archive-quote-checkout .woocommerce-terms-and-conditions-wrapper,
body.dinipetty-archive-quote-checkout .wc-terms-and-conditions,
body.dinipetty-archive-quote-checkout .woocommerce-form__label-for-checkbox,
body.dinipetty-archive-quote-checkout .woocommerce-checkout-payment .validate-required,
body.dinipetty-archive-quote-checkout .woocommerce-terms-and-conditions-checkbox-text {
    display: none !important;
}

.dinipetty-checkout-summary {
    margin-top: 16px;
    width: 100% !important;
    max-width: none !important;
    display: block !important;
    clear: both !important;
    box-sizing: border-box !important;
    float: none !important;
    padding: 18px;
    border: 1px solid #e6e6e6;
    background: #f7f7f7;
}

/* Episode table — light container, white rows, dark header */
.dinipetty-checkout-episodes-table {
    width: 100%;
    border-collapse: collapse;
    border: 1px solid #e3e3e3;
    margin-bottom: 24px;
    background: #fff;
}

.dinipetty-checkout-episodes-table thead tr {
    background: #1a1a1a;
}

.dinipetty-checkout-episodes-table thead th {
    padding: 10px 14px;
    font-size: 0.72em;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #fff !important;
    text-align: left;
    border: none;
}

.dinipetty-checkout-episodes-table tbody td {
    padding: 10px 14px;
    font-size: 0.9em;
    color: #333;
    vertical-align: middle;
    border: 1px solid #e5e5e5;
}

.dinipetty-checkout-episodes-table tbody tr:nth-child(even) {
    background: #fafafa;
}

.dinipetty-ep-col-num {
    width: 70px;
    color: #666;
}

/* Segment request */
.dinipetty-segment-label {
    display: block;
    font-size: 0.95em;
    font-weight: 700;
    margin: 0 0 6px;
    padding: 0;
    color: #333 !important;
}

.dinipetty-segment-helper {
    font-size: 0.85em !important;
    color: #666 !important;
    margin: 0 0 10px !important;
    line-height: 1.5 !important;
}

.woocommerce-additional-fields .dinipetty-checkout-summary textarea,
.woocommerce-additional-fields .dinipetty-checkout-summary #dinipetty_segment_request,
#dinipetty_segment_request {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    height: auto !important;
    min-height: 150px !important;
    padding: 12px 14px !important;
    border: 1px solid #dcdcdc !important;
    border-radius: 0 !important;
    font-size: 0.9em !important;
    font-family: inherit !important;
    resize: vertical !important;
    color: #333 !important;
    background: #fff !important;
    line-height: 1.5 !important;
}

.woocommerce-additional-fields .dinipetty-checkout-summary textarea:focus,
#dinipetty_segment_request:focus {
    border-color: #999 !important;
    outline: none !important;
    box-shadow: none !important;
}

/* Guest picker (chips) styling is inlined via
   DiniPetty_Quote_Filters::print_guest_picker_styles() so it can't be defeated
   by the Marcell theme's button rules or stale edge-cached CSS. */

/* Cart page — Proceed to Checkout button for archive carts */

.dinipetty-cart-proceed {
    text-align: right;
    padding: 20px 0 10px;
}

.dinipetty-cart-proceed-btn {
    display: inline-block;
    padding: 12px 28px !important;
    font-size: 1em !important;
}

/* Thank-you / My Account order view — archive quote orders */
body.dinipetty-archive-quote-order .woocommerce-order-overview__total,
body.dinipetty-archive-quote-order .woocommerce-order-overview__payment-method,
body.dinipetty-archive-quote-order .woocommerce-table--order-details th.product-total,
body.dinipetty-archive-quote-order .woocommerce-table--order-details td.product-total,
body.dinipetty-archive-quote-order .woocommerce-table--order-details tfoot {
    display: none !important;
}

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width: 768px) {
    .dinipetty-form-row {
        flex-direction: column;
        gap: 15px;
    }

    .dinipetty-quote-form-container {
        padding: 20px;
    }

    /* FAB: smaller on mobile, still above back-to-top */
    .dinipetty-quote-fab {
        bottom: 80px;
        right: 15px;
        padding: 11px 16px;
        font-size: 13px !important;
    }

    .dpq-fab-label {
        display: none; /* icon + count only on small screens */
    }

    .dinipetty-quote-fab .dpq-fab-count {
        display: inline-block;
    }

    /* Drawer: full width on narrow screens */
    .dpq-panel {
        width: 100%;
        max-width: 100%;
    }
}

/* ==========================================================================
   Back-to-top button
   --------------------------------------------------------------------------
   The theme paints its scroll-to-top #212121 while the quote button is
   #2C2C2C. They sit stacked in the same corner, so an 11-point difference
   reads as a mistake rather than a choice. Matched.
   ========================================================================== */

html body .trx_addons_scroll_to_top {
    background-color: #2C2C2C !important;
}
