/* Extrait de templates/artisan_detail.html : fichier mis en cache par le navigateur. */
    :root {
      --pl-primary: #1A5CFF;
      --pl-text: #0B1B3A;
      --pl-muted: #64748B;
      --pl-line: #E6ECF5;
      --pl-soft: #EAF1FF;
      --pl-green: #16A34A;
      --pl-star: #F5A623;
    }
    /* Fond et police du mobile : uniquement sous 1024px (le PC a son propre fond). */
    @media (max-width: 1023px) {
      body {
        font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
        background: #fff; color: var(--pl-text);
        -webkit-font-smoothing: antialiased;
        padding-bottom: calc(24px + env(safe-area-inset-bottom));
      }
      body main.page.pl-main { max-width: none; margin: 0; padding: 0; }
    }
    :where(.pl-mobile, .pcp) a { text-decoration: none; color: inherit; }
    :where(.pl-mobile, .pcp, .pl-sheet) button { font-family: inherit; }
    :where(.pl-mobile, .pcp, .pl-sheet) img { max-width: 100%; }
    :where(.pl-mobile, .pl-sheet) svg { max-width: none; }
    .support-fab { display: none !important; }
    .pl-wrap { max-width: 680px; margin: 0 auto; }

    /* ---------- En-tete (plate, blanche) ---------- */
    .pl-topbar {
      display: grid; grid-template-columns: 40px minmax(0, 1fr) 40px; align-items: center; gap: 8px;
      padding: calc(14px + env(safe-area-inset-top)) 16px 10px;
    }
    .pl-topbar h1 {
      grid-column: 2; text-align: center; margin: 0;
      font-size: 1.08rem; font-weight: 800; color: var(--pl-text);
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    .pl-icon-btn {
      width: 38px; height: 38px; border-radius: 50%; flex-shrink: 0;
      background: transparent; border: none;
      color: var(--pl-primary); display: flex; align-items: center; justify-content: center;
      cursor: pointer; padding: 0;
    }
    .pl-icon-btn svg { width: 22px; height: 22px; }

    /* ---------- Carte identite (fond bleu pale) ---------- */
    .pl-idcard {
      margin: 4px 16px 16px; padding: 18px;
      background: var(--pl-soft); border-radius: 20px;
    }
    .pl-idcard:has(.pl-hero-banner) { padding-top: 0; }
    .pl-hero-banner {
      margin: 0 -18px 14px; height: 130px; border-radius: 20px 20px 0 0;
      overflow: hidden; position: relative;
    }
    .pl-hero-banner img { width: 100%; height: 100%; object-fit: cover; display: block; }
    .pl-hero-banner::after {
      content: ""; position: absolute; inset: 0;
      background: linear-gradient(180deg, rgba(11,27,58,.05), var(--pl-soft) 96%);
    }
    .pl-idcard-top {
      display: grid; grid-template-columns: 84px minmax(0, 1fr);
      align-items: start; column-gap: 14px; margin-bottom: 16px;
    }
    .pl-ava-wrap { position: relative; }
    .pl-ava {
      width: 84px; height: 84px; border-radius: 50%; overflow: hidden;
      background: #fff; border: 3px solid #fff; box-shadow: 0 4px 12px rgba(15,42,90,.12);
      display: flex; align-items: center; justify-content: center;
    }
    .pl-ava img { width: 100%; height: 100%; object-fit: cover; }
    .pl-ava-initials {
      width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
      background: var(--pl-primary); color: #fff; font-weight: 800; font-size: 1.5rem;
    }
    .pl-ava-dot {
      position: absolute; right: 1px; bottom: 1px;
      width: 18px; height: 18px; border-radius: 50%;
      background: var(--pl-green); border: 3px solid #fff;
    }
    .pl-id-main { min-width: 0; padding-top: 2px; }
    .pl-id-head {
      display: flex; align-items: flex-start; flex-wrap: wrap; gap: 8px 10px;
      margin-bottom: 2px;
    }
    .pl-name {
      display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0;
      font-size: 1.2rem; font-weight: 800; margin: 0; line-height: 1.22; color: var(--pl-text);
      flex: 1 1 130px;
    }
    .pl-name .check { width: 19px; height: 19px; flex-shrink: 0; color: var(--pl-primary); }
    .pl-role { font-size: 0.86rem; font-weight: 600; color: var(--pl-muted); margin: 0 0 8px; }
    .pl-rating-line {
      display: flex; align-items: center; gap: 6px; font-size: 1rem; font-weight: 800;
      color: var(--pl-text);
    }
    .pl-rating-line svg { width: 18px; height: 18px; fill: var(--pl-star); }
    .pl-rating-line span.n { color: var(--pl-muted); font-weight: 600; font-size: 0.82rem; }
    .pl-avail-pill {
      display: inline-flex; align-items: center; gap: 6px; text-align: left;
      background: #DCFCE7; color: #15803D; font-weight: 700; font-size: 0.72rem;
      padding: 7px 12px; border-radius: 50px; white-space: nowrap; flex-shrink: 0;
    }
    .pl-avail-pill svg { width: 13px; height: 13px; flex-shrink: 0; }

    .pl-idcard-info {
      display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
      gap: 10px; border-top: 1px solid rgba(15,42,90,.1); padding-top: 16px;
    }
    .pl-info-chip {
      display: flex; align-items: center; gap: 10px; text-align: left;
      background: #fff; border-radius: 14px; padding: 10px 12px;
      box-shadow: 0 2px 8px rgba(15,42,90,.06);
    }
    .pl-info-chip .ic {
      width: 34px; height: 34px; border-radius: 10px; background: var(--pl-soft); color: var(--pl-primary);
      display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    }
    .pl-info-chip .ic svg { width: 18px; height: 18px; }
    .pl-info-chip .txt { min-width: 0; }
    .pl-info-chip b { display: block; font-size: 0.8rem; font-weight: 800; color: var(--pl-text); line-height: 1.25; }
    .pl-info-chip span { display: block; font-size: 0.68rem; color: var(--pl-muted); font-weight: 600; line-height: 1.25; }
    .pl-info-chip.avail b { color: #15803D; }
    .pl-info-chip.verified .ic { background: #DCFCE7; color: #15803D; }

    /* ---------- Boutons d'action (dans le flux) ---------- */
    .pl-actions { margin: 0 16px 20px; display: flex; flex-direction: column; gap: 12px; }
    .pl-btn {
      display: flex; align-items: center; justify-content: center; gap: 11px;
      border-radius: 14px; padding: 13px 16px; cursor: pointer; width: 100%;
    }
    .pl-btn svg { width: 20px; height: 20px; flex-shrink: 0; }
    .pl-btn .txt { text-align: left; }
    .pl-btn .txt b { display: block; font-size: 0.95rem; font-weight: 700; line-height: 1.3; }
    .pl-btn .txt small { display: block; font-size: 0.72rem; font-weight: 600; opacity: .85; line-height: 1.3; }
    .pl-btn-primary { background: var(--pl-primary); color: #fff; border: none; box-shadow: 0 10px 22px rgba(26,92,255,0.3); }
    .pl-btn-ghost { background: #fff; color: var(--pl-primary); border: 1.6px solid var(--pl-primary); }

    /* ---------- Sections ---------- */
    .pl-section { margin: 0 16px 16px; background: #fff; border-radius: 18px; padding: 16px; border: 1px solid var(--pl-line); }
    .pl-sec-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
    .pl-sec-icon {
      width: 32px; height: 32px; border-radius: 50%; background: var(--pl-soft); color: var(--pl-primary);
      display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    }
    .pl-sec-icon svg { width: 16px; height: 16px; }
    .pl-sec-head h2 { font-size: 1.02rem; font-weight: 800; margin: 0; flex: 1; color: var(--pl-text); }
    .pl-chev { width: 19px; height: 19px; color: var(--pl-primary); flex-shrink: 0; }

    /* Services -- liste a coche */
    .pl-svc-row {
      display: flex; align-items: center; gap: 10px; padding: 10px 0;
      border-bottom: 1px solid var(--pl-line);
    }
    .pl-svc-row:last-child { border-bottom: none; padding-bottom: 0; }
    .pl-svc-row:first-child { padding-top: 0; }
    .pl-svc-row .ck {
      width: 22px; height: 22px; border-radius: 50%; background: var(--pl-primary); color: #fff;
      display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    }
    .pl-svc-row .ck svg { width: 13px; height: 13px; }
    .pl-svc-row span { font-size: 0.9rem; font-weight: 600; color: var(--pl-text); }

    /* Evaluations clients -- resume compact */
    .pl-rating-summary { text-align: center; }
    .pl-rating-summary .big { font-size: 2.3rem; font-weight: 800; color: var(--pl-text); line-height: 1; margin-bottom: 8px; }
    .pl-rating-summary .stars { display: flex; gap: 3px; justify-content: center; margin-bottom: 6px; }
    /* Couleur via currentColor : l'attribut fill de chaque etoile decide si
       elle est pleine ou grise. Un "fill" ici forcait 5 etoiles pleines,
       meme pour une note de 1/5. */
    .pl-rating-summary .stars { color: var(--pl-star); }
    .pl-rating-summary .stars svg { width: 20px; height: 20px; }
    .pl-rating-summary .count { font-size: 0.84rem; color: var(--pl-muted); font-weight: 600; margin-bottom: 14px; }
    .pl-see-all {
      display: block; width: 100%; background: var(--pl-soft); color: var(--pl-primary); border: none;
      border-radius: 12px; padding: 13px; font-weight: 700; font-size: 0.88rem; cursor: pointer;
    }
    .pl-rating-empty { color: var(--pl-muted); font-size: 0.86rem; margin: 0 0 14px; text-align: center; }
    .pl-review-cta {
      display: flex; align-items: center; gap: 12px; text-align: left;
      margin: 0 16px 16px; background: var(--pl-soft); border: 1.4px solid var(--pl-primary);
      border-radius: 18px; padding: 14px 16px; cursor: pointer;
    }
    .pl-review-cta .ic {
      width: 34px; height: 34px; border-radius: 50%; background: #fff; color: var(--pl-primary);
      display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    }
    .pl-review-cta .ic svg { width: 17px; height: 17px; }
    .pl-review-cta .tx { flex: 1; min-width: 0; }
    .pl-review-cta .tx b { display: block; font-size: 0.96rem; font-weight: 800; color: var(--pl-text); }
    .pl-review-cta .tx span { display: block; font-size: 0.8rem; color: var(--pl-muted); font-weight: 600; margin-top: 2px; }
    .pl-review-cta .chev { width: 19px; height: 19px; color: var(--pl-primary); flex-shrink: 0; }
    .pl-review-preview {
      background: var(--pl-soft); border-radius: 14px; padding: 14px; margin-bottom: 12px; text-align: left;
    }
    .pl-review-preview p { margin: 0 0 6px; font-size: 0.86rem; color: var(--pl-text); line-height: 1.5; font-style: italic; }
    .pl-review-preview span { font-size: 0.78rem; color: var(--pl-muted); font-weight: 700; }
    .pl-rev-cards { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; text-align: left; }
    .pl-rev-card { display: flex; gap: 12px; padding: 12px; border-radius: 14px; background: #F5F8FF; }
    .pl-rev-card .ava { width: 38px; height: 38px; border-radius: 50%; overflow: hidden; flex-shrink: 0;
      background: #E3ECFF; color: var(--pl-primary); font-weight: 800; display: flex; align-items: center; justify-content: center; }
    .pl-rev-card .ava img { width: 100%; height: 100%; object-fit: cover; }
    .pl-rev-card .bd { min-width: 0; flex: 1; }
    .pl-rev-card .hd { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
    .pl-rev-card .nm { font-weight: 800; font-size: 0.9rem; color: var(--pl-text); }
    .pl-rev-card .ago { font-size: 0.74rem; color: var(--pl-muted); white-space: nowrap; }
    .pl-rev-card .st { display: flex; gap: 2px; margin: 3px 0 5px; }
    .pl-rev-card .st svg { width: 13px; height: 13px; }
    .pl-rev-card p { margin: 0; font-size: 0.86rem; line-height: 1.5; color: #33415C; overflow-wrap: anywhere; }

    /* Bloc final -- CTA rendez-vous */
    .pl-cta-section { background: var(--pl-soft); border: none; }
    .pl-cta-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
    .pl-cta-head b { display: block; font-size: 0.96rem; font-weight: 800; color: var(--pl-text); }
    .pl-cta-head span { display: block; font-size: 0.8rem; color: var(--pl-muted); font-weight: 600; margin-top: 2px; }

    /* Realisations recentes -- galerie de vraies photos technicien */
    .pl-port-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
    .pl-port-item {
      aspect-ratio: 1; border-radius: 12px; overflow: hidden; background: var(--pl-soft);
    }
    .pl-port-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
    .pl-port-empty { color: var(--pl-muted); font-size: 0.86rem; margin: 0; text-align: center; }

    /* Bouton de prise de rendez-vous */
    .pl-rdv-btn {
      display: flex; align-items: center; justify-content: center; gap: 9px;
      background: var(--pl-text); color: #fff; border: none; border-radius: 14px;
      padding: 15px 16px; font-size: 0.95rem; font-weight: 700; width: 100%; cursor: pointer;
    }
    .pl-rdv-btn svg { width: 19px; height: 19px; flex-shrink: 0; }

    [hidden] { display: none !important; }

    /* ---------- Bottom-sheet (avis) ---------- */
    .pl-sheet-overlay {
      position: fixed; inset: 0; background: rgba(11,27,58,.45); z-index: 300;
      opacity: 0; pointer-events: none; transition: opacity .2s;
    }
    .pl-sheet-overlay.open { opacity: 1; pointer-events: auto; }
    .pl-sheet {
      position: fixed; left: 0; right: 0; bottom: 0; z-index: 301;
      background: #fff; border-radius: 22px 22px 0 0; max-height: 88vh;
      display: flex; flex-direction: column;
      transform: translateY(100%); transition: transform .25s ease;
      max-width: 680px; margin: 0 auto;
    }
    .pl-sheet.open { transform: translateY(0); }
    .pl-sheet-handle { width: 40px; height: 4px; background: var(--pl-line); border-radius: 4px; margin: 10px auto 4px; flex-shrink: 0; }
    .pl-sheet-head {
      display: flex; align-items: center; justify-content: space-between; gap: 10px;
      padding: 8px 18px 12px; flex-shrink: 0; border-bottom: 1px solid var(--pl-line);
    }
    .pl-sheet-head h3 { margin: 0; font-size: 1.08rem; font-weight: 800; color: var(--pl-text); }
    .pl-sheet-close {
      width: 34px; height: 34px; border-radius: 50%; border: none; background: var(--pl-soft);
      color: var(--pl-text); display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0;
    }
    .pl-sheet-close svg { width: 18px; height: 18px; }
    .pl-sheet-body { padding: 16px 18px calc(18px + env(safe-area-inset-bottom)); overflow-y: auto; }

    /* ---------- Feuille "Laisser un avis" ---------- */
    .pl-sheet-review { max-height: 92vh; }
    .pl-rev-head {
      display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
      padding: 6px 18px 16px; flex-shrink: 0;
    }
    .pl-rev-head h3 { margin: 0 0 4px; font-size: 1.4rem; font-weight: 800; color: var(--pl-text); }
    .pl-rev-subtitle { margin: 0; font-size: 0.86rem; color: var(--pl-muted); font-weight: 500; }

    .pl-rev-tech {
      display: flex; align-items: flex-start; gap: 12px;
      background: var(--pl-soft); border-radius: 16px; padding: 14px; margin-bottom: 20px;
    }
    .pl-rev-tech .ava {
      width: 56px; height: 56px; border-radius: 50%; overflow: hidden; flex-shrink: 0;
      background: var(--pl-primary); color: #fff; display: flex; align-items: center;
      justify-content: center; font-weight: 800; font-size: 1rem;
    }
    .pl-rev-tech .ava img { width: 100%; height: 100%; object-fit: cover; }
    .pl-rev-tech .tx { min-width: 0; }
    .pl-rev-tech .name { display: flex; align-items: center; gap: 6px; font-weight: 800; font-size: 1.05rem; color: var(--pl-text); }
    .pl-rev-tech .name svg { width: 17px; height: 17px; color: var(--pl-primary); flex-shrink: 0; }
    .pl-rev-tech .role { font-size: 0.86rem; color: var(--pl-muted); font-weight: 600; margin: 2px 0 6px; }
    .pl-rev-tech .meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 0.78rem; color: var(--pl-muted); font-weight: 600; }
    .pl-rev-tech .meta span { display: flex; align-items: center; gap: 4px; }
    .pl-rev-tech .meta svg { width: 14px; height: 14px; flex-shrink: 0; }
    .pl-rev-tech .meta .sep { color: var(--pl-line); }

    .pl-rev-row { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 4px 10px; margin-bottom: 12px; }
    .pl-rev-label { font-size: 0.92rem; font-weight: 800; color: var(--pl-text); margin: 0; white-space: nowrap; }
    .pl-rev-label .req { color: #DC2626; }
    .pl-rev-tip { margin: 0; font-size: 0.78rem; color: var(--pl-muted); font-weight: 600; white-space: nowrap; }
    .pl-rev-stars { display: flex; justify-content: center; gap: 14px; margin-bottom: 10px; }
    .pl-rev-stars button {
      background: none; border: none; padding: 0; cursor: pointer; line-height: 0;
    }
    .pl-rev-stars svg { width: 40px; height: 40px; transition: transform .1s; }
    .pl-rev-stars button.on svg { transform: scale(1.08); }
    .pl-rev-hint-pill {
      display: block; width: fit-content; margin: 0 auto 20px; background: var(--pl-soft); color: var(--pl-primary);
      font-size: 0.84rem; font-weight: 700; padding: 6px 16px; border-radius: 999px;
    }

    .pl-rev-label ~ .pl-rev-label { margin-top: 4px; }
    .pl-rev-textarea {
      width: 100%; min-height: 130px; border: 1.5px solid var(--pl-line); border-radius: 14px;
      padding: 12px 14px; font-size: 0.9rem; font-family: inherit; color: var(--pl-text); resize: vertical;
      margin-top: 10px;
    }
    .pl-rev-textarea:focus { outline: none; border-color: var(--pl-primary); }
    .pl-rev-guest-name { min-height: 0; resize: none; margin-bottom: 18px; }
    .pl-rev-count { text-align: right; font-size: 0.76rem; color: var(--pl-muted); margin: 4px 0 18px; }

    .pl-rev-info {
      display: flex; align-items: flex-start; gap: 10px;
      background: var(--pl-soft); border-radius: 14px; padding: 14px; margin-bottom: 20px;
    }
    .pl-rev-info .ic {
      width: 26px; height: 26px; border-radius: 50%; background: var(--pl-primary); color: #fff; flex-shrink: 0;
      display: flex; align-items: center; justify-content: center;
    }
    .pl-rev-info .ic svg { width: 15px; height: 15px; }
    .pl-rev-info p { margin: 0; font-size: 0.84rem; color: var(--pl-text); font-weight: 500; line-height: 1.4; }

    .pl-rev-submit {
      width: 100%; background: var(--pl-primary); color: #fff; border: none; border-radius: 14px;
      padding: 16px; font-size: 0.96rem; font-weight: 800; cursor: pointer;
      display: flex; align-items: center; justify-content: center; gap: 10px;
      box-shadow: 0 10px 20px rgba(26,92,255,.28);
    }
    .pl-rev-submit:disabled { opacity: .55; cursor: not-allowed; box-shadow: none; }
    .pl-rev-submit svg { width: 19px; height: 19px; flex-shrink: 0; }
    .pl-rev-error { color: #DC2626; font-size: 0.84rem; font-weight: 700; margin: 0 0 12px; text-align: center; }

    .pl-rev-item { display: flex; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--pl-line); }
    .pl-rev-item:last-child { border-bottom: none; }
    .pl-rev-item .ava {
      width: 42px; height: 42px; border-radius: 50%; overflow: hidden; flex-shrink: 0;
      background: var(--pl-primary); color: #fff; display: flex; align-items: center;
      justify-content: center; font-weight: 800; font-size: 0.86rem;
    }
    .pl-rev-item .ava img { width: 100%; height: 100%; object-fit: cover; }
    .pl-rev-item .body { flex: 1; min-width: 0; }
    .pl-rev-item .head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
    .pl-rev-item .name { font-weight: 800; font-size: 0.9rem; color: var(--pl-text); }
    .pl-rev-item .ago { font-size: 0.76rem; color: var(--pl-muted); font-weight: 600; white-space: nowrap; flex-shrink: 0; }
    .pl-rev-item .stars { display: flex; gap: 2px; margin: 3px 0 6px; }
    .pl-rev-item .stars svg { width: 14px; height: 14px; }
    .pl-rev-item p { margin: 0 0 8px; font-size: 0.88rem; color: var(--pl-text); line-height: 1.45; }
    .pl-rev-item .photos { display: flex; gap: 8px; flex-wrap: wrap; }
    .pl-rev-item .photos img { width: 64px; height: 64px; border-radius: 10px; object-fit: cover; }
    .pl-rev-list-empty { text-align: center; color: var(--pl-muted); font-size: 0.88rem; padding: 20px 0; }

    /* ---------- Toast discret ---------- */
    .pl-toast {
      position: fixed; left: 50%; bottom: calc(20px + env(safe-area-inset-bottom));
      transform: translateX(-50%) translateY(8px); z-index: 200;
      background: rgba(11,27,58,.94); color: #fff; font-size: .82rem; font-weight: 600;
      padding: 10px 16px; border-radius: 12px; opacity: 0; pointer-events: none;
      transition: opacity .2s, transform .2s; white-space: nowrap;
    }
    .pl-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

    /* ---------- Desktop / tablette ---------- */
    @media (min-width: 720px) {
      .pl-wrap { padding: 24px 0 0; max-width: 760px; }
      .pl-actions { flex-direction: row; }
      .pl-btn { width: auto; flex: 1; }
      .pl-port-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
      .pl-sheet {
        max-width: 520px; left: 50%; right: auto; top: 50%; bottom: auto; margin: 0;
        border-radius: 22px; transform: translate(-50%, -46%); opacity: 0; pointer-events: none;
        transition: opacity .2s, transform .2s;
      }
      .pl-sheet.open { transform: translate(-50%, -50%); opacity: 1; pointer-events: auto; }
    }
    /* =====================================================================
       PROFIL TECHNICIEN PC (>= 1024px) : un seul bloc, alimente par les
       donnees du technicien (professional). Le mobile (.pl-mobile) est
       masque ici et reste strictement inchange en dessous de 1024px.
       ===================================================================== */
    .pcp { display: none; }
    @media (min-width: 1024px) {
      .pl-mobile { display: none; }
      body { background: #F4F7FC; }
      body main.page.pl-main { max-width: 1440px; padding: 14px 40px 64px; }
      .pcp { display: block; color: var(--pl-text); font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
      .pcp svg { max-width: none; height: auto; }

      .pcp-crumbs { display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 500; color: var(--pl-muted); margin: 6px 0 16px; padding-left: 26px; }
      .pcp-crumbs a { display: inline-flex; align-items: center; gap: 7px; color: var(--pl-primary); font-weight: 500; }
      .pcp-crumbs a:hover { text-decoration: underline; }
      .pcp-crumbs svg { width: 16px; height: 16px; flex-shrink: 0; }
      .pcp-crumbs .sep { color: #A7B3C6; width: 14px; height: 14px; }
      .pcp-crumbs > span { color: var(--pl-muted); }

      /* ---- Carte principale ---- */
      .pcp-hero {
        position: relative; overflow: hidden; min-height: 216px; border-radius: 20px;
        background: linear-gradient(100deg, #FFFFFF 0%, #F1F6FF 45%, #E6EFFD 100%);
        border: 1px solid #E3EAF6; box-shadow: 0 6px 24px rgba(15,42,90,.05);
      }
      .pcp-hero-photo { position: absolute; top: 0; right: 0; bottom: 0; width: 46%; }
      .pcp-hero-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 62% 20%; display: block; }
      .pcp-hero-photo::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, #F1F6FF 0%, rgba(241,246,255,.85) 14%, rgba(241,246,255,0) 52%); }
      .pcp-hero-body { position: relative; z-index: 2; display: flex; gap: 32px; align-items: flex-start; padding: 32px 40px 28px; max-width: 64%; }
      .pcp-ava-wrap { position: relative; flex-shrink: 0; }
      .pcp-ava { width: 108px; height: 108px; border-radius: 50%; overflow: hidden; background: #fff; border: 4px solid #fff; box-shadow: 0 6px 18px rgba(15,42,90,.14); display: flex; align-items: center; justify-content: center; }
      .pcp-ava img { width: 100%; height: 100%; object-fit: cover; display: block; }
      .pcp-ava-initials { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: var(--pl-primary); color: #fff; font-weight: 800; font-size: 2.4rem; letter-spacing: .02em; }
      .pcp-ava-dot { position: absolute; right: 6px; bottom: 6px; width: 20px; height: 20px; border-radius: 50%; background: var(--pl-green); border: 3px solid #fff; }
      .pcp-hero-main { min-width: 0; flex: 1; }
      .pcp-name-row { display: flex; align-items: center; flex-wrap: wrap; gap: 14px 22px; }
      .pcp-name { display: inline-flex; align-items: center; gap: 10px; margin: 0; font-size: 2rem; line-height: 1.15; font-weight: 800; letter-spacing: -.01em; }
      .pcp-name .check { width: 26px; height: 26px; color: var(--pl-primary); flex-shrink: 0; }
      .pcp-avail { display: inline-flex; align-items: center; gap: 8px; background: #DDF6E5; color: #15803D; font-weight: 700; font-size: 13.5px; padding: 8px 15px; border-radius: 999px; white-space: nowrap; }
      .pcp-avail svg { width: 15px; height: 15px; }
      .pcp-role { margin: 8px 0 0; font-size: 1.15rem; font-weight: 600; color: var(--pl-text); }
      .pcp-rating { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-weight: 800; font-size: 1rem; }
      .pcp-rating svg { width: 17px; height: 17px; fill: var(--pl-star); }
      .pcp-rating small { font-weight: 600; font-size: .86rem; color: var(--pl-muted); }
      .pcp-facts { list-style: none; display: flex; flex-wrap: wrap; gap: 14px 34px; margin: 20px 0 0; padding: 0; }
      .pcp-facts li { display: flex; align-items: center; gap: 12px; min-width: 0; }
      .pcp-fact-ic { width: 38px; height: 38px; border-radius: 50%; background: #E3ECFF; color: var(--pl-primary); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
      .pcp-fact-ic svg { width: 20px; height: 20px; }
      .pcp-fact-ic.green { background: #DDF6E5; color: #15803D; }
      .pcp-facts b { display: block; font-size: 14px; font-weight: 800; line-height: 1.3; }
      .pcp-facts span.s { display: block; font-size: 13px; color: var(--pl-muted); font-weight: 500; line-height: 1.3; }

      /* ---- Grille 2 colonnes ---- */
      .pcp-grid { display: grid; grid-template-columns: minmax(0, 1fr) clamp(340px, 33vw, 500px); gap: 22px; align-items: start; margin-top: 18px; }
      .pcp-main { min-width: 0; }
      .pcp-side { position: sticky; top: 84px; display: flex; flex-direction: column; gap: 18px; min-width: 0; }

      .pcp-tabs { display: flex; gap: 6px; background: #fff; border-radius: 14px 14px 0 0; padding: 0 20px; border-bottom: 1px solid #E3EAF6; margin-bottom: 16px; position: sticky; top: 64px; z-index: 5; }
      .pcp-tabs a { display: inline-flex; align-items: center; gap: 10px; padding: 18px 16px 16px; font-weight: 700; font-size: 15px; color: #33415C; border-bottom: 3px solid transparent; margin-bottom: -1px; }
      .pcp-tabs a svg { width: 20px; height: 20px; color: #4B5A75; }
      .pcp-tabs a:hover { color: var(--pl-primary); }
      .pcp-tabs a.active { color: var(--pl-primary); border-bottom-color: var(--pl-primary); }
      .pcp-tabs a.active svg { color: var(--pl-primary); }

      .pcp-card { background: #fff; border: 1px solid #E8EEF8; border-radius: 16px; padding: 24px 26px; box-shadow: 0 2px 10px rgba(15,42,90,.03); scroll-margin-top: 150px; }
      .pcp-main .pcp-card + .pcp-card { margin-top: 16px; }
      .pcp-card-head { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
      .pcp-card-ic { width: 34px; height: 34px; border-radius: 50%; background: #E9F0FF; color: var(--pl-primary); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
      .pcp-card-ic svg { width: 18px; height: 18px; }
      .pcp-card-head h2 { margin: 0; font-size: 1.28rem; font-weight: 800; letter-spacing: -.01em; }
      .pcp-about-text { margin: 0; font-size: 15.5px; line-height: 1.65; color: #4A5872; max-width: 760px; white-space: pre-line; }

      .pcp-svc-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 22px; }
      .pcp-svc { display: flex; align-items: center; gap: 14px; border: 1px solid #E3EAF6; border-radius: 12px; padding: 16px 18px; min-width: 0; }
      .pcp-svc .ck { width: 26px; height: 26px; border-radius: 50%; background: var(--pl-primary); color: #fff; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
      .pcp-svc .ck svg { width: 14px; height: 14px; }
      .pcp-svc b { display: block; font-size: 16px; font-weight: 800; line-height: 1.3; }
      .pcp-svc span.s { display: block; font-size: 13.5px; color: var(--pl-muted); line-height: 1.35; margin-top: 2px; }

      .pcp-works { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
      .pcp-work img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 12px; display: block; background: var(--pl-soft); }
      .pcp-work b { display: block; margin-top: 10px; font-size: 14px; font-weight: 800; line-height: 1.3; }
      .pcp-empty { margin: 0; color: var(--pl-muted); font-size: 15px; }

      .pcp-rev-top { display: flex; align-items: center; gap: 28px; flex-wrap: wrap; margin-bottom: 8px; }
      .pcp-rev-score { display: flex; align-items: center; gap: 16px; }
      .pcp-rev-score .big { font-size: 3rem; font-weight: 800; line-height: 1; }
      .pcp-rev-score .stars { display: flex; gap: 3px; }
      .pcp-rev-score .stars svg { width: 20px; height: 20px; }
      .pcp-rev-score .cnt { display: block; margin-top: 4px; font-size: 13.5px; color: var(--pl-muted); font-weight: 600; }
      .pcp-rev-list { margin-top: 6px; }
      .pcp-rev { display: flex; gap: 14px; padding: 16px 0; border-top: 1px solid #EDF1F8; }
      .pcp-rev .ava { width: 44px; height: 44px; border-radius: 50%; overflow: hidden; background: #E3ECFF; color: var(--pl-primary); font-weight: 800; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
      .pcp-rev .ava img { width: 100%; height: 100%; object-fit: cover; }
      .pcp-rev .hd { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
      .pcp-rev .nm { font-weight: 800; font-size: 15px; }
      .pcp-rev .ago { font-size: 13px; color: var(--pl-muted); }
      .pcp-rev .stars { display: flex; gap: 2px; margin-top: 3px; }
      .pcp-rev .stars svg { width: 15px; height: 15px; }
      .pcp-rev p { margin: 6px 0 0; font-size: 15px; line-height: 1.55; color: #33415C; }
      .pcp-rev-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 18px; }
      .pcp-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; border-radius: 12px; padding: 13px 22px; font-size: 15px; font-weight: 700; cursor: pointer; border: 1.6px solid var(--pl-primary); background: #fff; color: var(--pl-primary); }
      .pcp-btn svg { width: 18px; height: 18px; }
      .pcp-btn:hover { background: #F2F6FF; }
      .pcp-btn.solid { background: var(--pl-primary); color: #fff; }
      .pcp-btn.solid:hover { background: #1348D9; }

      /* ---- Colonne droite ---- */
      .pcp-actions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; padding: 18px; }
      .pcp-actions.single { grid-template-columns: minmax(0, 1fr); }
      .pcp-act { display: flex; align-items: center; justify-content: center; gap: 10px; border-radius: 12px; padding: 14px 10px; min-height: 70px; border: 1.6px solid var(--pl-primary); color: var(--pl-primary); background: #fff; }
      .pcp-act.primary { background: var(--pl-primary); color: #fff; box-shadow: 0 10px 22px rgba(26,92,255,.28); }
      .pcp-act svg { width: 26px; height: 26px; flex-shrink: 0; }
      .pcp-act .tx { text-align: left; min-width: 0; }
      .pcp-act b { display: block; font-size: 15px; font-weight: 800; line-height: 1.25; white-space: nowrap; }
      .pcp-act small { display: block; white-space: nowrap; font-size: 13px; font-weight: 500; opacity: .9; line-height: 1.25; }

      .pcp-info-card { padding: 22px 26px 8px; }
      .pcp-info-row { display: flex; align-items: flex-start; gap: 16px; padding: 12px 0; }
      .pcp-info-row .ic { width: 42px; height: 42px; border-radius: 50%; background: #E9F0FF; color: var(--pl-primary); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
      .pcp-info-row .ic svg { width: 21px; height: 21px; }
      .pcp-info-row .ic.green { background: #DDF6E5; color: #15803D; }
      .pcp-info-row .k { display: block; font-size: 14.5px; font-weight: 700; }
      .pcp-info-row .v { display: block; font-size: 15px; color: #33415C; line-height: 1.4; margin-top: 2px; }
      .pcp-info-row .v.ok { color: #15803D; font-weight: 800; }
      .pcp-info-row .s { display: block; font-size: 14px; color: var(--pl-muted); }

      .pcp-cta { padding: 22px 26px 24px; }
      .pcp-cta-head { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
      .pcp-cta-head b { display: block; font-size: 1.15rem; font-weight: 800; }
      .pcp-cta-head span.s { display: block; font-size: 14.5px; color: var(--pl-muted); margin-top: 2px; }
      .pcp-cta-btn { display: flex; align-items: center; justify-content: center; gap: 12px; width: 100%; background: #0B1B3A; color: #fff; border-radius: 12px; padding: 17px 18px; font-size: 16px; font-weight: 700; }
      .pcp-cta-btn:hover { background: #142A55; }
      .pcp-cta-btn svg { width: 20px; height: 20px; }
    }

    /* =================================================================
       PROFIL MOBILE (< 1024px) - maquette validee en octobre 2026.
       Classes pv-* : n'existent que dans .pl-mobile, masque sur ordinateur
       (voir @media (min-width: 1024px) plus haut) ; le profil PC (.pcp)
       n'est pas concerne.
       ================================================================= */
    @media (max-width: 1023px) {
      body { background: #F4F6FB; padding-bottom: 0; }
    }
    .pv { padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
    .pv-cover { height: 170px; position: relative; overflow: hidden;
      background: radial-gradient(120% 140% at 100% 0%, #3B82F6 0%, #1D4ED8 38%, #0B1B45 100%); }
    .pv-cover::after { content: ""; position: absolute; inset: 0; opacity: .12; pointer-events: none;
      background-image: radial-gradient(#fff 1.2px, transparent 1.2px); background-size: 18px 18px; }
    .pv-topbar { position: absolute; z-index: 2; left: 16px; right: 16px;
      top: max(14px, env(safe-area-inset-top)); display: flex; justify-content: space-between; }
    .pv-topbar-r { display: flex; gap: 10px; }
    .pv-ibtn { width: 40px; height: 40px; border: 0; border-radius: 50%; padding: 0; cursor: pointer;
      background: rgba(255,255,255,.16); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
      color: #fff; display: grid; place-items: center; }
    .pv-ibtn svg { width: 20px; height: 20px; }

    .pv-head { position: relative; margin: -64px 16px 0; padding: 0 18px 18px; background: #fff;
      border-radius: 22px; box-shadow: 0 10px 30px rgba(15,23,42,.08); text-align: center; }
    .pv-ava { position: relative; width: 104px; height: 104px; margin: 0 auto -34px; transform: translateY(-46px);
      border-radius: 50%; border: 5px solid #fff; background: linear-gradient(140deg, #3B82F6, #1E3A8A);
      box-shadow: 0 8px 20px rgba(29,78,216,.28); display: grid; place-items: center;
      color: #fff; font-size: 34px; font-weight: 800; }
    .pv-ava img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
    .pv-dot { position: absolute; right: 4px; bottom: 4px; width: 20px; height: 20px; border-radius: 50%;
      background: #22C55E; border: 3px solid #fff; }
    .pv-name { margin: 0; display: inline-flex; align-items: center; gap: 6px; font-size: 22px; font-weight: 800;
      letter-spacing: -.2px; color: var(--pl-text); line-height: 1.25; }
    .pv-check { width: 20px; height: 20px; flex-shrink: 0; }
    .pv-trade { margin: 3px 0 0; color: var(--pl-muted); font-size: 14.5px; font-weight: 600; }
    .pv-chips { display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
    .pv-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px;
      font-size: 12.5px; font-weight: 700; }
    .pv-chip svg { width: 14px; height: 14px; }
    .pv-chip i { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
    .pv-chip.prem { background: linear-gradient(90deg, #FFF4D6, #FFE7A8); color: #92590A; }
    .pv-chip.pro { background: #E8EFFF; color: #1D4ED8; }
    .pv-chip.dispo { background: #E9F9EF; color: #15803D; }
    .pv-chip.dispo i { background: #22C55E; }
    .pv-chip.rdv { background: #F1F5F9; color: #475569; }
    .pv-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 16px; padding-top: 14px;
      border-top: 1px solid #E8EDF5; }
    .pv-stat + .pv-stat { border-left: 1px solid #E8EDF5; }
    .pv-stat b { display: flex; align-items: center; justify-content: center; gap: 4px; font-size: 18px;
      font-weight: 800; color: var(--pl-text); }
    .pv-stat b svg { width: 16px; height: 16px; }
    .pv-stat span { display: block; margin-top: 2px; font-size: 12px; color: var(--pl-muted); font-weight: 600; }

    .pv-sec { margin: 14px 16px 0; padding: 16px 18px; background: #fff; border-radius: 20px;
      box-shadow: 0 1px 2px rgba(15,23,42,.04); }
    .pv-sec h2 { margin: 0; display: flex; align-items: center; justify-content: space-between; gap: 10px;
      font-size: 16.5px; font-weight: 800; color: var(--pl-text); }
    .pv-link { border: 0; background: none; padding: 4px 0; color: var(--pl-primary); font-size: 13px;
      font-weight: 700; cursor: pointer; }
    .pv-row { display: flex; align-items: center; gap: 12px; padding: 11px 0; }
    .pv-row + .pv-row { border-top: 1px solid #E8EDF5; }
    .pv-row b { display: block; font-size: 14.5px; color: var(--pl-text); }
    .pv-row small { font-size: 12.5px; color: var(--pl-muted); }
    .pv-ric { width: 38px; height: 38px; flex-shrink: 0; border-radius: 12px; background: #EEF3FF;
      color: #1D4ED8; display: grid; place-items: center; }
    .pv-ric svg { width: 19px; height: 19px; }
    .pv-ric.g { background: #E9F9EF; color: #16A34A; }
    .pv-ric.gold { background: #FFF4D6; color: #B7791F; }
    .pv-pills { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
    .pv-pill { display: inline-flex; align-items: center; gap: 7px; padding: 9px 13px; border-radius: 12px;
      background: #F4F7FD; border: 1px solid #E3EAF7; font-size: 13.5px; font-weight: 600; color: #1E293B; }
    .pv-pill svg { width: 16px; height: 16px; color: #1D4ED8; flex-shrink: 0; }
    .pv-sec .pl-port-grid { margin-top: 12px; }
    .pv-empty { margin-top: 12px; padding: 18px; border: 1.5px dashed #D6DFEE; border-radius: 16px;
      text-align: center; color: var(--pl-muted); font-size: 13px; }
    .pv-empty svg { display: block; width: 28px; height: 28px; margin: 0 auto 6px; color: #A5B4CF; }
    .pv-empty-text { margin: 10px 0 0; font-size: 13.5px; color: var(--pl-muted); }
    .pv-rate { text-align: left; }
    .pv-rate-top { display: flex; align-items: center; gap: 14px; margin: 12px 0; }
    .pv-rate .big { margin: 0; font-size: 40px; }
    .pv-rate .stars { justify-content: flex-start; margin: 0; }
    .pv-rate .stars svg { width: 17px; height: 17px; }
    .pv-rate .count { margin: 4px 0 0; font-size: 12.5px; }
    .pv-rdv { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
    .pv-rdv b { display: block; font-size: 14.5px; color: var(--pl-text); }
    .pv-rdv span { font-size: 12.5px; color: var(--pl-muted); }
    .pv-rdv-btn { display: inline-flex; align-items: center; gap: 4px; flex-shrink: 0; padding: 10px 14px;
      border-radius: 12px; background: #0B1B45; color: #fff !important; font-size: 13px; font-weight: 700; }
    .pv-rdv-btn svg { width: 16px; height: 16px; }

    .pv-bar { position: fixed; z-index: 40; left: 0; right: 0; bottom: 0; display: flex; gap: 10px;
      padding: 12px 16px calc(14px + env(safe-area-inset-bottom)); background: rgba(255,255,255,.96);
      border-top: 1px solid #E8EDF5; box-shadow: 0 -8px 24px rgba(15,23,42,.06); }
    .pv-call { width: 54px; height: 52px; flex-shrink: 0; border-radius: 16px; border: 1.5px solid #CFDBF3;
      background: #fff; color: #1D4ED8; display: grid; place-items: center; }
    .pv-call svg { width: 22px; height: 22px; }
    .pv-msg { flex: 1; height: 52px; border-radius: 16px; color: #fff !important; font-size: 15.5px; font-weight: 800;
      background: linear-gradient(180deg, #2563EB, #1D4ED8); box-shadow: 0 8px 18px rgba(37,99,235,.32);
      display: flex; align-items: center; justify-content: center; gap: 8px; }
    .pv-msg svg { width: 20px; height: 20px; }
  
    /* Abonnes : anneau aux couleurs du plan et couronne sur la photo (Premium violet et or, Pro bleu). */
    .pv-ava.t-premium img, .pv-ava.t-premium > span:first-child, .pcp-ava-wrap.t-premium .pcp-ava { box-shadow: 0 0 0 3px #fff, 0 0 0 6px #8B5CF6, 0 8px 22px rgba(109,40,217,.35); }
    .pv-ava.t-pro img, .pv-ava.t-pro > span:first-child, .pcp-ava-wrap.t-pro .pcp-ava { box-shadow: 0 0 0 3px #fff, 0 0 0 6px #1D5FE0, 0 8px 22px rgba(29,95,224,.28); }
    .pv-ava.t-premium::before, .pv-ava.t-pro::before, .pcp-ava-wrap.t-premium::before, .pcp-ava-wrap.t-pro::before {
      content: ''; position: absolute; z-index: 3; left: 50%; top: -14px; width: 30px; height: 30px; margin-left: -15px; border-radius: 50%;
      background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23F5A400' d='M2.5 8.5 7.6 12 12 5l4.4 7 5.1-3.5-1.8 10H4.3z'/%3E%3Crect fill='%23F5A400' x='4.5' y='20.3' width='15' height='2.2' rx='1.1'/%3E%3C/svg%3E") center / 18px no-repeat;
      box-shadow: 0 3px 8px rgba(0,0,0,.18); }
    .pv-ava.t-pro::before, .pcp-ava-wrap.t-pro::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%231D5FE0' d='M2.5 8.5 7.6 12 12 5l4.4 7 5.1-3.5-1.8 10H4.3z'/%3E%3Crect fill='%231D5FE0' x='4.5' y='20.3' width='15' height='2.2' rx='1.1'/%3E%3C/svg%3E"); }
    @media (prefers-reduced-motion: no-preference) {
      .pv-ava.t-premium::before, .pcp-ava-wrap.t-premium::before { animation: avCrown 3s ease-in-out infinite; }
      @keyframes avCrown { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-3px) rotate(-8deg); } }
    }

/* Avis verifies : badge sur chaque avis et rappel de la regle sous la section. */
.rv-verif { display: inline-flex; align-items: center; gap: 5px; margin: 4px 0 2px; padding: 3px 9px 3px 7px;
  border-radius: 999px; background: #E8F7EE; color: #12784A; font-size: 12px; font-weight: 700; line-height: 1.3; }
.rv-verif svg { width: 13px; height: 13px; flex-shrink: 0; }
.rv-note { display: flex; align-items: flex-start; gap: 8px; margin: 14px 0 0; padding: 10px 12px; border-radius: 12px;
  background: #F5F8FF; color: #475569; font-size: 13px; line-height: 1.45; }
.rv-note svg { width: 17px; height: 17px; flex-shrink: 0; margin-top: 1px; color: #155EEF; }
.pv-empty-text b, .pcp-empty b { color: #0F172A; }
/* « Laisser un avis » : vrai bouton avec une main (pouce leve), reconnaissable au premier coup d'oeil. */
.pv-link.rv-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border-radius: 999px;
  background: #EAF1FF; color: #1A5CFF; font-size: 14px; font-weight: 700; border: 1px solid #D3E1FF; }
.pv-link.rv-btn svg { width: 17px; height: 17px; flex-shrink: 0; }
.pv-link.rv-btn:active { transform: scale(.97); }
