
/* ==========================================================
   KRILIH.MA
   PUBLIER UNE ANNONCE
   CSS V3
   DESIGN SYSTEM KRILIH
   ========================================================== */


/* ==========================================================
   PAGE
   ========================================================== */

.publier-page {
    width: 100%;
    min-height: calc(100vh - var(--header-height));

    background: var(--bg);
    color: var(--text);

    transition:
        background var(--transition),
        color var(--transition);
}


/* ==========================================================
   HERO
   ========================================================== */

.publier-hero {
    width: 100%;

    padding: 70px 24px 90px;

    background:
        linear-gradient(
            135deg,
            var(--surface),
            var(--surface-2)
        );

    border-bottom: 1px solid var(--border);

    transition:
        background var(--transition),
        border-color var(--transition);
}


.publier-hero-content {
    width: min(
        100%,
        var(--container)
    );

    margin: 0 auto;
}


.publier-eyebrow {
    display: inline-flex;

    align-items: center;
    justify-content: center;

    padding: 7px 13px;

    margin-bottom: 18px;

    border: 1px solid
        color-mix(
            in srgb,
            var(--primary) 25%,
            transparent
        );

    border-radius: 999px;

    background:
        color-mix(
            in srgb,
            var(--primary) 10%,
            transparent
        );

    color: var(--primary);

    font-size: 12px;
    font-weight: 800;

    letter-spacing: 0.14em;

    transition:
        background var(--transition),
        color var(--transition),
        border-color var(--transition);
}


.publier-hero h1 {
    margin: 0;

    color: var(--text);

    font-size: clamp(
        34px,
        5vw,
        58px
    );

    font-weight: 800;

    line-height: 1.08;

    letter-spacing: -0.04em;
}


.publier-hero p {
    max-width: 680px;

    margin: 22px 0 0;

    color: var(--text-light);

    font-size: 18px;

    line-height: 1.7;
}


/* ==========================================================
   CONTAINER
   ========================================================== */

.publier-container {
    width: min(
        calc(100% - 48px),
        980px
    );

    margin: -40px auto 80px;

    position: relative;

    z-index: 2;
}


/* ==========================================================
   FORM
   ========================================================== */

.publier-form {
    width: 100%;
}


/* ==========================================================
   FORM SECTION
   ========================================================== */

.form-section {
    width: 100%;

    margin-bottom: 28px;

    padding: 32px;

    background: var(--surface);

    border: 1px solid var(--border);

    border-radius: var(--radius-xl);

    box-shadow: var(--shadow-md);

    transition:
        background var(--transition),
        border-color var(--transition),
        box-shadow var(--transition);
}


/* ==========================================================
   SECTION HEADING
   ========================================================== */

.section-heading {
    display: flex;

    align-items: flex-start;

    gap: 18px;

    margin-bottom: 32px;

    padding-bottom: 24px;

    border-bottom: 1px solid var(--border);
}


.section-number {
    flex: 0 0 auto;

    display: flex;

    align-items: center;
    justify-content: center;

    width: 46px;
    height: 46px;

    border-radius: var(--radius-md);

    background:
        color-mix(
            in srgb,
            var(--primary) 10%,
            transparent
        );

    color: var(--primary);

    font-size: 13px;

    font-weight: 800;

    transition:
        background var(--transition),
        color var(--transition);
}


.section-heading h2 {
    margin: 0 0 7px;

    color: var(--text);

    font-size: 22px;

    font-weight: 750;

    line-height: 1.3;
}


.section-heading p {
    margin: 0;

    color: var(--text-muted);

    font-size: 14px;

    line-height: 1.6;
}


/* ==========================================================
   FORM GROUP
   ========================================================== */

.form-group {
    display: flex;

    flex-direction: column;

    gap: 8px;

    margin-bottom: 22px;
}


.form-group:last-child {
    margin-bottom: 0;
}


/* ==========================================================
   LABEL
   ========================================================== */

.form-group label {
    color: var(--text);

    font-size: 14px;

    font-weight: 700;

    line-height: 1.4;
}


.form-group label span {
    color: var(--danger);

    margin-left: 3px;
}


/* ==========================================================
   SMALL
   ========================================================== */

.form-group small {
    color: var(--text-muted);

    font-size: 12px;

    line-height: 1.5;
}


/* ==========================================================
   INPUT / SELECT / TEXTAREA
   ========================================================== */

.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;

    min-height: 48px;

    padding: 12px 14px;

    border: 1px solid var(--border);

    border-radius: var(--radius-md);

    background: var(--surface);

    color: var(--text);

    font: inherit;

    font-size: 14px;

    outline: none;

    box-sizing: border-box;

    transition:
        border-color var(--transition),
        background var(--transition),
        color var(--transition),
        box-shadow var(--transition);
}


.form-group textarea {
    min-height: 150px;

    resize: vertical;

    line-height: 1.6;
}


/* ==========================================================
   PLACEHOLDER
   ========================================================== */

.form-group input::placeholder,
.form-group textarea::placeholder {
    color: var(--text-muted);

    opacity: 0.75;
}


/* ==========================================================
   FOCUS
   ========================================================== */

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    border-color: var(--primary);

    box-shadow:
        0 0 0 4px
        color-mix(
            in srgb,
            var(--primary) 12%,
            transparent
        );
}


/* ==========================================================
   SELECT
   ========================================================== */

.form-group select {
    cursor: pointer;
}


.form-group select option {
    background: var(--surface);

    color: var(--text);
}


/* ==========================================================
   GRID
   ========================================================== */

.form-grid {
    display: grid;

    gap: 20px;

    width: 100%;
}


.two-columns {
    grid-template-columns:
        repeat(
            2,
            minmax(0, 1fr)
        );
}


.three-columns {
    grid-template-columns:
        repeat(
            3,
            minmax(0, 1fr)
        );
}


/* ==========================================================
   GPS
   ========================================================== */

.advanced-location {
    margin-top: 8px;

    border: 1px solid var(--border);

    border-radius: var(--radius-md);

    background: var(--surface-2);

    overflow: hidden;

    transition:
        background var(--transition),
        border-color var(--transition);
}


.advanced-location summary {
    padding: 15px 17px;

    color: var(--text);

    font-size: 14px;

    font-weight: 700;

    cursor: pointer;

    user-select: none;
}


.advanced-location summary:hover {
    color: var(--primary);
}


.advanced-location[open] summary {
    border-bottom: 1px solid var(--border);

    color: var(--primary);
}


.advanced-location .form-grid {
    padding: 20px;
}


/* ==========================================================
   CHECKBOX LIST
   ========================================================== */

.checkbox-list {
    display: grid;

    gap: 14px;
}


.checkbox-card {
    display: flex;

    align-items: center;

    gap: 16px;

    padding: 18px;

    border: 1px solid var(--border);

    border-radius: var(--radius-md);

    background: var(--surface);

    cursor: pointer;

    transition:
        background var(--transition),
        border-color var(--transition),
        transform var(--transition),
        box-shadow var(--transition);
}


.checkbox-card:hover {
    border-color: var(--primary);

    transform: translateY(-1px);

    box-shadow: var(--shadow-sm);
}


.checkbox-card input {
    flex: 0 0 auto;

    width: 20px;
    height: 20px;

    accent-color: var(--primary);

    cursor: pointer;
}


.checkbox-content {
    display: flex;

    flex-direction: column;

    gap: 4px;
}


.checkbox-content strong {
    color: var(--text);

    font-size: 14px;
}


.checkbox-content small {
    color: var(--text-muted);

    font-size: 12px;

    line-height: 1.5;
}


.checkbox-card:has(input:checked) {
    border-color: var(--primary);

    background:
        color-mix(
            in srgb,
            var(--primary) 7%,
            var(--surface)
        );
}


/* ==========================================================
   IMAGE UPLOAD
   ========================================================== */

.image-upload {
    width: 100%;
}


.image-upload input[type="file"] {
    position: absolute;

    width: 1px;
    height: 1px;

    opacity: 0;

    pointer-events: none;
}


.image-upload-zone {
    display: flex;

    flex-direction: column;

    align-items: center;
    justify-content: center;

    min-height: 230px;

    padding: 30px;

    border: 2px dashed var(--border);

    border-radius: var(--radius-lg);

    background: var(--surface-2);

    color: var(--text);

    text-align: center;

    cursor: pointer;

    transition:
        background var(--transition),
        border-color var(--transition),
        transform var(--transition);
}


.image-upload-zone:hover {
    border-color: var(--primary);

    background:
        color-mix(
            in srgb,
            var(--primary) 5%,
            var(--surface-2)
        );
}


.upload-icon {
    display: flex;

    align-items: center;
    justify-content: center;

    width: 58px;
    height: 58px;

    margin-bottom: 16px;

    border-radius: 50%;

    background:
        color-mix(
            in srgb,
            var(--primary) 10%,
            transparent
        );

    color: var(--primary);

    font-size: 32px;

    font-weight: 300;

    line-height: 1;
}


.image-upload-zone strong {
    margin-bottom: 7px;

    color: var(--text);

    font-size: 16px;
}


.image-upload-zone small {
    color: var(--text-muted);

    font-size: 12px;
}


/* ==========================================================
   IMAGE PREVIEW
   ========================================================== */

.image-preview {
    display: grid;

    grid-template-columns:
        repeat(
            5,
            minmax(0, 1fr)
        );

    gap: 12px;

    margin-top: 18px;
}


.image-preview > * {
    min-width: 0;

    overflow: hidden;

    border: 1px solid var(--border);

    border-radius: var(--radius-md);

    background: var(--surface-2);
}


/* ==========================================================
   MESSAGE
   ========================================================== */

.form-message {
    display: none;

    margin-bottom: 24px;

    padding: 15px 18px;

    border: 1px solid transparent;

    border-radius: var(--radius-md);

    font-size: 14px;

    line-height: 1.5;
}


.form-message:not(:empty) {
    display: block;
}


.form-message.error {
    background:
        color-mix(
            in srgb,
            var(--danger) 10%,
            var(--surface)
        );

    border-color:
        color-mix(
            in srgb,
            var(--danger) 25%,
            var(--border)
        );

    color: var(--danger);
}


.form-message.success {
    background:
        color-mix(
            in srgb,
            var(--success) 10%,
            var(--surface)
        );

    border-color:
        color-mix(
            in srgb,
            var(--success) 25%,
            var(--border)
        );

    color: var(--success);
}


/* ==========================================================
   ACTIONS
   ========================================================== */

.form-actions {
    display: flex;

    align-items: center;

    justify-content: flex-end;

    gap: 14px;

    margin-top: 10px;

    padding: 24px 0 0;

    border-top: 1px solid var(--border);
}


/* ==========================================================
   BUTTONS
   ========================================================== */

.btn-primary,
.btn-secondary {
    display: inline-flex;

    align-items: center;

    justify-content: center;

    min-height: 48px;

    padding: 0 22px;

    border-radius: var(--radius-md);

    font: inherit;

    font-size: 14px;

    font-weight: 700;

    text-decoration: none;

    cursor: pointer;

    box-sizing: border-box;

    transition:
        background var(--transition),
        border-color var(--transition),
        color var(--transition),
        transform var(--transition),
        box-shadow var(--transition);
}


/* ==========================================================
   PRIMARY BUTTON
   ========================================================== */

.btn-primary {
    border: 1px solid var(--primary);

    background: var(--primary);

    color: #ffffff;

    box-shadow:
        0 6px 18px
        color-mix(
            in srgb,
            var(--primary) 22%,
            transparent
        );
}


.btn-primary:hover {
    background: var(--primary-hover);

    border-color: var(--primary-hover);

    transform: translateY(-1px);

    box-shadow:
        0 10px 24px
        color-mix(
            in srgb,
            var(--primary) 28%,
            transparent
        );
}


.btn-primary:active {
    transform: translateY(0);
}


/* ==========================================================
   SECONDARY BUTTON
   ========================================================== */

.btn-secondary {
    border: 1px solid var(--border);

    background: var(--surface);

    color: var(--text-light);
}


.btn-secondary:hover {
    border-color: var(--primary);

    color: var(--primary);

    background:
        color-mix(
            in srgb,
            var(--primary) 5%,
            var(--surface)
        );
}


/* ==========================================================
   LOADER
   ========================================================== */

.btn-loader {
    display: none;

    width: 18px;
    height: 18px;

    margin-left: 9px;

    border: 2px solid
        rgba(255, 255, 255, 0.35);

    border-top-color: #ffffff;

    border-radius: 50%;

    animation:
        publier-spin 0.7s linear infinite;
}


.btn-primary.loading .btn-loader {
    display: block;
}


.btn-primary.loading .btn-text {
    opacity: 0.8;
}


@keyframes publier-spin {

    to {
        transform: rotate(360deg);
    }

}


/* ==========================================================
   FOOTER
   ========================================================== */

.site-footer {
    padding: 28px 24px;

    border-top: 1px solid var(--border);

    background: var(--surface);

    color: var(--text-muted);

    text-align: center;

    font-size: 13px;

    transition:
        background var(--transition),
        border-color var(--transition),
        color var(--transition);
}


/* ==========================================================
   RESPONSIVE — TABLET
   ========================================================== */

@media (max-width: 900px) {

    .publier-hero {
        padding:
            55px 24px 75px;
    }


    .publier-container {
        width:
            min(
                calc(100% - 32px),
                760px
            );

        margin-top: -30px;
    }


    .form-section {
        padding: 26px;
    }


    .three-columns {
        grid-template-columns:
            repeat(
                2,
                minmax(0, 1fr)
            );
    }


    .image-preview {
        grid-template-columns:
            repeat(
                3,
                minmax(0, 1fr)
            );
    }

}


/* ==========================================================
   RESPONSIVE — MOBILE
   ========================================================== */

@media (max-width: 640px) {

    .publier-hero {
        padding:
            42px 18px 65px;
    }


    .publier-hero h1 {
        font-size: 34px;
    }


    .publier-hero p {
        font-size: 15px;
    }


    .publier-container {
        width:
            calc(100% - 20px);

        margin-top: -25px;

        margin-bottom: 45px;
    }


    .form-section {
        padding: 20px;

        margin-bottom: 18px;

        border-radius: var(--radius-lg);
    }


    .section-heading {
        gap: 12px;

        margin-bottom: 24px;

        padding-bottom: 18px;
    }


    .section-number {
        width: 40px;
        height: 40px;

        border-radius: 10px;

        font-size: 12px;
    }


    .section-heading h2 {
        font-size: 18px;
    }


    .section-heading p {
        font-size: 13px;
    }


    .two-columns,
    .three-columns {
        grid-template-columns: 1fr;
    }


    .form-group input,
    .form-group select,
    .form-group textarea {
        min-height: 46px;
    }


    .form-actions {
        flex-direction: column-reverse;

        align-items: stretch;

        gap: 10px;
    }


    .btn-primary,
    .btn-secondary {
        width: 100%;
    }


    .image-upload-zone {
        min-height: 190px;

        padding: 22px;
    }


    .image-preview {
        grid-template-columns:
            repeat(
                2,
                minmax(0, 1fr)
            );
    }

}


/* ==========================================================
   RESPONSIVE — SMALL MOBILE
   ========================================================== */

@media (max-width: 380px) {

    .publier-hero h1 {
        font-size: 29px;
    }


    .form-section {
        padding: 16px;
    }


    .publier-container {
        width:
            calc(100% - 14px);
    }

}

/* ==========================================================
   KRILIH — PUBLIER ANNONCE
   BORDURES VISIBLES
   ========================================================== */

.publier-annonce,
.publish-container,
.form-container,
.form-card,
.annonce-form,
.publish-form {
    border: 1px solid rgba(255, 255, 255, 0.35) !important;
    box-shadow:
        0 10px 30px rgba(0, 0, 0, 0.10),
        inset 0 1px 0 rgba(255, 255, 255, 0.35) !important;
}

/* Champs du formulaire */
.publier-annonce input,
.publier-annonce select,
.publier-annonce textarea,
.publish-container input,
.publish-container select,
.publish-container textarea,
.form-container input,
.form-container select,
.form-container textarea {
    border: 1px solid rgba(90, 90, 90, 0.35) !important;
}

/* Bordure plus visible au focus */
.publier-annonce input:focus,
.publier-annonce select:focus,
.publier-annonce textarea:focus,
.publish-container input:focus,
.publish-container select:focus,
.publish-container textarea:focus,
.form-container input:focus,
.form-container select:focus,
.form-container textarea:focus {
    border-color: rgba(255, 140, 0, 0.85) !important;

    box-shadow:
        0 0 0 3px rgba(255, 140, 0, 0.12),
        0 4px 15px rgba(255, 140, 0, 0.12) !important;

    outline: none;
}

/* ==========================================================
   PUBLIER-ANNONCE — CADRES DES CHAMPS VISIBLES
   ========================================================== */

input,
select,
textarea {
    border: 1px solid rgba(90, 90, 90, 0.45) !important;
    background: rgba(255, 255, 255, 0.88) !important;
    color: #222 !important;

    box-shadow:
        inset 0 1px 3px rgba(0, 0, 0, 0.06),
        0 1px 2px rgba(0, 0, 0, 0.04) !important;
}

/* Au survol */
input:hover,
select:hover,
textarea:hover {
    border-color: rgba(255, 140, 0, 0.65) !important;
}

/* Quand le champ est sélectionné */
input:focus,
select:focus,
textarea:focus {
    border: 1px solid #ff8a00 !important;
    outline: none !important;

    box-shadow:
        0 0 0 3px rgba(255, 138, 0, 0.14),
        0 4px 12px rgba(255, 138, 0, 0.10) !important;
}

/* Placeholder */
input::placeholder,
textarea::placeholder {
    color: #777 !important;
    opacity: 1;
}