/* version: v0.2.0 | date: 2026-09-10 */

.sh_intent_body {
    padding: 10px 0;
}

.sh_intent_cards {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.sh_intent_card {
    border: 1px solid #E4E7EC;
    border-radius: 10px;
    padding: 20px;
    cursor: pointer;
    background: #FFF;
    transition: border-color .15s ease, box-shadow .15s ease;
}

/*
 * ΡΗΤΑ ΧΡΩΜΑΤΑ ΚΕΙΜΕΝΟΥ — ΜΗΝ ΤΑ ΑΦΑΙΡΕΣΕΙΣ.
 *
 * Το κάθε appearance theme του Booknetic παράγει δικό του CSS και μπορεί να
 * ορίσει χρώμα κειμένου στο σώμα του panel. Χωρίς ρητό `color`, η κάρτα
 * κληρονομεί εκείνο — και σε σκούρο theme βγαίνει λευκό κείμενο πάνω στο λευκό
 * φόντο που ορίζουμε εδώ: αόρατο, ορατό μόνο αν το επιλέξεις με το ποντίκι.
 *
 * Οι τιμές είναι ακριβώς αυτές των καρτών υπηρεσιών του πυρήνα, ώστε το βήμα
 * να μοιάζει με το υπόλοιπο panel.
 */
.sh_intent_card_title { color: #292D32; }
.sh_intent_card_desc  { color: #828F9A; }

.sh_intent_card:hover {
    border-color: #C9CFD8;
    box-shadow: 0 2px 10px rgba(16, 24, 40, .06);
}

.sh_intent_card_selected {
    border-color: #2B3139;
    box-shadow: 0 0 0 1px #2B3139 inset;
}

.sh_intent_card_title {
    font-size: 16px;
    font-weight: 600;
    margin-bottom: 6px;
}

.sh_intent_card_desc {
    font-size: 12px;
    line-height: 19px;
}

/*
 * ΤΟ ΚΟΥΜΠΙ «ΕΠΟΜΕΝΟ» ΚΡΥΒΕΤΑΙ ΜΕ CSS, ΟΧΙ ΜΕ JS.
 *
 * Ο πυρήνας αποφασίζει την ορατότητα των κουμπιών σε ΤΡΙΑ σημεία:
 * `updateGoNextBtn()` μέσα στο `loadStep()`, και ΞΕΧΩΡΙΣΤΑ μέσα στο `goBack()`
 * — που ΔΕΝ καλεί `loadStep()` και δεν πυροδοτεί κανένα hook. Ένας χειρισμός
 * με JS θα δούλευε πηγαίνοντας μπροστά και θα έσπαγε γυρίζοντας πίσω.
 *
 * Η κατάσταση είναι ήδη γραμμένη στο DOM (`.booknetic_active_step` πάνω στο
 * βήμα), οπότε το CSS τη διαβάζει χωρίς να χρειάζεται να μαντέψει τη σειρά
 * των γεγονότων.
 *
 * Σε φυλλομετρητή χωρίς `:has()` το κουμπί απλώς μένει ορατό — και τότε πιάνει
 * το `step_validation_sh_intent`, που ζητά επιλογή αντί να προχωρήσει.
 */
.booknetic_appointment:has(.booknetic_appointment_step_element.booknetic_active_step[data-step-id="sh_intent"]) .booknetic_next_step_btn,
.booknetic_appointment[data-sh-mode="buy"]:has(.booknetic_appointment_step_element.booknetic_active_step[data-step-id="service"]) .booknetic_next_step_btn {
    display: none !important;
}

/*
 * ΚΟΥΜΠΙΑ ΤΟΥ FOOTER: ΟΜΟΙΟΜΟΡΦΑ — ελαφριά (500), 1px μικρότερα, σε μία γραμμή.
 *
 * ΟΛΑ μαζί (ΠΙΣΩ, ΕΠΟΜΕΝΟ, ΕΠΙΒΕΒΑΙΩΣΗ, ΟΛΟΚΛΗΡΩΣΗ ΑΓΟΡΑΣ), όχι μόνο της αγοράς:
 * δίπλα-δίπλα με διαφορετικό βάρος έμοιαζαν με δύο διαφορετικά συστήματα.
 *
 * Δύο κανόνες γιατί υπάρχουν δύο βάσεις: ο πυρήνας (12px !important, 600) και το
 * v2 skin του sh-member-panel (14px !important, 600 — booking-v2.css).
 */
.booknetic_appointment_container_footer .booknetic_btn_primary,
.booknetic_appointment_container_footer .booknetic_btn_secondary {
    font-size: 11px !important;
    font-weight: 500 !important;
    white-space: nowrap;
}

body.sh-bp-v2 .booknetic_appointment_container_footer .booknetic_btn_primary,
body.sh-bp-v2 .booknetic_appointment_container_footer .booknetic_btn_secondary {
    font-size: 13px !important;
}

/* ═══ eshop mode: μένει ΜΟΝΟ το βήμα του καταστήματος ═══
 *
 * ΜΕ CSS ΚΑΙ ΟΧΙ ΜΕ JS, ΓΙΑ ΤΟΝ ΙΔΙΟ ΛΟΓΟ ΠΟΥ ΚΡΥΒΕΤΑΙ ΕΤΣΙ ΚΑΙ ΤΟ «ΕΠΟΜΕΝΟ»:
 * ο πυρήνας αποφασίζει την ορατότητα των βημάτων σε περισσότερα από ένα σημεία
 * (`loadStep`, `goBack`, `refreshStepNumbers`), και κάποια από αυτά δεν
 * πυροδοτούν κανένα hook. Ένα `.hide()` από JS δουλεύει στην πρώτη φόρτωση και
 * ξεκολλάει μόλις ο χρήστης πάει πίσω — που είναι ακριβώς αυτό που είδαμε:
 * ο τίτλος άλλαζε σωστά, αλλά «Έξτρα υπηρεσία» και «Ημερομηνία» επέμεναν.
 *
 * Το `data-sh-mode` ζει στο ίδιο το panel και δεν το αγγίζει κανείς μετά το
 * ρεντάρισμα, οπότε ο κανόνας ισχύει όσο ισχύει το mode.
 */
.booknetic_appointment[data-sh-mode="eshop"]
    .booknetic_appointment_step_element:not([data-step-id="service"]):not([data-step-id^="eshop_"]) {
    display: none !important;
}

/* ═══ Banner «Έχεις ενεργό πακέτο» (book / trial) — App/Helpers/PackageBanner.php ═══ */
.booknetic_appointment .sh_package_banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    grid-column: 1 / -1; /* η λίστα υπηρεσιών μπορεί να είναι grid */
    width: 100%;
    box-sizing: border-box;
    margin: 0 0 16px;
    padding: 12px 14px;
    border-radius: 10px;
    background: #eef6ff;
    border: 1px solid #b9d8fb;
    color: #12355b;
}
.booknetic_appointment .sh_package_banner_text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    font-size: 14px;
    line-height: 1.35;
}
.booknetic_appointment .sh_package_banner_text span {
    font-size: 13px;
    opacity: .8;
}
.booknetic_appointment .sh_package_banner_btn {
    flex: 0 0 auto;
    padding: 8px 14px;
    border-radius: 8px;
    background: #1f6fd1;
    color: #fff !important;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none !important;
    white-space: nowrap;
}
.booknetic_appointment .sh_package_banner_btn:hover {
    background: #185bb0;
}

/* ═══ TRIAL: λωρίδα «ΔΩΡΕΑΝ ΔΟΚΙΜΑΣΤΙΚΟ» σε όλα τα βήματα + έγχρωμο πλαίσιο ═══ */
.booknetic_appointment.sh_is_trial {
    box-shadow: 0 0 0 3px #16a34a;
}
.booknetic_appointment .sh_trial_ribbon {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 16px;
    background: linear-gradient(90deg, #16a34a, #22c55e);
    color: #fff;
    line-height: 1.3;
}
.booknetic_appointment .sh_trial_ribbon_tag {
    padding: 3px 10px;
    border-radius: 999px;
    background: #fff;
    color: #15803d;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .06em;
    white-space: nowrap;
}
.booknetic_appointment .sh_trial_ribbon_desc {
    font-size: 13px;
    font-weight: 500;
}

/* ═══ TRIAL σε χώρο χωρίς ενεργό δοκιμαστικό: μήνυμα αντί για panel (Listener::afterShortcode) ═══
 * Πιάνει όλο το ύψος κάτω από τη λωρίδα του χώρου (≈ header 50 + λωρίδα 70 + περιθώρια). */
.sh_trial_unavailable {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: calc(100vh - 160px);
    min-height: calc(100dvh - 160px);
    padding: 24px 16px;
    box-sizing: border-box;
}
.sh_trial_unavailable_card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    width: 100%;
    max-width: 440px;
    padding: 40px 28px;
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 10px 30px rgba(17, 24, 39, .08), 0 1px 3px rgba(17, 24, 39, .06);
    color: #1f2937;
    text-align: center;
    box-sizing: border-box;
}
.sh_trial_unavailable_icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    margin-bottom: 6px;
    border-radius: 50%;
    background: #f3f4f6;
    color: #6b7280;
}
.sh_trial_unavailable_title {
    margin: 0;
    font-size: 22px;
    font-weight: 700;
    line-height: 1.25;
    color: #111827;
}
.sh_trial_unavailable_text {
    margin: 0 0 14px;
    font-size: 15px;
    line-height: 1.5;
    color: #4b5563;
}
.sh_trial_unavailable_btn {
    display: inline-block;
    padding: 12px 22px;
    border-radius: 10px;
    background: #111827;
    color: #fff !important;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none !important;
}
.sh_trial_unavailable_btn:hover {
    background: #374151;
}

/* ═══ TRIAL: «Δωρεάν» στην κάρτα υπηρεσίας (booking_panel_modes.js) ═══ */
.booknetic_appointment .booknetic_service_card_price.sh_trial_price {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    line-height: 1.1;
}
/* Το theme/booknetic μηδενίζει το text-decoration — γι' αυτό ρητά και με !important. */
.booknetic_appointment .sh_trial_price_old {
    font-size: 13px !important;
    font-weight: 500;
    color: #9ca3af;
    text-decoration: line-through !important;
    text-decoration-thickness: 1.5px;
}
/* Η τιμή του πυρήνα είναι ~24px — το «Δωρεάν» σε μέγεθος ετικέτας, όχι τίτλου. */
.booknetic_appointment .sh_trial_price_free {
    font-size: 16px !important;
    line-height: 1.2;
    color: #16a34a;
    font-weight: 700;
}

/* ═══ TRIAL: σφάλμα στο καλάθι — ο πυρήνας δεν δίνει χρώμα στο κείμενο (κληρονομεί λευκό)
 *     και το κουτί είναι absolute πάνω στην κάρτα, άρα το κείμενο ξεχείλιζε. ═══ */
.booknetic_appointment.sh_is_trial .booknetic-cart-item-error.show {
    position: relative;
    margin-top: 8px;
}
.booknetic_appointment.sh_is_trial .booknetic-cart-item-error-body {
    color: #b42318;
    font-size: 13px;
    line-height: 1.4;
}
/* Ένα μόνο ραντεβού στο trial: χωρίς «Προσθήκη κράτησης». */
.booknetic_appointment.sh_is_trial .bkntc_again_booking {
    display: none !important;
}
/* Το toast του πυρήνα κόβει σε μία γραμμή. */
.booknetic_appointment.sh_is_trial .booknetic_warning_message {
    height: auto;
    white-space: normal;
    line-height: 1.4;
    padding: 8px 12px;
}
