{"id":3908,"date":"2026-05-22T23:11:13","date_gmt":"2026-05-22T22:11:13","guid":{"rendered":"https:\/\/pappaye.be\/?page_id=3908"},"modified":"2026-10-15T10:23:07","modified_gmt":"2026-10-15T09:23:07","slug":"myaccount","status":"publish","type":"page","link":"https:\/\/pappaye.be\/en\/myaccount\/","title":{"rendered":"myAccount"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3908\" class=\"elementor elementor-3908\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8cc408c e-flex e-con-boxed e-con e-parent\" data-id=\"8cc408c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a137c7b elementor-widget elementor-widget-html\" data-id=\"a137c7b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ============================================================\r\n     PAPPAYE \u2014 MON PROFIL (\/myaccount\/)\r\n     Bloc HTML autonome \u00e0 coller dans WordPress \/ Elementor\r\n     ============================================================ -->\r\n\r\n<style>\r\n  #ppe-myprofil * { box-sizing: border-box; margin: 0; padding: 0; }\r\n  #ppe-myprofil {\r\n    font-family: 'Roboto', sans-serif;\r\n    max-width: 680px;\r\n    margin: 0 auto;\r\n    padding: 8px;\r\n    color: #374151;\r\n  }\r\n  #ppe-myprofil .card {\r\n    background: #fff;\r\n    border-radius: 20px;\r\n    overflow: hidden;\r\n    box-shadow: 0 8px 48px rgba(15,23,42,.12), 0 1px 4px rgba(0,0,0,.06);\r\n  }\r\n  #ppe-myprofil .head {\r\n    background: linear-gradient(145deg, #ff7a18 0%, #54B435 100%);\r\n    padding: 44px 36px 36px;\r\n    text-align: center;\r\n    color: #fff;\r\n  }\r\n  #ppe-myprofil .head h2 {\r\n    font-family: 'Inter', sans-serif;\r\n    font-size: clamp(1.5rem, 4vw, 2rem);\r\n    margin-bottom: 8px;\r\n  }\r\n  #ppe-myprofil .head p { color: rgba(255,255,255,.92); }\r\n  #ppe-myprofil .head .avatar {\r\n    width: 72px;\r\n    height: 72px;\r\n    border-radius: 50%;\r\n    background: rgba(255,255,255,.22);\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    margin: 0 auto 18px;\r\n    font-family: 'Inter', sans-serif;\r\n    font-size: 1.8rem;\r\n    font-weight: 700;\r\n    color: #fff;\r\n    border: 3px solid rgba(255,255,255,.5);\r\n    user-select: none;\r\n  }\r\n  #ppe-myprofil .body { padding: 40px; }\r\n  @media (max-width: 540px) { #ppe-myprofil .body { padding: 24px; } }\r\n\r\n  \/* Section label *\/\r\n  #ppe-myprofil .section-label {\r\n    font-family: 'Inter', sans-serif;\r\n    font-size: .72rem;\r\n    font-weight: 700;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1.2px;\r\n    color: #ff7a18;\r\n    margin-bottom: 16px;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n  }\r\n  #ppe-myprofil .section-label::after { content: ''; flex: 1; height: 1px; background: #ffe4c7; }\r\n\r\n  \/* Info rows *\/\r\n  #ppe-myprofil .info-grid {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap: 16px;\r\n    margin-bottom: 6px;\r\n  }\r\n  @media (max-width: 560px) { #ppe-myprofil .info-grid { grid-template-columns: 1fr; } }\r\n  #ppe-myprofil .info-row {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 4px;\r\n    padding: 16px;\r\n    background: #f9fafb;\r\n    border-radius: 12px;\r\n    border: 1.5px solid #e5e7eb;\r\n    transition: .18s;\r\n  }\r\n  #ppe-myprofil .info-row:hover { border-color: #fdba74; background: #fffaf5; }\r\n  #ppe-myprofil .info-row .row-label {\r\n    font-size: .72rem;\r\n    font-weight: 700;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1px;\r\n    color: #9ca3af;\r\n  }\r\n  #ppe-myprofil .info-row .row-value {\r\n    font-size: .975rem;\r\n    font-weight: 600;\r\n    color: #111827;\r\n    word-break: break-word;\r\n  }\r\n  #ppe-myprofil .info-row .row-value.empty { color: #d1d5db; font-style: italic; font-weight: 400; }\r\n\r\n  \/* Status badge *\/\r\n  #ppe-myprofil .status-badge {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 6px;\r\n    padding: 4px 12px;\r\n    border-radius: 999px;\r\n    font-size: .8rem;\r\n    font-weight: 700;\r\n    font-family: 'Inter', sans-serif;\r\n  }\r\n  #ppe-myprofil .status-badge.complete { background: #dcfce7; color: #166534; }\r\n  #ppe-myprofil .status-badge.incomplete { background: #fff7ed; color: #9a3412; }\r\n  #ppe-myprofil .status-badge .dot { width: 7px; height: 7px; border-radius: 50%; }\r\n  #ppe-myprofil .status-badge.complete .dot { background: #22c55e; }\r\n  #ppe-myprofil .status-badge.incomplete .dot { background: #f97316; }\r\n\r\n  \/* Divider *\/\r\n  #ppe-myprofil .divider { border: none; border-top: 1px solid #f3f4f6; margin: 28px 0 22px; }\r\n\r\n  \/* Buttons *\/\r\n  #ppe-myprofil .btn-row { display: flex; gap: 12px; flex-wrap: wrap; }\r\n  #ppe-myprofil .btn {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 8px;\r\n    height: 50px;\r\n    padding: 0 24px;\r\n    border: none;\r\n    border-radius: 12px;\r\n    font-family: 'Inter', sans-serif;\r\n    font-size: .9rem;\r\n    font-weight: 700;\r\n    letter-spacing: .4px;\r\n    text-transform: uppercase;\r\n    cursor: pointer;\r\n    transition: .2s;\r\n    text-decoration: none;\r\n  }\r\n  #ppe-myprofil .btn-primary {\r\n    background: linear-gradient(145deg, #ff7a18, #54B435);\r\n    color: #fff;\r\n    box-shadow: 0 6px 20px rgba(255,122,24,.22);\r\n    flex: 1;\r\n    min-width: 180px;\r\n  }\r\n  #ppe-myprofil .btn-primary:hover { transform: translateY(-2px); opacity: .96; }\r\n  #ppe-myprofil .btn-logout {\r\n    background: #f9fafb;\r\n    color: #6b7280;\r\n    border: 1.5px solid #e5e7eb;\r\n    flex: 0 0 auto;\r\n  }\r\n  #ppe-myprofil .btn-logout:hover { background: #fef2f2; color: #ef4444; border-color: #fca5a5; }\r\n\r\n  \/* Alerts *\/\r\n  #ppe-myprofil .alert {\r\n    display: none;\r\n    margin-top: 18px;\r\n    border-radius: 12px;\r\n    padding: 18px 20px;\r\n    font-size: .9rem;\r\n    line-height: 1.65;\r\n  }\r\n  #ppe-myprofil .alert.show { display: block; }\r\n  #ppe-myprofil .alert-ko { background: #fff5f5; border: 1.5px solid #fca5a5; color: #7f1d1d; }\r\n  #ppe-myprofil .alert-ok { background: #fff7ed; border: 1.5px solid #fdba74; color: #9a3412; }\r\n  #ppe-myprofil .alert-head {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 10px;\r\n    font-family: 'Inter', sans-serif;\r\n    font-weight: 700;\r\n    margin-bottom: 6px;\r\n  }\r\n  #ppe-myprofil .alert-ok .alert-head { color: #c2410c; }\r\n  #ppe-myprofil .alert-ko .alert-head { color: #b91c1c; }\r\n\r\n  \/* Loading skeleton *\/\r\n  #ppe-myprofil .skeleton {\r\n    height: 20px;\r\n    border-radius: 6px;\r\n    background: linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%);\r\n    background-size: 200% 100%;\r\n    animation: ppe-shimmer 1.4s infinite;\r\n  }\r\n  @keyframes ppe-shimmer {\r\n    0%   { background-position: 200% 0; }\r\n    100% { background-position: -200% 0; }\r\n  }\r\n  #ppe-myprofil .loading-block { display: flex; flex-direction: column; gap: 14px; padding: 8px 0; }\r\n  #ppe-myprofil .loading-block .skeleton-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }\r\n  @media (max-width: 560px) { #ppe-myprofil .loading-block .skeleton-row { grid-template-columns: 1fr; } }\r\n  #ppe-myprofil .profile-content { display: none; }\r\n  #ppe-myprofil .profile-content.visible { display: block; }\r\n\r\n  \/* \u2500\u2500 Quota block \u2500\u2500 *\/\r\n  #ppe-myprofil .quota-block {\r\n    background: #fff7ed;\r\n    border: 1.5px solid #fdba74;\r\n    border-radius: 14px;\r\n    padding: 20px 22px;\r\n    margin-top: 24px;\r\n  }\r\n  #ppe-myprofil .quota-nums {\r\n    display: flex;\r\n    align-items: baseline;\r\n    gap: 6px;\r\n    margin-bottom: 10px;\r\n  }\r\n  #ppe-myprofil .quota-big {\r\n    font-family: 'Inter', sans-serif;\r\n    font-size: 2rem;\r\n    font-weight: 800;\r\n    color: #c2410c;\r\n    line-height: 1;\r\n  }\r\n  #ppe-myprofil .quota-max { font-size: .9rem; color: #9a3412; }\r\n  #ppe-myprofil .quota-bar-track {\r\n    height: 8px;\r\n    background: #fed7aa;\r\n    border-radius: 99px;\r\n    overflow: hidden;\r\n    margin-bottom: 12px;\r\n  }\r\n  #ppe-myprofil .quota-bar-fill {\r\n    height: 100%;\r\n    background: linear-gradient(90deg, #ff7a18, #ffb347);\r\n    border-radius: 99px;\r\n    transition: width .5s ease;\r\n  }\r\n  #ppe-myprofil .quota-stats { display: flex; gap: 20px; flex-wrap: wrap; }\r\n  #ppe-myprofil .quota-stat {\r\n    font-size: .82rem;\r\n    color: #9a3412;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 5px;\r\n  }\r\n  #ppe-myprofil .quota-stat strong { font-weight: 700; }\r\n\r\n  \/* \u2500\u2500 Dropzone \u2500\u2500 *\/\r\n  #ppe-myprofil .dropzone {\r\n    border: 2px dashed #ff7a18;\r\n    border-radius: 12px;\r\n    background: #fcfcb1;\r\n    padding: 32px 24px;\r\n    text-align: center;\r\n    cursor: pointer;\r\n    transition: border-color .18s, background .18s;\r\n    position: relative;\r\n  }\r\n  #ppe-myprofil .dropzone:hover,\r\n  #ppe-myprofil .dropzone.over { background: #fcfc51; }\r\n  #ppe-myprofil .dropzone.dz-err { border-color: #ef4444; background: #fff5f5; }\r\n  #ppe-myprofil .dropzone input[type=file] {\r\n    position: absolute;\r\n    inset: 0;\r\n    opacity: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    cursor: pointer;\r\n  }\r\n  #ppe-myprofil .dz-icon {\r\n    width: 48px; height: 48px;\r\n    margin: 0 auto 14px;\r\n    background: #f7f2dc;\r\n    border-radius: 12px;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n  }\r\n  #ppe-myprofil .dz-title {\r\n    font-family: 'Inter', sans-serif;\r\n    font-size: .95rem;\r\n    font-weight: 600;\r\n    color: #374151;\r\n    margin-bottom: 4px;\r\n  }\r\n  #ppe-myprofil .dz-sub { font-size: .82rem; color: #9ca3af; }\r\n\r\n  #ppe-myprofil .file-list { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }\r\n  #ppe-myprofil .file-item {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 12px;\r\n    background: #fffaf0;\r\n    border: 1px solid #ffe0b2;\r\n    border-radius: 10px;\r\n    padding: 12px 16px;\r\n  }\r\n  #ppe-myprofil .file-item .fi-icon {\r\n    flex-shrink: 0;\r\n    width: 36px; height: 36px;\r\n    background: #fff3e0;\r\n    border-radius: 8px;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n  }\r\n  #ppe-myprofil .file-item .fi-name {\r\n    flex: 1;\r\n    font-size: .875rem;\r\n    font-weight: 500;\r\n    color: #111827;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    white-space: nowrap;\r\n  }\r\n  #ppe-myprofil .file-item .fi-size { font-size: .78rem; color: #9ca3af; white-space: nowrap; }\r\n  #ppe-myprofil .file-item .fi-del {\r\n    flex-shrink: 0;\r\n    background: none;\r\n    border: none;\r\n    cursor: pointer;\r\n    width: 28px; height: 28px;\r\n    border-radius: 6px;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    color: #d1d5db;\r\n    transition: color .15s, background .15s;\r\n  }\r\n  #ppe-myprofil .file-item .fi-del:hover { color: #ef4444; background: #fee2e2; }\r\n\r\n  #ppe-myprofil .ferr {\r\n    display: none;\r\n    font-size: .78rem;\r\n    color: #ef4444;\r\n    margin-top: 6px;\r\n    padding-left: 2px;\r\n  }\r\n  #ppe-myprofil .ferr.show { display: block; }\r\n\r\n  #ppe-myprofil .btn-submit {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 10px;\r\n    width: 100%;\r\n    height: 56px;\r\n    background: linear-gradient(145deg, #ff7a18, #ffb347);\r\n    color: #fff;\r\n    font-family: 'Inter', sans-serif;\r\n    font-size: 1rem;\r\n    font-weight: 700;\r\n    letter-spacing: .6px;\r\n    text-transform: uppercase;\r\n    border: none;\r\n    border-radius: 14px;\r\n    cursor: pointer;\r\n    transition: opacity .2s, transform .15s, box-shadow .2s;\r\n    box-shadow: 0 6px 25px rgba(255,122,24,.4);\r\n    margin-top: 20px;\r\n  }\r\n  #ppe-myprofil .btn-submit:hover:not(:disabled) {\r\n    opacity: .93;\r\n    transform: translateY(-2px);\r\n    box-shadow: 0 10px 30px rgba(255,122,24,.5);\r\n  }\r\n  #ppe-myprofil .btn-submit:disabled { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; }\r\n\r\n  #ppe-myprofil .spinner {\r\n    display: none;\r\n    width: 20px; height: 20px;\r\n    border: 2.5px solid rgba(255,255,255,.3);\r\n    border-top-color: #fff;\r\n    border-radius: 50%;\r\n    animation: ppe-spin .7s linear infinite;\r\n  }\r\n  @keyframes ppe-spin { to { transform: rotate(360deg); } }\r\n\r\n  #ppe-myprofil .incomplete-notice {\r\n    background: #fff7ed;\r\n    border: 1.5px solid #fdba74;\r\n    border-radius: 12px;\r\n    padding: 18px 20px;\r\n    display: flex;\r\n    gap: 12px;\r\n    align-items: flex-start;\r\n    font-size: .9rem;\r\n    color: #9a3412;\r\n    line-height: 1.5;\r\n  }\r\n  #ppe-myprofil .incomplete-notice svg { flex-shrink: 0; margin-top: 2px; }\r\n\r\n  \/* \u2500\u2500 Poll modal (sondage avant envoi) \u2500\u2500 *\/\r\n  #ppe-poll-overlay {\r\n    display: none;\r\n    position: fixed;\r\n    inset: 0;\r\n    background: rgba(15,23,42,.55);\r\n    z-index: 9999;\r\n    align-items: center;\r\n    justify-content: center;\r\n    padding: 16px;\r\n  }\r\n  #ppe-poll-overlay.show { display: flex; }\r\n  #ppe-poll-modal {\r\n    background: #fff;\r\n    border-radius: 18px;\r\n    max-width: 420px;\r\n    width: 100%;\r\n    padding: 32px 28px;\r\n    text-align: center;\r\n    box-shadow: 0 20px 60px rgba(15,23,42,.3);\r\n    font-family: 'Roboto', sans-serif;\r\n  }\r\n  #ppe-poll-modal .poll-icon {\r\n    width: 56px; height: 56px;\r\n    margin: 0 auto 18px;\r\n    border-radius: 50%;\r\n    background: linear-gradient(145deg, #ff7a18 0%, #54B435 100%);\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n  }\r\n  #ppe-poll-modal h3 {\r\n    font-family: 'Inter', sans-serif;\r\n    font-size: 1.15rem;\r\n    color: #111827;\r\n    margin-bottom: 24px;\r\n    line-height: 1.4;\r\n  }\r\n  #ppe-poll-modal .poll-answers {\r\n    display: flex;\r\n    flex-direction: column;\r\n    gap: 10px;\r\n  }\r\n  #ppe-poll-modal .poll-answers.poll-answers-row {\r\n    flex-direction: row;\r\n    gap: 12px;\r\n  }\r\n  #ppe-poll-modal .poll-btn {\r\n    flex: 1;\r\n    min-height: 50px;\r\n    padding: 10px 16px;\r\n    border: none;\r\n    border-radius: 12px;\r\n    font-family: 'Inter', sans-serif;\r\n    font-size: .95rem;\r\n    font-weight: 700;\r\n    letter-spacing: .4px;\r\n    cursor: pointer;\r\n    transition: .2s;\r\n    color: #fff;\r\n    background: linear-gradient(145deg, #ff7a18, #ff9d4d);\r\n  }\r\n  #ppe-poll-modal .poll-btn:hover:not(:disabled) { transform: translateY(-2px); opacity: .95; }\r\n  #ppe-poll-modal .poll-btn:disabled { opacity: .55; cursor: not-allowed; }\r\n<\/style>\r\n\r\n<div id=\"ppe-myprofil\">\r\n  <div class=\"card\">\r\n    <div class=\"head\">\r\n      <div class=\"avatar\" id=\"ppe-avatar\">P<\/div>\r\n      <h2 id=\"ppe-head-name\">Mon Profil<\/h2>\r\n      <p id=\"ppe-head-email\">Chargement en cours\u2026<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"body\">\r\n      <!-- Loading skeleton -->\r\n      <div id=\"ppe-loading\" class=\"loading-block\">\r\n        <div class=\"skeleton-row\">\r\n          <div class=\"skeleton\" style=\"height:70px;border-radius:12px;\"><\/div>\r\n          <div class=\"skeleton\" style=\"height:70px;border-radius:12px;\"><\/div>\r\n        <\/div>\r\n        <div class=\"skeleton-row\">\r\n          <div class=\"skeleton\" style=\"height:70px;border-radius:12px;\"><\/div>\r\n          <div class=\"skeleton\" style=\"height:70px;border-radius:12px;\"><\/div>\r\n        <\/div>\r\n        <div class=\"skeleton\" style=\"height:100px;border-radius:12px;margin-top:8px;\"><\/div>\r\n        <div class=\"skeleton\" style=\"height:130px;border-radius:12px;\"><\/div>\r\n      <\/div>\r\n\r\n      <!-- Profile content (shown once loaded) -->\r\n      <div id=\"ppe-content\" class=\"profile-content\">\r\n\r\n        <div class=\"section-label\">Informations du profil<\/div>\r\n\r\n        <div class=\"info-grid\">\r\n          <div class=\"info-row\">\r\n            <span class=\"row-label\">Email<\/span>\r\n            <span class=\"row-value\" id=\"ppe-val-email\"><\/span>\r\n          <\/div>\r\n          <div class=\"info-row\">\r\n            <span class=\"row-label\">Statut<\/span>\r\n            <span class=\"row-value\" id=\"ppe-val-status\"><\/span>\r\n          <\/div>\r\n          <div class=\"info-row\">\r\n            <span class=\"row-label\">Institution<\/span>\r\n            <span class=\"row-value\" id=\"ppe-val-institution\"><\/span>\r\n          <\/div>\r\n          <div class=\"info-row\">\r\n            <span class=\"row-label\">Facult\u00e9<\/span>\r\n            <span class=\"row-value\" id=\"ppe-val-faculty\"><\/span>\r\n          <\/div>\r\n          <div class=\"info-row\">\r\n            <span class=\"row-label\">\u00c2ge<\/span>\r\n            <span class=\"row-value\" id=\"ppe-val-age\"><\/span>\r\n          <\/div>\r\n          <div class=\"info-row\">\r\n            <span class=\"row-label\">R\u00f4le<\/span>\r\n            <span class=\"row-value\" id=\"ppe-val-role\"><\/span>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- Quota block -->\r\n        <div class=\"quota-block\" id=\"ppe-quota-block\">\r\n          <div class=\"section-label\">Mon quota d'impression<\/div>\r\n          <div class=\"quota-nums\">\r\n            <span class=\"quota-big\" id=\"ppe-quota-remaining\">\u2014<\/span>\r\n            <span class=\"quota-max\">pages restantes \/ 200<\/span>\r\n          <\/div>\r\n          <div class=\"quota-bar-track\">\r\n            <div class=\"quota-bar-fill\" id=\"ppe-quota-bar\" style=\"width:100%;\"><\/div>\r\n          <\/div>\r\n          <div class=\"quota-stats\">\r\n            <span class=\"quota-stat\">\r\n              <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#c2410c\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"\/>\r\n              <\/svg>\r\n              <strong id=\"ppe-quota-used\">\u2014<\/strong>&nbsp;pages utilis\u00e9es ce mois\r\n            <\/span>\r\n            <span class=\"quota-stat\">\r\n              <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#c2410c\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <path d=\"M18 3H6v5h12V3zM4 10a2 2 0 0 0-2 2v5h4v-2h12v2h4v-5a2 2 0 0 0-2-2H4zm14 2a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM6 17v4h12v-4H6z\"\/>\r\n              <\/svg>\r\n              <strong id=\"ppe-quota-total\">\u2014<\/strong>&nbsp;pages imprim\u00e9es au total\r\n            <\/span>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <hr class=\"divider\">\r\n\r\n        <!-- Print section -->\r\n        <div id=\"ppe-print-section\">\r\n          <div class=\"section-label\">Imprimer un document<\/div>\r\n\r\n          <!-- Shown if profile not complete -->\r\n          <div class=\"incomplete-notice\" id=\"ppe-incomplete-notice\" style=\"display:none;\">\r\n            <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#c2410c\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n              <circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/>\r\n            <\/svg>\r\n            <span>Compl\u00e8te ton profil (institution, facult\u00e9, \u00e2ge) avant de soumettre des documents.<\/span>\r\n          <\/div>\r\n\r\n          <!-- Dropzone (shown if profile complete) -->\r\n          <div id=\"ppe-dropzone-wrap\" style=\"display:none;\">\r\n            <div class=\"dropzone\" id=\"ppe-dz\" role=\"button\" tabindex=\"0\" aria-label=\"Zone de d\u00e9p\u00f4t \u2014 glisse tes PDFs ici\">\r\n              <input type=\"file\" id=\"ppe-files\" accept=\".pdf,application\/pdf\" multiple tabindex=\"-1\" \/>\r\n              <div class=\"dz-icon\">\r\n                <svg width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#54B435\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                  <polyline points=\"16 16 12 12 8 16\"\/><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"\/>\r\n                  <path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"\/>\r\n                <\/svg>\r\n              <\/div>\r\n              <div class=\"dz-title\">Glisse tes PDFs ici ou clique pour parcourir<\/div>\r\n              <div class=\"dz-sub\">PDF uniquement &bull; 50 MB max par fichier<\/div>\r\n            <\/div>\r\n            <span class=\"ferr\" id=\"ppe-files-err\">Ajoute au moins un fichier PDF.<\/span>\r\n            <div class=\"file-list\" id=\"ppe-flist\"><\/div>\r\n\r\n            <button type=\"button\" class=\"btn-submit\" id=\"ppe-btn-submit\">\r\n              <div class=\"spinner\" id=\"ppe-spinner\"><\/div>\r\n              <svg id=\"ppe-btn-ico\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"\/>\r\n                <polygon points=\"22 2 15 22 11 13 2 9 22 2\"\/>\r\n              <\/svg>\r\n              <span id=\"ppe-btn-label\">Envoyer mes documents<\/span>\r\n            <\/button>\r\n\r\n            <div class=\"alert alert-ok\" id=\"ppe-submit-ok\" role=\"alert\">\r\n              <div class=\"alert-head\">\r\n                <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#c2410c\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                  <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"\/><polyline points=\"22 4 12 14.01 9 11.01\"\/>\r\n                <\/svg>\r\n                Demande envoy\u00e9e avec succ\u00e8s !\r\n              <\/div>\r\n              <div id=\"ppe-submit-ok-body\"><\/div>\r\n            <\/div>\r\n\r\n            <div class=\"alert alert-ko\" id=\"ppe-submit-ko\" role=\"alert\">\r\n              <div class=\"alert-head\">\r\n                <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#b91c1c\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                  <circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/>\r\n                <\/svg>\r\n                Une erreur est survenue\r\n              <\/div>\r\n              <div id=\"ppe-submit-ko-body\"><\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <hr class=\"divider\">\r\n\r\n        <div class=\"btn-row\" id=\"ppe-btn-row\">\r\n          <button type=\"button\" class=\"btn btn-logout\" id=\"ppe-btn-logout\">\r\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n              <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"><\/path>\r\n              <polyline points=\"16 17 21 12 16 7\"><\/polyline>\r\n              <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\"><\/line>\r\n            <\/svg>\r\n            Se d\u00e9connecter\r\n          <\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- Error box -->\r\n      <div class=\"alert alert-ko\" id=\"ppe-ko\" role=\"alert\">\r\n        <div class=\"alert-head\">\r\n          <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#b91c1c\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n            <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\r\n            <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"><\/line>\r\n            <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"><\/line>\r\n          <\/svg>\r\n          Une erreur est survenue\r\n        <\/div>\r\n        <div id=\"ppe-ko-body\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- Poll modal (sondage \u00e0 choix multiples avant envoi) -->\r\n<div id=\"ppe-poll-overlay\">\r\n  <div id=\"ppe-poll-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"ppe-poll-question\">\r\n    <div class=\"poll-icon\">\r\n      <svg width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n        <path d=\"M9 18h6\"><\/path>\r\n        <path d=\"M10 22h4\"><\/path>\r\n        <path d=\"M12 2a7 7 0 0 0-4 12.7V17h8v-2.3A7 7 0 0 0 12 2z\"><\/path>\r\n      <\/svg>\r\n    <\/div>\r\n    <h3 id=\"ppe-poll-question\">Question<\/h3>\r\n    <div class=\"poll-answers\" id=\"ppe-poll-answers\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script type=\"module\">\r\n  import { initializeApp } from 'https:\/\/www.gstatic.com\/firebasejs\/10.12.5\/firebase-app.js';\r\n  import { getAuth, onAuthStateChanged, signOut, sendEmailVerification } from 'https:\/\/www.gstatic.com\/firebasejs\/10.12.5\/firebase-auth.js';\r\n\r\n  const ACCOUNT_SERVICE_URL = 'https:\/\/account-service-ptgjpgcm7q-ew.a.run.app';\r\n  const INTAKE_URL = 'https:\/\/intake-service-test-ptgjpgcm7q-ew.a.run.app';\r\n  const STEP2_URL = '\/profil-etudiant-step2\/';\r\n  const LOGIN_URL = '\/connexion\/';\r\n\r\n  const INSTITUTION_LABELS = { uclouvain: 'UCLouvain', vinci: 'Vinci', ephec: 'EPHEC', helha: 'HELHa' };\r\n  const ROLE_LABELS = { student: 'Etudiant', admin: 'Administrateur' };\r\n\r\n  const ERR = {\r\n    email_not_verified: 'V\u00e9rifie ton adresse email (lien re\u00e7u par mail) avant d\\'imprimer.',\r\n    unauthorized: 'Session expir\u00e9e, reconnecte-toi.',\r\n    not_allowed: 'Ce compte n\\'est pas autoris\u00e9 sur la version de test.',\r\n    invalid_email_format: 'Format d\\'email invalide.',\r\n    invalid_domain: 'Utilise ton adresse \u00e9tudiante (@student.* ou @etudiant.*).',\r\n    invalid_faculty: 'Facult\u00e9 non reconnue.',\r\n    invalid_institution: 'Institution non reconnue.',\r\n    invalid_age: '\u00c2ge invalide (16 \u2013 99 ans).',\r\n    invalid_file_type: 'Seuls les fichiers PDF sont accept\u00e9s.',\r\n    file_too_large: 'Un fichier d\u00e9passe la limite de 50 MB.',\r\n    empty_file: 'Un fichier est vide.',\r\n    no_files: 'Aucun fichier s\u00e9lectionn\u00e9.',\r\n    quota_exceeded: 'Quota d\u00e9pass\u00e9 (limite 200 pages).',\r\n    rate_limited: 'Trop de soumissions. R\u00e9essaie dans une heure.',\r\n    payload_too_large: 'Fichiers trop volumineux.',\r\n  };\r\n\r\n  const firebaseApp = initializeApp({\r\n    apiKey: 'AIzaSyDq-Tj0upfcyD2l8ta0cL-3J75zoNGqE-I',\r\n    authDomain: 'pappaye-e6ff0.firebaseapp.com',\r\n    projectId: 'pappaye-e6ff0',\r\n    storageBucket: 'pappaye-e6ff0.firebasestorage.app',\r\n    messagingSenderId: '707692637016',\r\n    appId: '1:707692637016:web:a9cc3dbecb8ffbb047d32d',\r\n    measurementId: 'G-06XSGEGF81',\r\n  });\r\n\r\n  const auth = getAuth(firebaseApp);\r\n\r\n  let currentProfile = null;\r\n  let files = [];\r\n  let fid = 0;\r\n  let currentPoll = null;\r\n\r\n  function loadPoll(faculty) {\r\n    var url = INTAKE_URL + '\/api\/v1\/poll\/random';\r\n    if (faculty) {\r\n      url += '?faculty=' + encodeURIComponent(faculty);\r\n    }\r\n    fetch(url)\r\n      .then(function (r) { return r.ok ? r.json() : null; })\r\n      .then(function (d) {\r\n        if (d && d.id && Array.isArray(d.options) && d.options.length > 0) {\r\n          currentPoll = { id: d.id, question: d.question, options: d.options };\r\n        } else {\r\n          currentPoll = null;\r\n        }\r\n      })\r\n      .catch(function () { \/* pas de sondage si le service est indisponible *\/ });\r\n  }\r\n  loadPoll();\r\n\r\n  function showPollModal(onAnswer) {\r\n    if (!currentPoll) { onAnswer(null); return; }\r\n\r\n    document.getElementById('ppe-poll-question').textContent = currentPoll.question;\r\n    const overlay = document.getElementById('ppe-poll-overlay');\r\n    const answersContainer = document.getElementById('ppe-poll-answers');\r\n    answersContainer.innerHTML = '';\r\n    answersContainer.classList.toggle('poll-answers-row', currentPoll.options.length <= 2);\r\n\r\n    const listeners = [];\r\n    function finish(answer) {\r\n      overlay.classList.remove('show');\r\n      listeners.forEach(function (l) { l.btn.removeEventListener('click', l.handler); });\r\n      onAnswer(answer);\r\n    }\r\n\r\n    currentPoll.options.forEach(function (optionText) {\r\n      const btn = document.createElement('button');\r\n      btn.type = 'button';\r\n      btn.className = 'poll-btn';\r\n      btn.textContent = optionText;\r\n      function handler() { finish(optionText); }\r\n      btn.addEventListener('click', handler);\r\n      listeners.push({ btn: btn, handler: handler });\r\n      answersContainer.appendChild(btn);\r\n    });\r\n\r\n    overlay.classList.add('show');\r\n  }\r\n\r\n  function accountApiUrl(path) {\r\n    return ACCOUNT_SERVICE_URL.replace(\/\\\/$\/, '') + path;\r\n  }\r\n\r\n  function showError(message) {\r\n    document.getElementById('ppe-loading').style.display = 'none';\r\n    document.getElementById('ppe-content').classList.remove('visible');\r\n    document.getElementById('ppe-ko-body').textContent = message;\r\n    document.getElementById('ppe-ko').classList.add('show');\r\n  }\r\n\r\n  function extractErrorMessage(data, fallback) {\r\n    if (!data) return fallback;\r\n    if (typeof data === 'string') return data;\r\n    if (data.message) return data.message;\r\n    if (data.detail) {\r\n      if (typeof data.detail === 'string') return data.detail;\r\n      if (data.detail.message) return data.detail.message;\r\n      if (data.detail.reason) return data.detail.reason;\r\n    }\r\n    if (data.error) return data.error;\r\n    return fallback;\r\n  }\r\n\r\n  function getInitial(email) {\r\n    if (!email) return 'P';\r\n    return ((email.split('@')[0] || '')[0] || 'P').toUpperCase();\r\n  }\r\n\r\n  function updateQuotaDisplay(remaining, max) {\r\n    const MAX = max || 200;\r\n    const used = MAX - remaining;\r\n    const pct = Math.max(0, Math.min(100, (remaining \/ MAX) * 100));\r\n    document.getElementById('ppe-quota-remaining').textContent = remaining;\r\n    document.getElementById('ppe-quota-bar').style.width = pct + '%';\r\n    document.getElementById('ppe-quota-used').textContent = used;\r\n  }\r\n\r\n  async function loadQuota() {\r\n    if (!auth.currentUser) return;\r\n    try {\r\n      \/\/ L'email est d\u00e9duit du token c\u00f4t\u00e9 serveur : on n'envoie plus que l'ID token.\r\n      const idToken = await auth.currentUser.getIdToken(true);\r\n      const r = await fetch(INTAKE_URL + '\/api\/v1\/quota', {\r\n        headers: { 'Authorization': 'Bearer ' + idToken },\r\n      });\r\n      if (!r.ok) return;\r\n      const d = await r.json();\r\n      if (typeof d.pages_remaining !== 'number') return;\r\n\r\n      const max = d.max_pages_per_user || 200;\r\n      updateQuotaDisplay(d.pages_remaining, max);\r\n      document.getElementById('ppe-quota-total').textContent = d.pages_consumed || 0;\r\n      document.getElementById('ppe-quota-block').querySelector('.quota-max').textContent =\r\n        'pages restantes \/ ' + max;\r\n    } catch (e) {\r\n      document.getElementById('ppe-quota-remaining').textContent = '?';\r\n      document.getElementById('ppe-quota-used').textContent = '?';\r\n      document.getElementById('ppe-quota-total').textContent = '?';\r\n    }\r\n  }\r\n\r\n  function renderProfile(data) {\r\n    const profile = data.profile || {};\r\n    const identity = data.identity || {};\r\n    const needsCompletion = Boolean(data.needs_completion);\r\n\r\n    const email = profile.email || identity.email || '';\r\n    const institution = profile.institution || null;\r\n    const faculty = profile.faculty || null;\r\n    const age = typeof profile.age === 'number' ? profile.age : null;\r\n    const role = profile.role || 'student';\r\n\r\n    currentProfile = { email, institution, faculty, age };\r\n\r\n    \/\/ Recharge le sondage une fois la fili\u00e8re de l'\u00e9tudiant connue, pour\r\n    \/\/ appliquer le ciblage par fili\u00e8re (sinon la question \"Toutes les\r\n    \/\/ fili\u00e8res\" charg\u00e9e avant le profil resterait affich\u00e9e par d\u00e9faut).\r\n    if (faculty) {\r\n      loadPoll(faculty);\r\n    }\r\n\r\n    \/\/ Header\r\n    document.getElementById('ppe-avatar').textContent = getInitial(email);\r\n    document.getElementById('ppe-head-name').textContent = email.split('@')[0] || 'Mon Profil';\r\n    document.getElementById('ppe-head-email').textContent = email;\r\n\r\n    \/\/ Email\r\n    const emailEl = document.getElementById('ppe-val-email');\r\n    emailEl.textContent = email || '\u2014';\r\n    if (!email) emailEl.classList.add('empty');\r\n\r\n    \/\/ Status badge\r\n    const statusEl = document.getElementById('ppe-val-status');\r\n    statusEl.innerHTML = needsCompletion\r\n      ? '<span class=\"status-badge incomplete\"><span class=\"dot\"><\/span>A compl\u00e9ter<\/span>'\r\n      : '<span class=\"status-badge complete\"><span class=\"dot\"><\/span>Profil compl\u00e9t\u00e9<\/span>';\r\n\r\n    \/\/ Institution\r\n    const instEl = document.getElementById('ppe-val-institution');\r\n    if (institution) {\r\n      instEl.textContent = INSTITUTION_LABELS[institution] || institution;\r\n    } else {\r\n      instEl.textContent = 'Non renseign\u00e9e';\r\n      instEl.classList.add('empty');\r\n    }\r\n\r\n    \/\/ Faculty\r\n    const facEl = document.getElementById('ppe-val-faculty');\r\n    if (faculty) {\r\n      facEl.textContent = faculty;\r\n    } else {\r\n      facEl.textContent = 'Non renseign\u00e9e';\r\n      facEl.classList.add('empty');\r\n    }\r\n\r\n    \/\/ Age\r\n    const ageEl = document.getElementById('ppe-val-age');\r\n    if (age !== null) {\r\n      ageEl.textContent = age + ' ans';\r\n    } else {\r\n      ageEl.textContent = 'Non renseign\u00e9';\r\n      ageEl.classList.add('empty');\r\n    }\r\n\r\n    document.getElementById('ppe-val-role').textContent = ROLE_LABELS[role] || role;\r\n\r\n    \/\/ Print section\r\n    if (needsCompletion) {\r\n      document.getElementById('ppe-incomplete-notice').style.display = 'flex';\r\n    } else {\r\n      document.getElementById('ppe-dropzone-wrap').style.display = 'block';\r\n      setupDropzone();\r\n    }\r\n\r\n    \/\/ Complete \/ edit profile button\r\n    const btnRow = document.getElementById('ppe-btn-row');\r\n    const btnEdit = document.createElement('button');\r\n    btnEdit.type = 'button';\r\n    btnEdit.className = 'btn btn-primary';\r\n    btnEdit.innerHTML =\r\n      '<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">' +\r\n      '<path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"><\/path>' +\r\n      '<path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"><\/path>' +\r\n      '<\/svg>' + (needsCompletion ? 'Compl\u00e9ter mon profil' : 'Modifier mon profil');\r\n    btnEdit.addEventListener('click', function () {\r\n      window.location.href = STEP2_URL;\r\n    });\r\n    btnRow.insertBefore(btnEdit, btnRow.firstChild);\r\n\r\n    document.getElementById('ppe-loading').style.display = 'none';\r\n    document.getElementById('ppe-content').classList.add('visible');\r\n  }\r\n\r\n  let dropzoneSetup = false;\r\n  function setupDropzone() {\r\n    if (dropzoneSetup) return;\r\n    dropzoneSetup = true;\r\n\r\n    const dz = document.getElementById('ppe-dz');\r\n    const fileInp = document.getElementById('ppe-files');\r\n    const flist = document.getElementById('ppe-flist');\r\n    const btn = document.getElementById('ppe-btn-submit');\r\n    const spinner = document.getElementById('ppe-spinner');\r\n    const btnIco = document.getElementById('ppe-btn-ico');\r\n    const btnLbl = document.getElementById('ppe-btn-label');\r\n\r\n    dz.addEventListener('dragover', function (e) { e.preventDefault(); dz.classList.add('over'); });\r\n    dz.addEventListener('dragleave', function () { dz.classList.remove('over'); });\r\n    dz.addEventListener('drop', function (e) {\r\n      e.preventDefault();\r\n      dz.classList.remove('over');\r\n      addFiles(e.dataTransfer.files);\r\n    });\r\n    dz.addEventListener('keydown', function (e) {\r\n      if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); fileInp.click(); }\r\n    });\r\n    fileInp.addEventListener('change', function () {\r\n      addFiles(fileInp.files);\r\n      fileInp.value = '';\r\n    });\r\n\r\n    function addFiles(col) {\r\n      Array.from(col).forEach(function (f) {\r\n        if (!f.name.toLowerCase().endsWith('.pdf')) {\r\n          showFileErr('Fichier ignor\u00e9 (non PDF) : ' + f.name); return;\r\n        }\r\n        if (f.size > 50 * 1024 * 1024) {\r\n          showFileErr('Trop volumineux (max 50 MB) : ' + f.name); return;\r\n        }\r\n        if (files.some(function (x) { return x.f.name === f.name; })) return;\r\n        files.push({ f: f, id: ++fid });\r\n      });\r\n      renderFiles();\r\n      clearFileErr();\r\n    }\r\n\r\n    function renderFiles() {\r\n      flist.innerHTML = '';\r\n      files.forEach(function (item) {\r\n        const d = document.createElement('div');\r\n        d.className = 'file-item';\r\n        d.innerHTML =\r\n          '<div class=\"fi-icon\">' +\r\n            '<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#379237\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">' +\r\n              '<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/>' +\r\n              '<polyline points=\"14 2 14 8 20 8\"\/>' +\r\n            '<\/svg>' +\r\n          '<\/div>' +\r\n          '<span class=\"fi-name\" title=\"' + esc(item.f.name) + '\">' + esc(item.f.name) + '<\/span>' +\r\n          '<span class=\"fi-size\">' + fmtSize(item.f.size) + '<\/span>' +\r\n          '<button type=\"button\" class=\"fi-del\" data-id=\"' + item.id + '\" aria-label=\"Supprimer\">' +\r\n            '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>' +\r\n          '<\/button>';\r\n        flist.appendChild(d);\r\n      });\r\n      flist.querySelectorAll('.fi-del').forEach(function (b) {\r\n        b.addEventListener('click', function () {\r\n          const id = parseInt(b.getAttribute('data-id'), 10);\r\n          files = files.filter(function (x) { return x.id !== id; });\r\n          renderFiles();\r\n        });\r\n      });\r\n    }\r\n\r\n    function showFileErr(msg) {\r\n      const el = document.getElementById('ppe-files-err');\r\n      el.textContent = msg;\r\n      el.classList.add('show');\r\n      dz.classList.add('dz-err');\r\n    }\r\n    function clearFileErr() {\r\n      document.getElementById('ppe-files-err').classList.remove('show');\r\n      dz.classList.remove('dz-err');\r\n    }\r\n\r\n    btn.addEventListener('click', function () {\r\n      document.getElementById('ppe-submit-ok').classList.remove('show');\r\n      document.getElementById('ppe-submit-ko').classList.remove('show');\r\n\r\n      if (files.length === 0) {\r\n        showFileErr('Ajoute au moins un fichier PDF.');\r\n        return;\r\n      }\r\n\r\n      \/\/ Sondage obligatoire avant envoi (si une question active existe)\r\n      if (currentPoll && currentPoll.id) {\r\n        showPollModal(function (answer) { doSubmit(answer); });\r\n      } else {\r\n        doSubmit(null);\r\n      }\r\n    });\r\n\r\n    async function doSubmit(pollAnswer) {\r\n      btn.disabled = true;\r\n      spinner.style.display = 'block';\r\n      btnIco.style.display = 'none';\r\n      btnLbl.textContent = 'Envoi en cours\u2026';\r\n\r\n      try {\r\n        const fd = new FormData();\r\n        fd.append('institution', currentProfile.institution);\r\n        fd.append('faculty', currentProfile.faculty);\r\n        fd.append('age', String(currentProfile.age));\r\n        files.forEach(function (x) { fd.append('files', x.f, x.f.name); });\r\n        if (currentPoll && currentPoll.id && pollAnswer) {\r\n          fd.append('question_id', currentPoll.id);\r\n          fd.append('answer', pollAnswer);\r\n        }\r\n\r\n        \/\/ ID token frais (claim email_verified \u00e0 jour) : le serveur refuse l'impression sans email v\u00e9rifi\u00e9.\r\n        const idToken = await auth.currentUser.getIdToken(true);\r\n        const r = await fetch(INTAKE_URL + '\/api\/v1\/submit', {\r\n          method: 'POST',\r\n          headers: { 'Authorization': 'Bearer ' + idToken },\r\n          body: fd,\r\n        });\r\n        const d = await r.json().catch(function () { return {}; });\r\n\r\n        if (r.status === 202) {\r\n          const det = d.details || {};\r\n          const p = det.pages_consumed || '?';\r\n          const rem = typeof det.pages_remaining === 'number' ? det.pages_remaining : '?';\r\n          document.getElementById('ppe-submit-ok-body').innerHTML =\r\n            'Tes documents ont bien \u00e9t\u00e9 re\u00e7us. Tu recevras un <strong>email de confirmation<\/strong> sous peu.<br><br>' +\r\n            '<strong>' + p + ' pages<\/strong> consomm\u00e9es &nbsp;&bull;&nbsp; <strong>' + rem + ' pages<\/strong> restantes.';\r\n          document.getElementById('ppe-submit-ok').classList.add('show');\r\n          document.getElementById('ppe-submit-ok').scrollIntoView({ behavior: 'smooth', block: 'nearest' });\r\n          if (typeof rem === 'number') updateQuotaDisplay(rem, null);\r\n          files = [];\r\n          renderFiles();\r\n        } else {\r\n          const reason = d.error || d.detail || 'unknown';\r\n          let msg = ERR[reason] || ('Erreur inattendue (' + reason + ').');\r\n          if (r.status === 422 && typeof d.remaining_pages === 'number') {\r\n            msg += ' Il te reste <strong>' + d.remaining_pages + ' pages<\/strong> disponibles.';\r\n          }\r\n          document.getElementById('ppe-submit-ko-body').innerHTML = msg;\r\n          document.getElementById('ppe-submit-ko').classList.add('show');\r\n          document.getElementById('ppe-submit-ko').scrollIntoView({ behavior: 'smooth', block: 'nearest' });\r\n        }\r\n      } catch (err) {\r\n        document.getElementById('ppe-submit-ko-body').innerHTML =\r\n          'Impossible de joindre le serveur. V\u00e9rifie ta connexion et r\u00e9essaie.' +\r\n          (err && err.message ? '<br><small style=\"opacity:.6\">' + esc(err.message) + '<\/small>' : '');\r\n        document.getElementById('ppe-submit-ko').classList.add('show');\r\n        document.getElementById('ppe-submit-ko').scrollIntoView({ behavior: 'smooth', block: 'nearest' });\r\n      } finally {\r\n        btn.disabled = false;\r\n        spinner.style.display = 'none';\r\n        btnIco.style.display = 'inline';\r\n        btnLbl.textContent = 'Envoyer mes documents';\r\n      }\r\n    }\r\n  }\r\n\r\n  async function loadProfile(user) {\r\n    const idToken = await user.getIdToken(true);\r\n    const response = await fetch(accountApiUrl('\/api\/v1\/me'), {\r\n      headers: { 'Authorization': 'Bearer ' + idToken },\r\n    });\r\n    const data = await response.json().catch(function () { return {}; });\r\n    if (!response.ok) {\r\n      throw new Error(extractErrorMessage(data, 'Impossible de charger ton profil.'));\r\n    }\r\n    return data;\r\n  }\r\n\r\n  document.getElementById('ppe-btn-logout').addEventListener('click', function () {\r\n    signOut(auth)\r\n      .then(function () { window.location.href = LOGIN_URL; })\r\n      .catch(function (error) {\r\n        console.error('Logout error:', error);\r\n        showError('Erreur lors de la d\u00e9connexion. R\u00e9essaie.');\r\n      });\r\n  });\r\n\r\n  function showUnverifiedBanner(user) {\r\n    const printSection = document.getElementById('ppe-print-section');\r\n    const banner = document.createElement('div');\r\n    banner.id = 'ppe-unverified-banner';\r\n    banner.style.cssText = 'background:#fff7ed;border:1.5px solid #fdba74;border-radius:12px;padding:18px 20px;display:flex;gap:14px;align-items:flex-start;font-size:.9rem;color:#9a3412;line-height:1.5;margin-bottom:0;';\r\n    banner.innerHTML =\r\n      '<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#c2410c\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"flex-shrink:0;margin-top:2px\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg>' +\r\n      '<div><strong>Email non v\u00e9rifi\u00e9.<\/strong> V\u00e9rifie ta bo\u00eete mail et clique sur le lien de confirmation avant de pouvoir imprimer.<br>' +\r\n      '<button id=\"ppe-resend-verification\" type=\"button\" style=\"margin-top:10px;height:36px;padding:0 16px;border:none;border-radius:8px;background:linear-gradient(145deg,#ff7a18,#54B435);color:#fff;font-family:Inter,sans-serif;font-size:.82rem;font-weight:700;cursor:pointer;\">Renvoyer l\\'email de v\u00e9rification<\/button>' +\r\n '<button id=\"ppe-check-verification\" type=\"button\" style=\"margin:10px 0 0 8px;height:36px;padding:0 16px;border:1.5px solid #fdba74;border-radius:8px;background:#fff;color:#9a3412;font-family:Inter,sans-serif;font-size:.82rem;font-weight:700;cursor:pointer;\">J\\'ai cliqu\u00e9 sur le lien<\/button>' +\r\n      '<span id=\"ppe-resend-msg\" style=\"display:none;margin-left:10px;font-size:.82rem;color:#166534;font-weight:600;\"><\/span>' +\r\n      '<\/div>';\r\n    printSection.replaceWith(banner);\r\n\r\n    document.getElementById('ppe-check-verification').addEventListener('click', async function () {\r\n      const msg = document.getElementById('ppe-resend-msg');\r\n      try {\r\n        await user.reload();\r\n        if (auth.currentUser && auth.currentUser.emailVerified) {\r\n          window.location.reload();\r\n          return;\r\n        }\r\n        msg.textContent = 'Ton email n\\'est pas encore v\u00e9rifi\u00e9.';\r\n      } catch (err) {\r\n        msg.textContent = 'Erreur de v\u00e9rification, r\u00e9essaie.';\r\n      }\r\n      msg.style.color = '#b91c1c';\r\n      msg.style.display = 'inline';\r\n    });\r\n\r\n    document.getElementById('ppe-resend-verification').addEventListener('click', function () {\r\n      const btn = this;\r\n      const msg = document.getElementById('ppe-resend-msg');\r\n      btn.disabled = true;\r\n      btn.textContent = 'Envoi\u2026';\r\n      sendEmailVerification(user)\r\n        .then(function () {\r\n          msg.textContent = 'Email envoy\u00e9 !';\r\n          msg.style.display = 'inline';\r\n          btn.textContent = 'Envoy\u00e9 \u2713';\r\n        })\r\n        .catch(function (err) {\r\n          msg.textContent = err.code === 'auth\/too-many-requests' ? 'Trop de tentatives, r\u00e9essaie plus tard.' : 'Erreur lors de l\\'envoi.';\r\n          msg.style.color = '#b91c1c';\r\n          msg.style.display = 'inline';\r\n          btn.disabled = false;\r\n          btn.textContent = 'Renvoyer l\\'email de v\u00e9rification';\r\n        });\r\n    });\r\n  }\r\n\r\n  onAuthStateChanged(auth, function (user) {\r\n    if (!user) {\r\n      window.location.href = LOGIN_URL;\r\n      return;\r\n    }\r\n\r\n    loadProfile(user)\r\n      .then(function (data) {\r\n        renderProfile(data);\r\n        if (!user.emailVerified) {\r\n          showUnverifiedBanner(user);\r\n        }\r\n        if (user.emailVerified) {\r\n          loadQuota();\r\n        }\r\n      })\r\n      .catch(function (error) {\r\n        console.error('Profile load error:', error);\r\n        showError(error.message || 'Impossible de charger ton profil.');\r\n      });\r\n  });\r\n\r\n  function fmtSize(b) {\r\n    if (b < 1024) return b + ' o';\r\n    if (b < 1048576) return (b \/ 1024).toFixed(0) + ' Ko';\r\n    return (b \/ 1048576).toFixed(1) + ' Mo';\r\n  }\r\n\r\n  function esc(s) {\r\n    return String(s).replace(\/&\/g, '&amp;').replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;').replace(\/\"\/g, '&quot;');\r\n  }\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>P Mon Profil Chargement en cours\u2026 Informations du profil Email Statut Institution Facult\u00e9 \u00c2ge R\u00f4le Mon quota d&rsquo;impression \u2014 pages [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-3908","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"P Mon Profil Chargement en cours\u2026 Informations du profil Email Statut Institution Facult\u00e9 \u00c2ge R\u00f4le Mon quota d&#039;impression \u2014 pages restantes \/ 200 \u2014 pages utilis\u00e9es ce mois \u2014 pages imprim\u00e9es au total Imprimer un document Compl\u00e8te ton profil (institution, facult\u00e9, \u00e2ge) avant de soumettre des documents. Glisse tes PDFs ici ou clique pour parcourir PDF uniquement\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/pappaye.be\/en\/myaccount\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_GB\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Pappaye - Impression gratuite pout \u00e9tudiants\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"myAccount - Pappaye\" \/>\n\t\t<meta property=\"og:description\" content=\"P Mon Profil Chargement en cours\u2026 Informations du profil Email Statut Institution Facult\u00e9 \u00c2ge R\u00f4le Mon quota d&#039;impression \u2014 pages restantes \/ 200 \u2014 pages utilis\u00e9es ce mois \u2014 pages imprim\u00e9es au total Imprimer un document Compl\u00e8te ton profil (institution, facult\u00e9, \u00e2ge) avant de soumettre des documents. Glisse tes PDFs ici ou clique pour parcourir PDF uniquement\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/pappaye.be\/en\/myaccount\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/pappaye.be\/wp-content\/uploads\/2025\/09\/Unknown-removebg-preview.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/pappaye.be\/wp-content\/uploads\/2025\/09\/Unknown-removebg-preview.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-05-22T22:11:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-15T09:23:07+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"myAccount - Pappaye\" \/>\n\t\t<meta name=\"twitter:description\" content=\"P Mon Profil Chargement en cours\u2026 Informations du profil Email Statut Institution Facult\u00e9 \u00c2ge R\u00f4le Mon quota d&#039;impression \u2014 pages restantes \/ 200 \u2014 pages utilis\u00e9es ce mois \u2014 pages imprim\u00e9es au total Imprimer un document Compl\u00e8te ton profil (institution, facult\u00e9, \u00e2ge) avant de soumettre des documents. Glisse tes PDFs ici ou clique pour parcourir PDF uniquement\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/pappaye.be\/wp-content\/uploads\/2025\/09\/Unknown-removebg-preview.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/myaccount\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/pappaye.be\\\/en\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/myaccount\\\/#listItem\",\"name\":\"myAccount\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/myaccount\\\/#listItem\",\"position\":2,\"name\":\"myAccount\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/#organization\",\"name\":\"Pappaye\",\"description\":\"Impression gratuite pout \\u00e9tudiants\",\"url\":\"https:\\\/\\\/pappaye.be\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/pappaye.be\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Unknown-removebg-preview.png\",\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/myaccount\\\/#organizationLogo\",\"width\":500,\"height\":500},\"image\":{\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/myaccount\\\/#organizationLogo\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/myaccount\\\/#webpage\",\"url\":\"https:\\\/\\\/pappaye.be\\\/en\\\/myaccount\\\/\",\"name\":\"myAccount - Pappaye\",\"description\":\"P Mon Profil Chargement en cours\\u2026 Informations du profil Email Statut Institution Facult\\u00e9 \\u00c2ge R\\u00f4le Mon quota d'impression \\u2014 pages restantes \\\/ 200 \\u2014 pages utilis\\u00e9es ce mois \\u2014 pages imprim\\u00e9es au total Imprimer un document Compl\\u00e8te ton profil (institution, facult\\u00e9, \\u00e2ge) avant de soumettre des documents. Glisse tes PDFs ici ou clique pour parcourir PDF uniquement\",\"inLanguage\":\"en-GB\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/myaccount\\\/#breadcrumblist\"},\"datePublished\":\"2026-05-22T23:11:13+01:00\",\"dateModified\":\"2026-10-15T10:23:07+01:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/pappaye.be\\\/en\\\/\",\"name\":\"Pappaye\",\"description\":\"Impression gratuite pout \\u00e9tudiants\",\"inLanguage\":\"en-GB\",\"publisher\":{\"@id\":\"https:\\\/\\\/pappaye.be\\\/en\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"myAccount - Pappaye","description":"P Mon Profil Chargement en cours\u2026 Informations du profil Email Statut Institution Facult\u00e9 \u00c2ge R\u00f4le Mon quota d'impression \u2014 pages restantes \/ 200 \u2014 pages utilis\u00e9es ce mois \u2014 pages imprim\u00e9es au total Imprimer un document Compl\u00e8te ton profil (institution, facult\u00e9, \u00e2ge) avant de soumettre des documents. Glisse tes PDFs ici ou clique pour parcourir PDF uniquement","canonical_url":"https:\/\/pappaye.be\/en\/myaccount\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/pappaye.be\/en\/myaccount\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/pappaye.be\/en\/#listItem","position":1,"name":"Home","item":"https:\/\/pappaye.be\/en\/","nextItem":{"@type":"ListItem","@id":"https:\/\/pappaye.be\/en\/myaccount\/#listItem","name":"myAccount"}},{"@type":"ListItem","@id":"https:\/\/pappaye.be\/en\/myaccount\/#listItem","position":2,"name":"myAccount","previousItem":{"@type":"ListItem","@id":"https:\/\/pappaye.be\/en\/#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/pappaye.be\/en\/#organization","name":"Pappaye","description":"Impression gratuite pout \u00e9tudiants","url":"https:\/\/pappaye.be\/en\/","logo":{"@type":"ImageObject","url":"https:\/\/pappaye.be\/wp-content\/uploads\/2025\/09\/Unknown-removebg-preview.png","@id":"https:\/\/pappaye.be\/en\/myaccount\/#organizationLogo","width":500,"height":500},"image":{"@id":"https:\/\/pappaye.be\/en\/myaccount\/#organizationLogo"}},{"@type":"WebPage","@id":"https:\/\/pappaye.be\/en\/myaccount\/#webpage","url":"https:\/\/pappaye.be\/en\/myaccount\/","name":"myAccount - Pappaye","description":"P Mon Profil Chargement en cours\u2026 Informations du profil Email Statut Institution Facult\u00e9 \u00c2ge R\u00f4le Mon quota d'impression \u2014 pages restantes \/ 200 \u2014 pages utilis\u00e9es ce mois \u2014 pages imprim\u00e9es au total Imprimer un document Compl\u00e8te ton profil (institution, facult\u00e9, \u00e2ge) avant de soumettre des documents. Glisse tes PDFs ici ou clique pour parcourir PDF uniquement","inLanguage":"en-GB","isPartOf":{"@id":"https:\/\/pappaye.be\/en\/#website"},"breadcrumb":{"@id":"https:\/\/pappaye.be\/en\/myaccount\/#breadcrumblist"},"datePublished":"2026-05-22T23:11:13+01:00","dateModified":"2026-10-15T10:23:07+01:00"},{"@type":"WebSite","@id":"https:\/\/pappaye.be\/en\/#website","url":"https:\/\/pappaye.be\/en\/","name":"Pappaye","description":"Impression gratuite pout \u00e9tudiants","inLanguage":"en-GB","publisher":{"@id":"https:\/\/pappaye.be\/en\/#organization"}}]},"og:locale":"en_GB","og:site_name":"Pappaye - Impression gratuite pout \u00e9tudiants","og:type":"article","og:title":"myAccount - Pappaye","og:description":"P Mon Profil Chargement en cours\u2026 Informations du profil Email Statut Institution Facult\u00e9 \u00c2ge R\u00f4le Mon quota d'impression \u2014 pages restantes \/ 200 \u2014 pages utilis\u00e9es ce mois \u2014 pages imprim\u00e9es au total Imprimer un document Compl\u00e8te ton profil (institution, facult\u00e9, \u00e2ge) avant de soumettre des documents. Glisse tes PDFs ici ou clique pour parcourir PDF uniquement","og:url":"https:\/\/pappaye.be\/en\/myaccount\/","og:image":"https:\/\/pappaye.be\/wp-content\/uploads\/2025\/09\/Unknown-removebg-preview.png","og:image:secure_url":"https:\/\/pappaye.be\/wp-content\/uploads\/2025\/09\/Unknown-removebg-preview.png","article:published_time":"2026-05-22T22:11:13+00:00","article:modified_time":"2026-10-15T09:23:07+00:00","twitter:card":"summary_large_image","twitter:title":"myAccount - Pappaye","twitter:description":"P Mon Profil Chargement en cours\u2026 Informations du profil Email Statut Institution Facult\u00e9 \u00c2ge R\u00f4le Mon quota d'impression \u2014 pages restantes \/ 200 \u2014 pages utilis\u00e9es ce mois \u2014 pages imprim\u00e9es au total Imprimer un document Compl\u00e8te ton profil (institution, facult\u00e9, \u00e2ge) avant de soumettre des documents. Glisse tes PDFs ici ou clique pour parcourir PDF uniquement","twitter:image":"https:\/\/pappaye.be\/wp-content\/uploads\/2025\/09\/Unknown-removebg-preview.png"},"aioseo_meta_data":{"post_id":"3908","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":[],"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-05-22 22:11:14","updated":"2026-10-15 09:32:07","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/pappaye.be\/en\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tmyAccount\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/pappaye.be\/en\/"},{"label":"myAccount","link":"https:\/\/pappaye.be\/en\/myaccount\/"}],"_links":{"self":[{"href":"https:\/\/pappaye.be\/en\/wp-json\/wp\/v2\/pages\/3908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pappaye.be\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pappaye.be\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pappaye.be\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pappaye.be\/en\/wp-json\/wp\/v2\/comments?post=3908"}],"version-history":[{"count":34,"href":"https:\/\/pappaye.be\/en\/wp-json\/wp\/v2\/pages\/3908\/revisions"}],"predecessor-version":[{"id":4868,"href":"https:\/\/pappaye.be\/en\/wp-json\/wp\/v2\/pages\/3908\/revisions\/4868"}],"wp:attachment":[{"href":"https:\/\/pappaye.be\/en\/wp-json\/wp\/v2\/media?parent=3908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}