:root{color-scheme:light;--anchor:#5d0a14;--anchor-deep:#39050d;--coral:#fe7e80;--sand:#fee8b9;--harmony:#426242;--sky:#bde5fe;--ink:#24171a;--cream:#fffaf5;--line:rgba(93,10,20,.16);--shadow:0 18px 50px rgba(57,5,13,.1);font-family:"DM Sans",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--cream);font-size:16px;line-height:1.55}*{box-sizing:border-box}body{margin:0;min-height:100vh}.skip-link{position:absolute;left:-10000px;top:12px;padding:10px 14px;background:var(--sand);color:var(--anchor);border-radius:8px}.skip-link:focus{left:12px;z-index:2}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 max(22px,calc((100vw - 1080px)/2));border-bottom:1px solid var(--line);background:#fffaf5}.brand{font-size:1.65rem;font-weight:800;letter-spacing:-.06em;text-decoration:none;color:var(--anchor)}.brand span{color:#bc5957}.topbar p{margin:0;color:#715a5e;font-size:.9rem}
.topbar-right{display:flex;align-items:center;gap:16px}
.topbar-link{color:var(--anchor);text-decoration:none;font-weight:650;font-size:.92rem;padding:8px 14px;border-radius:99px;background:var(--sand)}
.topbar-link:hover{background:#f7dca4}.page-shell{width:min(100% - 36px,1080px);margin:clamp(34px,7vw,76px) auto;min-height:calc(100vh - 220px)}h1,h2,h3,p{margin-top:0}h1{margin-bottom:12px;color:var(--anchor);font-size:clamp(2.2rem,5vw,3.8rem);letter-spacing:-.045em;line-height:1.05}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-weight:700;font-size:.76rem;color:var(--anchor);margin-bottom:14px}.eyebrow span{display:inline-block;margin-left:8px;padding:3px 8px;border-radius:99px;background:var(--sand);font-size:.7rem;letter-spacing:.04em}.intro{color:#624d51;max-width:660px}.panel{width:min(100%,480px);margin:0 auto;padding:clamp(24px,5vw,42px);background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}#dashboard>.panel{width:100%;margin:28px 0 0}form{display:grid;gap:10px;margin-top:26px}label{font-weight:650;font-size:.93rem}input,select{min-height:48px;width:100%;padding:10px 12px;border:1px solid rgba(57,5,13,.28);border-radius:10px;background:#fff;color:var(--ink)}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid var(--coral);outline-offset:3px}.button{min-height:44px;padding:10px 17px;border:0;border-radius:999px;font:inherit;font-weight:700;cursor:pointer}.button-primary{margin-top:8px;background:var(--anchor);color:#fff}.button-outline{border:1px solid var(--line);background:#fff;color:var(--anchor)}.button:disabled{opacity:.6;cursor:wait}.small-note{margin:22px 0 0;color:#715a5e;font-size:.86rem}.message{min-height:1.55em;margin:12px 0 0;color:var(--anchor);font-weight:600}.message:empty{display:none}.dashboard-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.dashboard-heading .button{flex:0 0 auto}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:16px;margin:28px 0 8px;background:#fff;border:1px solid var(--line);border-radius:16px}.toolbar label{margin-left:4px}.toolbar select{width:auto;min-width:200px}.toolbar .count{margin-left:auto;color:#715a5e;font-size:.9rem}.request-list{display:grid;gap:14px;margin-top:18px}.request-card{padding:22px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 5px 20px rgba(57,5,13,.045)}.request-top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.request-type{margin-bottom:6px;color:var(--anchor);font-weight:800}.request-card h2{margin:0 0 4px;font-size:1.25rem;letter-spacing:-.02em}.request-date,.request-meta{color:#715a5e;font-size:.91rem}.request-details{display:grid;gap:5px;margin-top:16px;overflow-wrap:anywhere}.request-message{margin-top:13px;padding:12px 14px;border-radius:10px;background:#fff8e9;white-space:pre-wrap;overflow-wrap:anywhere}.status-control{display:grid;gap:5px;min-width:170px}.status-control label{font-size:.77rem;text-transform:uppercase;letter-spacing:.06em;color:#715a5e}.status-control select{min-height:42px}.empty-state{margin:38px auto;text-align:center;color:#715a5e}footer{padding:24px max(22px,calc((100vw - 1080px)/2));border-top:1px solid var(--line);color:#715a5e;font-size:.88rem}footer a{color:var(--anchor);font-weight:700}@media(max-width:620px){.topbar{height:64px}.page-shell{width:min(100% - 24px,1080px);margin:28px auto}.dashboard-heading{display:grid;gap:16px}.dashboard-heading .button{justify-self:start}.toolbar{align-items:stretch}.toolbar label{align-self:center}.toolbar select{flex:1;min-width:150px}.toolbar .button{width:100%}.toolbar .count{width:100%;margin:0 4px}.request-top{display:grid}.status-control{width:100%}.request-card{padding:17px}}

/* === Pawkedog admin: grouped, coloured, responsive cards + toast === */
.request-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:16px;margin-top:18px;align-items:start}
.request-card{padding:22px;border:1px solid rgba(93,10,20,.12);border-left-width:6px;border-radius:16px;background:#fff;box-shadow:0 5px 20px rgba(57,5,13,.045);transition:transform 150ms ease,box-shadow 150ms ease}
.request-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(57,5,13,.09)}
.request-top{flex-wrap:wrap}
/* Group colours (charte) : a saturated accent per group, a lighter tint per card */
footer{text-align:center;padding:26px 18px 40px;color:#715a5e;font-size:.9rem}
footer a{color:var(--anchor);text-decoration:none;font-weight:650}
footer a:hover{text-decoration:underline}

/* --- Personnes : table fusionnée (comptes + profils) --- */
.admin-table tbody tr.person-row{cursor:pointer}
.admin-table tbody tr.person-row:hover{background:#f3f7f3}
.col-person{font-weight:700}
.dog-cell{vertical-align:middle;white-space:normal}
.dog-chip{cursor:pointer}
.dog-chip:hover{background:#a9d8f7}
.role-manage-btn{white-space:nowrap}

/* --- Modal « Gérer les rôles » --- */
.role-modal-list{display:grid;gap:10px;margin:16px 0}
.role-modal-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--cream)}
.role-modal-row .role-btn{white-space:nowrap}
.role-modal-status{min-height:0}
@media(max-width:560px){
  .topbar-right{gap:10px}
  .role-modal-row{grid-template-columns:1fr;align-items:flex-start}
}
#request-list .request-card{border-left-color:#5d0a14;background:#faf1f2}
#guild-review-list .request-card{border-left-color:#e86466;background:#ffeaea}
#client-review-list .request-card,#published-review-list .request-card{border-left-color:#c47a1a;background:#fdeeda}
#client-access-list .request-card{border-left-color:#3f8fd0;background:#e7f3fc}
#identity-list .request-card,#profile-list .request-card,#people-list .request-card{border-left-color:#426242;background:#e6ece6}
#guild-event-admin-list .request-card{border-left-color:#7a2a3a;background:#f5e8ec}
#booking-slot-admin-list .request-card{border-left-color:#b8770a;background:#fbf2dc}
/* coloured group headings */
#client-access-management .eyebrow{color:#3f8fd0}
#identity-management .eyebrow{color:#426242}
#guild-event-management .eyebrow{color:#7a2a3a}
#booking-slot-management .eyebrow{color:#b8770a}
#member-moderation h2{color:#5d0a14}
/* toast (click to close) */
.toast-region{position:fixed;bottom:22px;right:22px;z-index:130;display:grid;gap:10px;max-width:min(92vw,420px)}
.cal-view-switch{display:inline-flex;gap:6px}
.cal-view-switch .button{min-height:40px;padding:8px 14px}
.cal-view-switch .button[aria-pressed="true"]{background:var(--anchor);border-color:var(--anchor);color:#fff}
.toolbar-label{align-self:center;color:#715a5e;font-size:.82rem;font-weight:700}
.chip.status-proposed{background:var(--sand);color:var(--anchor)}
.chip.status-client_accepted{background:var(--sky);color:var(--anchor)}
.chip.status-expired{background:#f2eae5;color:#705f63}
.toast{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;background:#2f5a34;color:#fff;font-weight:600;box-shadow:0 14px 34px rgba(57,5,13,.22);cursor:pointer;animation:toast-in .18s ease}
.toast[data-kind="warn"]{background:#7a3c13}
.toast[data-kind="error"]{background:#8c1d2b}
.toast .toast-icon{margin-right:2px;font-weight:800}
.toast .toast-close{margin-left:10px;font-size:1.15rem;line-height:1;opacity:.85}
@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:620px){.toast-region{left:14px;right:14px;bottom:14px;max-width:none}}

/* === DatePicker français (date / datetime / heure) === */
}

/* === Configuration page === */
.choice-grid.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.choice-card{display:flex;align-items:center;gap:10px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--cream);transition:transform 150ms ease,box-shadow 150ms ease;cursor:pointer}
.choice-card:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(57,5,13,.08)}
.choice-card:has(input:checked){border-color:var(--anchor);background:var(--sand)}
.choice-card input{width:auto;min-height:auto}
.choice-card strong{font-weight:700}
fieldset#settings-position-fieldset{border:0;padding:0;margin:18px 0 0}
fieldset#settings-position-fieldset legend{font-weight:700;font-size:.93rem;padding:0}

/* === Toast positions (owner-configurable) === */
.toast-region-bottom-right{right:22px;left:auto;bottom:22px;top:auto;align-items:flex-end}
.toast-region-bottom-left{left:22px;right:auto;bottom:22px;top:auto;align-items:flex-start}
.toast-region-top-right{right:22px;left:auto;top:22px;bottom:auto;align-items:flex-end}
.toast-region-top-left{left:22px;right:auto;top:22px;bottom:auto;align-items:flex-start}
@media(max-width:620px){
  .toast-region-bottom-right,.toast-region-bottom-left{left:14px;right:14px;bottom:14px}
  .toast-region-top-right,.toast-region-top-left{left:14px;right:14px;top:14px}
}

/* === Owner space redesign === */
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.brand-logo{height:44px;width:auto}
.section-nav{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 2px}
.section-nav a{padding:8px 14px;border-radius:99px;background:var(--sand);color:var(--anchor);text-decoration:none;font-weight:650;font-size:.9rem}
.section-nav a:hover{background:#f7dca4}
.section-nav a.owner-only{display:none}
body.is-owner .section-nav a.owner-only{display:inline-block}
.section-box{border:1px solid var(--line);border-radius:24px;padding:clamp(18px,3vw,30px);margin:24px 0;background:#fff}
.requests-box{background:#fbf4f5}
.section-heading{margin-bottom:6px}
.check{display:flex;align-items:center;gap:8px;font-weight:600;font-size:.9rem}
.check input{width:auto;min-height:auto}
.button-ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
.button-ghost:hover{background:var(--cream)}
.archive-btn{font-size:.85rem;padding:7px 12px}
.request-card.is-archived{opacity:.6}
.archived-badge{display:inline-block;margin-top:8px;padding:3px 10px;border-radius:99px;background:#e9e2e3;color:#5d0a14;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.role-btn{font-weight:650}
.role-btn.role-guild{border-color:#426242;color:#426242}
.role-btn.role-guild.is-assigned{background:#426242;color:#fff}
.role-btn.role-client{border-color:#3f8fd0;color:#3f8fd0}
.role-btn.role-client.is-assigned{background:#3f8fd0;color:#fff}
.role-btn.role-owner{border-color:rgba(93,10,20,.22);color:#7a6a6e;font-size:.8rem;padding:6px 10px}
.role-btn.role-owner.is-assigned{background:#efe8e9;color:#5d0a14}
.modal{position:fixed;inset:0;background:rgba(57,5,13,.45);display:grid;place-items:center;z-index:80;padding:20px}
.modal[hidden]{display:none}
.modal-panel{width:min(100%,460px);max-height:calc(100dvh - 40px);overflow:auto;-webkit-overflow-scrolling:touch;background:#fff;border-radius:20px;padding:26px;box-shadow:var(--shadow)}
body.modal-open{overflow:hidden}
@media(max-width:680px){.section-nav a{margin:2px 0}}

/* === Card layout refresh: aligned header/actions, readable flex === */
.request-card{display:flex;flex-direction:column;gap:6px}
.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;width:100%}
.card-summary{flex:1 1 auto;min-width:0}
.card-actions{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:0 0 auto}
.card-actions .archive-btn{min-height:34px;padding:6px 12px;font-size:.8rem;white-space:nowrap;align-self:flex-end}
.request-details p,.request-message{font-size:.92rem;line-height:1.55;color:#4f3a3f}
.person-card{cursor:pointer}
.person-card:hover{border-left-color:currentColor}
/* === Detail modal === */
.modal-wide .modal-panel{width:min(100%,680px);max-height:86vh;overflow:auto}
.detail-body .detail-list{margin:0;display:block}
.detail-body .detail-list h3{margin:18px 0 8px;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--anchor);border-bottom:1px solid var(--line);padding-bottom:6px}
.detail-body .detail-group{display:grid;gap:7px;margin:0 0 6px}
.detail-body .detail-row{display:grid;grid-template-columns:170px 1fr;gap:12px;align-items:baseline;font-size:.94rem}
.detail-body .detail-row dt{color:#715a5e;font-weight:600}
.detail-body .detail-row dd{margin:0;color:var(--ink)}
.detail-body .detail-image{max-width:230px;border-radius:12px;margin:4px 0 10px}
.detail-body .detail-block{font-size:.92rem;color:var(--ink);margin-bottom:10px;overflow-wrap:anywhere}
/* Les valeurs texte du détail gardent leurs retours à la ligne (bio, questionnaire, publication). */
.detail-body .detail-row dd{white-space:pre-wrap;overflow-wrap:anywhere}
/* === Vue « profil complet » partagée (36-A, revue Owner 2026-10-08) :
   même structure que la modale membre (data-member-profile-view). === */
.detail-body .member-profile-view{display:grid;gap:16px}
.detail-body .member-profile-hero{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px;border-radius:16px;background:linear-gradient(120deg,rgba(189,229,254,.9),rgba(189,229,254,.5))}
.detail-body .member-profile-avatar{width:72px;height:72px;flex:0 0 72px;border-radius:50%;object-fit:cover;background:var(--coral)}
.detail-body .member-profile-identity{display:grid;gap:4px;min-width:0}
.detail-body .member-profile-name{margin:0;color:var(--anchor);font-size:1.35rem;letter-spacing:normal;text-transform:none;border-bottom:0;line-height:1.15;overflow-wrap:anywhere}
.detail-body .member-profile-meta{margin:0;color:#715a5e;font-size:.85rem}
.detail-body .member-team-badge{display:inline-flex;align-items:center;width:max-content;margin-top:2px;padding:4px 10px;border-radius:999px;background:var(--sand);color:var(--anchor);font-weight:700;font-size:.72rem}
.detail-body .member-profile-section{display:grid;gap:8px}
.detail-body .member-profile-section-title{margin:0;color:var(--anchor);font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line);padding-bottom:6px}
.detail-body .member-profile-text{margin:0;font-size:.92rem;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
.detail-body .member-profile-list{display:grid;gap:6px;margin:0;padding-left:20px;font-size:.92rem;color:var(--ink)}
.detail-body .member-profile-private{margin:0;padding:12px 14px;border-radius:12px;color:#715a5e;background:rgba(189,229,254,.25)}
.detail-body .member-profile-post{margin:0;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--cream);min-width:0}
.detail-body .member-profile-post time{display:block;margin-bottom:6px;color:#715a5e;font-size:.78rem}
.detail-body .member-profile-post .member-profile-text{margin-top:4px}
@media(max-width:620px){
  .card-header{flex-direction:column;align-items:stretch}
  .card-actions{align-items:stretch}
  .card-actions .status-control{width:100%;min-width:0}
  .card-actions .archive-btn{align-self:stretch}
  .detail-body .detail-row{grid-template-columns:1fr;gap:2px}
}

/* Nav groups + role chips */
.nav-group{border:1px solid var(--line);border-radius:10px;margin-bottom:6px;padding:4px 8px}
.nav-group summary{cursor:pointer;font-weight:700;font-family:var(--font-heading);color:var(--anchor);padding:6px 2px}
.nav-group a{display:block;padding:5px 10px;border-radius:6px;color:var(--ink);text-decoration:none}
.nav-group a:hover{background:rgba(93,10,20,.06)}
.role-chips{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.chip{display:inline-block;padding:3px 10px;border-radius:99px;font:600 .72rem/1 var(--font-heading);letter-spacing:.02em}
.chip-client{background:#6d4a3a;color:#fff}
.chip-guild{background:#fee8b9;color:#5d0a14}
.chip-owner{background:#426242;color:#fff}
.chip-none{background:#eee;color:#666}
.person-card h3{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* --- Tables admin (replaces cards for readability at scale) --- */
#request-list,#guild-review-list,#client-review-list,#published-review-list,
#client-access-list,#people-list,#guild-event-admin-list,
#booking-slot-admin-list,#theme-admin-list{display:block}
.admin-table-wrap{width:100%;overflow-x:auto;background:#fff;border:1px solid rgba(93,10,20,.12);border-radius:16px;margin-top:18px}
.admin-table{width:100%;border-collapse:collapse;font-size:.9rem}
.admin-table thead th{position:sticky;top:0;z-index:1;background:#faf1f2;color:var(--anchor);text-align:left;padding:12px 14px;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--line);white-space:nowrap}
.admin-table tbody td{padding:12px 14px;border-bottom:1px solid rgba(93,10,20,.07);vertical-align:top;color:var(--ink)}
.admin-table tbody tr{transition:background .12s}
.admin-table tbody tr:hover{background:#fffaf5}
.admin-table tbody tr:last-child td{border-bottom:0}
.admin-table tbody tr.is-archived td{opacity:.5}
.admin-table tbody tr.is-archived .col-main{text-decoration:line-through}
.col-main{max-width:360px;white-space:pre-line;word-break:break-word}
.col-type,.col-roles,.col-status,.col-action{white-space:nowrap}
.col-action{text-align:right}
.row-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.status-ok{color:#2f6b37;font-weight:600}
.status-muted{color:#8a6a6f;font-weight:500}
.stack{display:flex;flex-direction:column;gap:6px}
.thumb{max-width:72px;height:auto;border-radius:10px;border:1px solid var(--line)}
.admin-table details p{margin:2px 0;font-size:.82rem;color:#5f4c51}
.status-control{display:flex;flex-direction:column;gap:4px}
.status-control label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:#8a6a6f}
.status-control select{min-width:132px;min-height:38px}
#identity-table .role-btn{white-space:nowrap}

/* --- Cohérence globale (charte) : compact & harmonisé ---
   Chantier 43 (A1, miroir console) — mêmes bornes que les pages membres :
   hauteur mini 110 px, redimensionnement vertical, plafond 60 vh. */
textarea{width:100%;min-height:110px;max-height:60vh;padding:10px 12px;border:1px solid rgba(57,5,13,.28);border-radius:10px;background:#fff;color:var(--ink);font-family:"DM Sans",system-ui,sans-serif;font-size:.95rem;line-height:1.5;resize:vertical}
form textarea:focus-visible{outline:3px solid var(--coral);outline-offset:3px}
.nav-group{gap:4px}
.nav-group summary{padding:8px 10px;border-radius:8px}
.nav-group a{margin:2px 4px;border-radius:8px}
.row-actions .button,.admin-table .button{padding:5px 11px;min-height:30px;font-size:.78rem;font-weight:700;border-radius:999px}
.role-btn{min-height:30px;padding:5px 10px;font-size:.78rem;font-weight:700}
.role-btn.role-guild,.role-btn.role-client,.role-btn.role-owner{font-size:.78rem}
.role-btn.role-guild{border-color:#fee8b9;color:#7a5b00}
.role-btn.role-guild.is-assigned{background:#fee8b9;border-color:#fee8b9;color:#5d0a14}
.role-btn.role-client{border-color:#6d4a3a;color:#6d4a3a}
.role-btn.role-client.is-assigned{background:#6d4a3a;color:#fff;border-color:#6d4a3a}
.role-btn.role-owner{border-color:#426242;color:#426242;font-size:.78rem;padding:5px 10px}
.role-btn.role-owner.is-assigned{background:#426242;color:#fff}
.status-control select{min-height:34px}

/* Barre d'outils + éditeur riche Quill (D-074 : articles, événements, annonces) */
.rich-editor{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;min-width:0}
.rich-editor-field .ql-toolbar.ql-snow{display:flex;flex-wrap:wrap;gap:4px;align-items:center;border:0;border-bottom:1px solid var(--line);padding:8px 10px;background:var(--cream)}
.rich-editor.ql-container.ql-snow{height:auto;border:0;font:inherit}
.rich-editor .ql-editor{min-height:120px;max-height:420px;overflow-y:auto;padding:12px 14px;font-size:.92rem;line-height:1.5;color:var(--ink)}
.rich-editor-compact .ql-editor{min-height:76px;max-height:220px}
.rich-editor .ql-editor.ql-blank::before{color:#9a8b8f;font-style:normal;left:14px;right:14px}
.rich-editor-field .ql-snow .ql-stroke{stroke:var(--anchor)}
.rich-editor-field .ql-snow .ql-fill{fill:var(--anchor)}
.rich-editor-field .ql-snow .ql-picker{color:var(--anchor)}
.rich-editor-field .ql-emoji{width:30px;height:24px;padding:3px 5px;border:0;background:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.rich-editor-field .ql-emoji .material-symbols-outlined{font-size:1.1rem;color:var(--anchor)}
.rich-editor .ql-editor img{max-width:100%;border-radius:10px}
.rich-editor .ql-editor iframe,.rich-editor .ql-editor .ql-video{width:100%;max-width:420px;aspect-ratio:16/9;height:auto;border-radius:10px}
.rich-editor .ql-editor a{color:var(--anchor)}
/* Sélecteur de fichier stylé (couverture d'article, image d'annonce) */
.md-upload{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-size:.85rem;cursor:pointer}
.md-upload:hover{background:var(--cream)}
.md-upload .material-symbols-outlined{font-size:1.15rem;line-height:1}

/* === Calendrier Owner (jour / semaine / mois + blocs d'indisponibilité) === */
.owner-cal-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:.82rem;color:var(--muted,#7c6269);margin-bottom:10px}
.owner-cal-legend span{display:inline-flex;align-items:center;gap:6px}
.oc-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.oc-dot.oc-booking{background:#5d0a14}
.oc-dot.oc-block{background:repeating-linear-gradient(45deg,#7c6269,#7c6269 2px,#b8a4ab 2px,#b8a4ab 4px)}
.owner-cal-grid{display:grid;gap:4px}
.owner-cal-grid-month{grid-template-columns:repeat(7,1fr)}
.owner-cal-grid-week{grid-template-columns:repeat(7,1fr);min-width:760px}
.owner-calendar-grid{overflow:auto}
.oc-dow{text-align:center;font-size:.7rem;color:#7c6269;padding:4px 0;font-weight:700;text-transform:uppercase}
.oc-day{display:flex;flex-direction:column;gap:4px;align-items:stretch;min-height:64px;border:1px solid var(--line,#e8d8d2);border-radius:10px;background:#fff;padding:5px;cursor:pointer;font-family:var(--font-body)}
.oc-day:hover{border-color:#5d0a14}
.oc-day.oc-today{box-shadow:inset 0 0 0 2px rgba(93,10,20,.4)}
.oc-daynum{font:700 .78rem/1 var(--font-heading);color:#5d0a14}
.oc-dots{display:flex;gap:3px;flex-wrap:wrap}
.oc-pill{width:7px;height:7px;border-radius:50%;display:inline-block;pointer-events:none}
.oc-pill.oc-booking{background:#5d0a14}
.oc-pill.oc-block{background:repeating-linear-gradient(45deg,#7c6269,#7c6269 2px,#b8a4ab 2px,#b8a4ab 4px)}
.oc-pill-wide{width:auto;height:auto;border-radius:999px;padding:5px 9px;font-size:.74rem;font-weight:700;pointer-events:auto}
.oc-pill-wide.oc-booking{background:#5d0a14;color:#fff}
.oc-pill-wide.oc-block{background:#b8a4ab;color:#3c2329}
.oc-weekday{min-height:120px}
.oc-day-entries{display:flex;flex-direction:column;gap:4px;margin-top:4px}
.oc-daybox{background:#fff;border:1px solid var(--line,#e8d8d2);border-radius:14px;padding:16px;min-height:120px}
.oc-entries-col{gap:6px}

/* Owner messaging inbox (P1) */
.admin-messaging-layout{display:grid;grid-template-columns:minmax(260px,340px) 1fr;gap:20px;margin-top:18px}
.admin-messaging-conversations{background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px}
.admin-messaging-unread{justify-self:start;padding:5px 10px;border-radius:999px;background:var(--coral);color:#fff;font-size:.72rem;font-weight:700}
.admin-conv-item{display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;width:100%;padding:12px 14px;margin-bottom:8px;border:1px solid var(--line);border-radius:12px;background:var(--cream);cursor:pointer;font-family:inherit}
.admin-conv-item:hover{border-color:var(--anchor)}
.admin-conv-item strong{color:var(--anchor);font-weight:750;position:relative;padding-right:24px}
.admin-conv-item span{font-size:.85rem;color:#715a5e}
.admin-conv-item small{font-size:.72rem;color:#9b8a8e}
.admin-conv-unread{position:absolute;right:0;top:0;background:var(--coral);color:#fff;border-radius:99px;font:700 .7rem/1 inherit;font-style:normal;padding:3px 7px}
.admin-messaging-thread{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;display:flex;flex-direction:column}
.admin-thread-header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--cream)}
.admin-thread-header strong{color:var(--anchor)}
.admin-thread-messages{display:flex;flex-direction:column;gap:8px;padding:16px;max-height:460px;overflow:auto}
.admin-thread-msg{padding:9px 12px;border-radius:12px;background:var(--cream);max-width:82%;align-self:flex-start}
.admin-thread-msg-body{font-size:.92rem;line-height:1.45}
.admin-thread-msg-body p{margin:0}
.admin-thread-msg-body a{color:var(--anchor)}
.admin-thread-msg-image{display:block;max-width:100%;max-height:280px;border-radius:10px;margin:6px 0 4px}
.admin-thread-msg time{display:block;font-size:.72rem;color:#9b8a8e;margin-top:4px}
.admin-thread-composer{display:flex;align-items:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--line)}
.admin-thread-composer textarea{flex:1;min-height:48px;padding:10px 12px;border:1px solid rgba(57,5,13,.28);border-radius:10px;font-family:inherit;font-size:.9rem;resize:vertical}
.admin-thread-composer .button{margin-top:0;flex:0 0 auto}
.admin-thread-attach{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0 15px;border:1px solid var(--line);border-radius:10px;background:var(--cream);color:var(--anchor);font-size:.85rem;font-weight:700;white-space:nowrap;cursor:pointer;flex:0 0 auto}
.admin-thread-attach:hover{background:var(--sand)}
.admin-thread-photo-name{align-self:center;max-width:150px;overflow:hidden;color:#705f63;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}
.admin-thread-photo-name[hidden]{display:none}
@media(max-width:760px){.admin-messaging-layout{grid-template-columns:1fr}}

/* === Blocs d'indisponibilité : formulaire pleine largeur + édition === */
#block-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;align-items:end;padding:20px;background:var(--cream);border:1px solid var(--line);border-radius:18px}
#block-form > label{min-width:0;margin-bottom:-6px;color:var(--anchor)}
#block-form > input{min-width:0}
#block-form > label[for="block-start"]{grid-column:1}
#block-form > input#block-start{grid-column:1;grid-row:2}
#block-form > label[for="block-end"]{grid-column:2;grid-row:1}
#block-form > input#block-end{grid-column:2;grid-row:2}
#block-form > label[for="block-reason"]{grid-column:1/-1;grid-row:3}
#block-form > input#block-reason{grid-column:1/-1;grid-row:4}
#block-form > .message{grid-column:1/-1;margin:0}
.block-form-actions{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap}
.block-form-actions .button{margin-top:0}
#block-list{display:block;width:100%}
#block-list>.admin-table-wrap{width:100%;margin-top:0}
.theme-body-label{display:flex;align-items:center;gap:8px}
.help-tooltip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:0 0 20px;border:1px solid var(--line);border-radius:50%;background:var(--cream);color:var(--anchor);font-size:.78rem;font-weight:800;cursor:help}
.help-tooltip-content{position:absolute;left:50%;bottom:calc(100% + 10px);z-index:5;width:min(300px,calc(100vw - 48px));padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font-size:.82rem;font-weight:500;line-height:1.45;box-shadow:0 10px 30px rgba(57,5,13,.16);opacity:0;visibility:hidden;transform:translate(-50%,4px);transition:opacity .15s ease,transform .15s ease,visibility .15s}
.help-tooltip-content::after{position:absolute;top:100%;left:50%;width:9px;height:9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;content:"";transform:translate(-50%,-50%) rotate(45deg)}
.help-tooltip:focus-visible{outline:3px solid var(--coral);outline-offset:3px}
.help-tooltip:hover .help-tooltip-content,.help-tooltip:focus .help-tooltip-content{opacity:1;visibility:visible;transform:translate(-50%,0)}
@media(max-width:760px){#block-form{grid-template-columns:minmax(0,1fr);padding:16px}#block-form > label[for="block-start"],#block-form > label[for="block-end"],#block-form > label[for="block-reason"],#block-form > input#block-start,#block-form > input#block-end,#block-form > input#block-reason{grid-column:1;grid-row:auto}#block-form > label{margin:0 0 -6px}}

/* === Owner admin refresh: quiet workspace, clear navigation, preserved controls === */
:root{--anchor:#5d0a14;--anchor-deep:#39050d;--cream:#fffaf5;--ink:#24171a;--line:rgba(93,10,20,.16);--shadow:0 18px 50px rgba(57,5,13,.1)}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body{background:var(--cream);color:var(--ink)}
[hidden]{display:none!important}
.topbar{position:fixed;inset:0 auto 0 0;z-index:45;width:256px;height:100vh;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;padding:30px 20px 20px;border:0;border-right:1px solid rgba(255,255,255,.08);background:var(--anchor-deep);box-shadow:8px 0 28px rgba(57,5,13,.08)}
.brand{display:flex;align-items:center;min-height:54px;padding:0 10px}
.brand{background:var(--sand);border-radius:14px}
.brand-logo{width:auto;height:46px;max-width:100%;object-fit:contain;object-position:left center}
.topbar-right{display:flex;flex-direction:column;align-items:stretch;gap:12px;width:100%;margin-top:auto}
.topbar-right p{margin:0;padding:0 10px;color:var(--sand);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}
.topbar-link{display:block;padding:12px 13px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);color:#fff;border-radius:12px;font-size:.86rem}
.topbar-link:hover{background:rgba(255,255,255,.13)}
.page-shell{width:auto;max-width:1560px;min-height:100vh;margin:0 0 0 256px;padding:38px clamp(24px,4vw,62px) 60px}
#dashboard:not([hidden]){max-width:1380px;margin:0 auto}
#dashboard .dashboard-heading{align-items:center;gap:24px;padding:6px 0 26px;border-bottom:1px solid var(--line)}
#dashboard .dashboard-heading .eyebrow{margin-bottom:8px;color:var(--harmony);font-size:.7rem;letter-spacing:.15em}
#dashboard .dashboard-heading h1{margin:0;color:var(--anchor);font-family:var(--font-heading);font-size:clamp(2rem,3vw,2.65rem);letter-spacing:-.045em;line-height:1.08}
#dashboard .dashboard-heading .intro{margin:10px 0 0;color:#715f5f;font-size:.95rem}
#logout-button{border-color:var(--line);background:#fff;color:var(--anchor)}
#logout-button:hover{background:#fff1cf}
.section-nav{position:fixed;inset:120px auto 20px 0;z-index:46;width:256px;display:flex;flex-direction:column;flex-wrap:nowrap;gap:8px;overflow-y:auto;margin:0;padding:15px 14px 24px;background:var(--anchor-deep)}
.nav-group{margin:0;padding:5px 0;border:0;border-radius:0;background:transparent}
.nav-group summary{position:relative;padding:10px 12px;color:var(--sand);font:700 .7rem/1.3 var(--font-heading);letter-spacing:.14em;text-transform:uppercase;list-style:none}
.nav-group summary::-webkit-details-marker{display:none}
.nav-group summary::after{position:absolute;right:13px;content:"+";font-size:.95rem;line-height:1}
.nav-group[open] summary::after{content:"−"}
.nav-group a{margin:2px 0;padding:10px 12px;border-radius:10px;color:#fffaf5;font-size:.88rem;font-weight:550;line-height:1.35;text-decoration:none;transition:background .15s,color .15s}
.nav-group a:not([href="#les-demandes"]):hover,.nav-group a:not([href="#les-demandes"]):focus-visible{background:rgba(254,126,128,.2);color:#fff}
.nav-group a[href="#les-demandes"]{background:var(--sand);color:var(--anchor);font-weight:700}
.nav-group a.owner-only{display:none}
body.is-owner .section-nav a.owner-only{display:block}
#dashboard .section-box,#dashboard>.panel{width:100%;max-width:none;margin:24px 0 0;padding:clamp(20px,2.6vw,34px);border:1px solid var(--line);border-radius:20px;background:#fff;box-shadow:0 5px 18px rgba(57,5,13,.04)}
#dashboard .requests-box{background:#fff}
#dashboard .section-heading h2,#dashboard>.panel>h2{margin:0 0 8px;color:var(--anchor);font-family:var(--font-heading);font-size:1.35rem;letter-spacing:-.025em}
#dashboard .section-heading .intro{max-width:720px;margin:0;color:#715f5f;font-size:.9rem}
#dashboard .eyebrow{color:var(--harmony)}
#dashboard .small-note{color:#715f5f}
#dashboard .toolbar{gap:10px;padding:13px;margin:18px 0 10px;border:1px solid var(--line);border-radius:14px;background:#fff8eb}
#dashboard .toolbar select{min-width:190px}
#dashboard .toolbar .count{color:#715f5f;font-weight:650}
#dashboard .request-list{gap:12px;margin-top:16px}
#dashboard .request-card{border:1px solid var(--line);border-left:4px solid var(--coral);border-radius:14px;background:#fff;box-shadow:0 3px 10px rgba(57,5,13,.035)}
#dashboard .request-card:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(57,5,13,.075)}
#dashboard .admin-table-wrap{margin-top:16px;border-color:var(--line);border-radius:14px;box-shadow:0 3px 10px rgba(57,5,13,.025)}
#dashboard .admin-table thead th{background:#fff1cf;color:var(--anchor);border-bottom:1px solid var(--line);font-size:.68rem;letter-spacing:.09em}
#dashboard .admin-table tbody td{padding:13px 15px;border-bottom-color:rgba(93,10,20,.08);font-size:.87rem;line-height:1.45}
#dashboard .admin-table tbody tr:hover{background:#fffaf5}
#dashboard .button-primary{background:var(--anchor)}
#dashboard .button-primary:hover{background:var(--anchor-deep)}
#dashboard .button-outline{border:1px solid var(--line);background:#fff;color:var(--anchor)}
#dashboard .button-outline:hover{background:#fff1cf}
#dashboard input,#dashboard select,#dashboard textarea{border-color:var(--line);border-radius:10px;background:#fff}
#dashboard input:focus-visible,#dashboard select:focus-visible,#dashboard textarea:focus-visible,#dashboard button:focus-visible,#dashboard a:focus-visible,.section-nav a:focus-visible{outline:3px solid var(--coral);outline-offset:2px}
#dashboard .owner-calendar-grid{padding:4px 0}
#dashboard .oc-day{border-color:var(--line);border-radius:12px;background:#fff}
#dashboard .oc-day:hover{border-color:var(--coral);background:#fffaf5}
#dashboard .oc-day.oc-today{box-shadow:inset 0 0 0 2px var(--coral)}
#dashboard #block-form{border-color:var(--line);border-radius:15px;background:#fff8eb}
#dashboard #block-list>.admin-table-wrap{width:100%;margin-top:16px}
#dashboard .admin-messaging-conversations,#dashboard .admin-messaging-thread{border-color:var(--line);border-radius:16px;background:#fff}
#dashboard .admin-thread-header{background:#fff8eb}
#dashboard .modal{background:rgba(57,5,13,.48)}
#dashboard .modal-panel{border:1px solid var(--line);border-radius:20px;box-shadow:0 24px 70px rgba(57,5,13,.22)}
footer{margin-left:256px;padding:20px 24px 30px;border-top:1px solid #e9e1dc;color:#827678}
footer a{color:var(--anchor)}
.skip-link:focus{z-index:100}
@media(max-width:900px){.topbar{width:224px;padding-inline:15px}.section-nav{width:224px}.page-shell{margin-left:224px;padding:30px 24px 48px}footer{margin-left:224px}}
@media(max-width:680px){
  .topbar{position:relative;inset:auto;width:100%;height:auto;min-height:68px;flex-direction:row;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-right:0;border-bottom:1px solid rgba(255,255,255,.08)}
  .brand{min-height:44px;padding:0}.brand-logo{height:38px}
  .topbar-right{flex:0 1 auto;flex-direction:row;align-items:center;justify-content:flex-end;gap:8px;width:auto;margin:0}
  .topbar-right p{display:none}.topbar-link{padding:9px 11px;font-size:.78rem}
  .page-shell{width:100%;min-height:0;margin:0;padding:18px 14px 34px}
  #dashboard .dashboard-heading{align-items:flex-start;padding:5px 0 18px}
  #dashboard .dashboard-heading h1{font-size:1.9rem}
  #logout-button{min-height:38px;padding:8px 12px;font-size:.8rem}
  .section-nav{position:sticky;inset:auto;z-index:35;width:auto;flex-direction:row;flex-wrap:nowrap;gap:8px;overflow-x:auto;overflow-y:visible;margin:0 -14px 16px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--cream);scrollbar-width:thin}
  .nav-group{position:relative;flex:0 0 auto;margin:0;padding:0;border:1px solid #e5dcd7;border-radius:11px;background:#fff}
  .nav-group summary{padding:9px 30px 9px 11px;color:var(--anchor);font-size:.65rem;letter-spacing:.09em;white-space:nowrap}
  .nav-group summary::after{right:10px}
  .nav-group[open]{z-index:40}
  .nav-group a{padding:9px 11px;color:var(--ink);font-size:.8rem;white-space:nowrap}
  .nav-group a[href="#les-demandes"]{background:var(--sand);color:var(--anchor)}
  .nav-group a:not([href="#les-demandes"]):hover,.nav-group a:not([href="#les-demandes"]):focus-visible{background:rgba(93,10,20,.08);color:var(--anchor)}
  .nav-group[open] a{display:block}
  .nav-group[open] a.owner-only{display:none}
  body.is-owner .nav-group[open] a.owner-only{display:block}
  #dashboard .section-box,#dashboard>.panel{margin-top:14px;padding:19px 15px;border-radius:16px}
  #dashboard .section-heading h2,#dashboard>.panel>h2{font-size:1.2rem}
  #dashboard .toolbar{align-items:stretch;padding:12px}
  #dashboard .toolbar select{min-width:0;width:100%}
  #dashboard .toolbar .count{width:100%;margin:0 4px}
  #dashboard .admin-table-wrap{margin-inline:-2px;width:calc(100% + 4px)}
  #dashboard .admin-table{min-width:640px}
  #dashboard .admin-table tbody td{padding:11px 12px}
  #dashboard #block-form{padding:14px}
  #dashboard .admin-messaging-layout{grid-template-columns:minmax(0,1fr)}
  footer{margin-left:0;padding:18px 14px 26px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* Charte PawkeDog: exact brand palette, rounded titles, warm cream workspace */
:root{--anchor:#5d0a14;--anchor-deep:#39050d;--coral:#fe7e80;--sand:#fee8b9;--harmony:#426242;--sky:#bde5fe;--ink:#24171a;--cream:#fffaf5;--white:#fff;--line:rgba(93,10,20,.16);--shadow:0 18px 50px rgba(57,5,13,.1);--font-heading:"Ambit","DM Sans",sans-serif;--font-body:"DM Sans",sans-serif}
body{background:var(--cream);color:var(--ink);font-family:var(--font-body)}
.topbar,.section-nav{background:var(--anchor-deep)}
.topbar-link{background:var(--sand);color:var(--anchor);border-color:transparent}
.topbar-link:hover{background:var(--coral);color:var(--anchor)}
.topbar-right p{color:var(--sand)}
.nav-group summary{font-family:var(--font-heading)}
.nav-group a[href="#les-demandes"]{background:var(--sand);color:var(--anchor)}
.nav-group a:hover,.nav-group a:focus-visible{background:rgba(254,126,128,.2);color:#fff}
#dashboard .dashboard-heading h1,#dashboard .section-heading h2,#dashboard>.panel>h2,#dashboard h3{font-family:var(--font-heading);color:var(--anchor)}
#dashboard .dashboard-heading .eyebrow{color:var(--harmony)}
#dashboard .section-box,#dashboard>.panel{background:var(--white);border-color:var(--line);box-shadow:0 5px 18px rgba(57,5,13,.04)}
#dashboard .toolbar,#dashboard #block-form{border-color:var(--line);background:#fff8eb}
#dashboard .admin-table thead th{background:#fff1cf;color:var(--anchor);border-bottom-color:var(--line)}
#dashboard .button-primary{background:var(--anchor)}
#dashboard .button-primary:hover{background:var(--anchor-deep)}
#dashboard .button-outline,#logout-button{border-color:var(--line);color:var(--anchor)}
#dashboard .button-outline:hover,#logout-button:hover{background:#fff1cf}
#dashboard input:focus-visible,#dashboard select:focus-visible,#dashboard textarea:focus-visible,#dashboard button:focus-visible,#dashboard a:focus-visible,.section-nav a:focus-visible{outline-color:var(--coral)}
.modal{background:rgba(57,5,13,.48)}
.modal-panel{border:1px solid var(--line);border-radius:20px;box-shadow:0 24px 70px rgba(57,5,13,.22)}
@media(max-width:680px){.section-nav{background:var(--cream)}.nav-group summary{color:var(--anchor)}.nav-group a[href="#les-demandes"]{background:var(--sand);color:var(--anchor)}}
.brand{background:var(--sand);border-radius:14px}
.nav-group a{background:transparent;color:#fffaf5}
.nav-group a[href="#les-demandes"]{background:var(--sand);color:var(--anchor)}
.nav-group a:not([href="#les-demandes"]):hover,.nav-group a:not([href="#les-demandes"]):focus-visible{background:rgba(254,126,128,.2);color:#fff}
@media(max-width:680px){.nav-group a{background:transparent;color:var(--ink)}.nav-group a[href="#les-demandes"]{background:var(--sand);color:var(--anchor)}.nav-group a:not([href="#les-demandes"]):hover,.nav-group a:not([href="#les-demandes"]):focus-visible{background:rgba(93,10,20,.08);color:var(--anchor)}}

/* Owner feedback: compact responsive header navigation and consistent admin chips */
body{overflow-x:hidden}
.topbar{position:sticky;inset:auto;top:0;z-index:50;display:flex;width:100%;height:auto;min-height:0;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:10px;margin:0;padding:12px clamp(16px,3vw,40px);border:0;border-bottom:1px solid var(--line);background:var(--cream);box-shadow:0 5px 18px rgba(57,5,13,.06)}
.topbar-main{display:flex;align-items:center;gap:18px;min-width:0}
.brand{display:flex;flex:0 1 210px;align-items:center;min-width:0;min-height:0;padding:0;background:transparent;border-radius:0}
.brand-logo{display:block;width:auto;height:auto;max-width:100%;max-height:44px;object-fit:contain;object-position:left center}
.topbar-right{display:flex;flex:1 1 auto;align-items:center;justify-content:flex-end;gap:10px;width:auto;margin:0}
.topbar-right p{margin:0;color:var(--harmony);font-size:.68rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.topbar-link{padding:8px 12px;background:var(--sand);color:var(--anchor);font-size:.82rem;white-space:nowrap}
.topbar .button{min-height:38px;padding:7px 13px;border:1px solid var(--line);background:#fff;color:var(--anchor);font-size:.82rem;white-space:nowrap}
.topbar .button:hover{background:var(--sand)}
.section-nav{position:static;inset:auto;z-index:auto;display:flex;width:100%;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:6px;overflow:visible;margin:0;padding:0;background:transparent}
.nav-group{position:relative;flex:0 0 auto;margin:0;padding:0;border:0;border-radius:10px;background:transparent}
.nav-group summary{padding:8px 12px;border-radius:10px;color:var(--anchor);font:700 .82rem/1.3 var(--font-heading);letter-spacing:0;text-transform:none;cursor:pointer}
.nav-group summary:hover,.nav-group[open] summary{background:var(--sand);color:var(--anchor)}
.nav-group summary::after{position:static;display:inline-block;margin-left:8px;content:"⌄";font-size:.8rem;line-height:1}
.nav-group[open] summary::after{content:"⌃"}
.nav-dropdown{position:absolute;top:calc(100% + 6px);left:0;z-index:70;display:none;min-width:230px;max-width:min(320px,calc(100vw - 32px));padding:7px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 14px 36px rgba(57,5,13,.14)}
.nav-group[open] .nav-dropdown{display:grid;gap:2px}
.nav-dropdown a,.nav-direct{display:block;margin:0;padding:9px 11px;border-radius:9px;background:transparent;color:var(--anchor);font-size:.83rem;font-weight:600;line-height:1.35;text-decoration:none;white-space:normal}
.nav-dropdown a:hover,.nav-dropdown a:focus-visible,.nav-direct:hover,.nav-direct:focus-visible{background:#fff1cf;color:var(--anchor)}
.nav-dropdown a.owner-only,.nav-direct.owner-only{display:none}
body.is-owner .nav-dropdown a.owner-only,body.is-owner .nav-direct.owner-only{display:block}
.nav-direct{flex:0 0 auto;padding:8px 12px}
.page-shell{width:min(calc(100% - 32px),1480px);max-width:none;min-height:calc(100vh - 190px);margin:28px auto 48px;padding:0 clamp(0px,1.5vw,20px)}
#dashboard:not([hidden]){max-width:none;margin:0 auto}
#dashboard .dashboard-heading{align-items:flex-start;gap:20px;padding:4px 0 22px;border-bottom:1px solid var(--line)}
#dashboard .dashboard-heading h1{color:var(--anchor);font-family:var(--font-heading)}
#dashboard .dashboard-heading .intro{max-width:720px}
#dashboard .section-box,#dashboard>.panel{scroll-margin-top:170px}
footer{margin:0;padding:20px max(16px,calc((100vw - 1440px)/2));border-top:1px solid var(--line)}
.status-control{display:block;min-width:0}
.status-control select{width:100%;min-width:116px;min-height:38px}
.request-summary{display:flex;flex-direction:column;align-items:flex-start;gap:7px}
.request-summary>span:last-child{color:var(--ink);font-size:.88rem;font-weight:500}
.request-service-name{color:var(--anchor);font-weight:650}
.chip{display:inline-flex;min-height:26px;height:26px;align-items:center;justify-content:center;padding:0 10px;border:0;border-radius:999px;font:600 .72rem/1 var(--font-body);letter-spacing:.01em;white-space:nowrap}
.chip-client{background:var(--coral);color:var(--anchor)}
.chip-guild{background:var(--sand);color:var(--anchor)}
.chip-owner{background:var(--harmony);color:#fff}
.chip-none{border:1px solid var(--line);background:#fff;color:var(--anchor)}
.chip-dog{background:var(--sky);color:var(--anchor)}
.chip-service-education{background:var(--harmony);color:#fff}
.chip-service-petsitting{background:var(--sky);color:var(--anchor)}
.role-chips{align-items:center;gap:6px;margin:0}
.chip-service{font-weight:700}
@media(max-width:760px){
  .topbar{gap:8px;padding:9px 12px}
  .topbar-main{gap:8px}
  .brand{flex:0 1 clamp(88px,27vw,150px);max-width:150px}
  .brand-logo{max-height:38px;max-width:100%;width:auto;height:auto}
  .topbar-right{gap:6px}
  .topbar-right p{display:none}
  .topbar-link{padding:7px 9px;font-size:.72rem}
  .topbar .button{min-height:34px;padding:6px 9px;font-size:.72rem}
  .section-nav{justify-content:flex-start;gap:3px}
  .nav-group summary,.nav-direct{padding:7px 9px;font-size:.76rem}
  .nav-dropdown{min-width:220px;max-width:calc(100vw - 24px)}
  .nav-group:nth-of-type(n+2) .nav-dropdown{right:0;left:auto}
  .page-shell{width:100%;min-height:0;margin:18px auto 34px;padding:0 14px}
  #dashboard .dashboard-heading{padding:4px 0 17px}
  #dashboard .dashboard-heading h1{font-size:1.85rem}
  #dashboard .section-box,#dashboard>.panel{scroll-margin-top:128px}
  #dashboard .admin-table-wrap{margin-inline:0;width:100%}
  #dashboard .admin-table{min-width:640px}
  #dashboard .admin-table tbody td{padding:10px 11px}
  #dashboard .admin-messaging-layout{grid-template-columns:minmax(0,1fr)}
  footer{padding:18px 14px 26px}
}
@media(max-width:380px){
  .topbar{padding-inline:9px}
  .brand{flex-basis:clamp(76px,25vw,96px)}
  .topbar-main{gap:6px}
  .topbar-right{gap:4px}
  .topbar-link{padding:6px 7px;font-size:.68rem}
  .topbar .button{padding:5px 7px;font-size:.68rem}
  .nav-group summary,.nav-direct{padding-inline:7px;font-size:.72rem}
}

/* Owner feedback: keep the complete admin header on one shared navigation row */
.topbar{flex-direction:row;align-items:center;gap:clamp(14px,2vw,28px)}
.topbar>.brand{flex:0 0 auto;width:clamp(112px,12vw,168px);max-width:none}
.topbar>.brand .brand-logo{width:100%;max-height:46px}
.section-nav{flex:1 1 auto;min-width:0;align-items:center;gap:clamp(2px,.55vw,9px);margin:0;padding:0}
.topbar-right,.topbar-main{display:contents}
.topbar-right p{display:none}
.nav-actions.owner-only{display:none;align-items:center;justify-content:flex-end;gap:8px;margin-left:auto}
body.is-owner .nav-actions.owner-only{display:flex}
.nav-actions .topbar-link,.nav-actions .button{margin:0}
.section-nav .nav-direct{white-space:nowrap}
.admin-thread-attach{position:relative}
.admin-thread-attach input[type=file]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.admin-thread-attach:focus-within{outline:3px solid var(--coral);outline-offset:2px}
.admin-thread-attach .material-symbols-outlined{font-family:"Material Symbols Outlined";font-size:1.25rem;font-weight:normal;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;direction:ltr;font-feature-settings:"liga";-webkit-font-smoothing:antialiased}
@media(max-width:980px){
  .topbar{align-items:flex-start;flex-wrap:wrap;gap:7px 14px}
  .topbar>.brand{width:clamp(112px,22vw,150px)}
  .section-nav{flex-basis:100%;order:2}
  .nav-actions.owner-only{margin-left:auto}
}
.admin-table details>summary{cursor:pointer;color:var(--anchor);font-weight:650}
.admin-table details .questionnaire-answer-group{margin:14px 0 0;padding-top:10px;border-top:1px solid var(--line)}
.admin-table details .questionnaire-answer-group h4{margin:0 0 7px;color:var(--anchor);font:700 .86rem/1.35 var(--font-heading)}
.admin-table details .questionnaire-answer-group dl{display:grid;grid-template-columns:minmax(115px,.8fr) minmax(0,1.2fr);gap:5px 12px;margin:0}
.admin-table details .questionnaire-answer-group dt{color:#715a5e;font-size:.78rem;font-weight:700}
.admin-table details .questionnaire-answer-group dd{margin:0;color:var(--ink);font-size:.82rem;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:760px){.admin-table details .questionnaire-answer-group dl{grid-template-columns:minmax(0,1fr);gap:2px}.admin-table details .questionnaire-answer-group dd{margin-bottom:7px}}
@media(max-width:760px){
  .topbar{align-items:center}
  .topbar>.brand{width:clamp(88px,27vw,130px)}
  .section-nav{order:2;flex:1 0 100%;flex-wrap:wrap}
  .nav-actions.owner-only{margin-left:auto}
}

/* === Admin mobile: tableaux en cartes empilées (fin du défilement horizontal) === */
@media(max-width:760px){
  #dashboard .admin-table-wrap,
  .admin-table-wrap{overflow:visible;border:0;background:transparent;box-shadow:none;margin-inline:0;width:100%}
  #dashboard .admin-table,
  .admin-table{min-width:0;width:100%;border-collapse:separate;border-spacing:0}
  #dashboard .admin-table thead,
  .admin-table thead{display:none}
  #dashboard .admin-table tbody,
  .admin-table tbody{display:grid;gap:12px}
  #dashboard .admin-table tbody tr,
  .admin-table tbody tr{display:grid;gap:9px;padding:15px 16px;border:1px solid var(--line);border-left:4px solid var(--coral);border-radius:14px;background:#fff;box-shadow:0 3px 10px rgba(57,5,13,.04)}
  #dashboard .admin-table tbody tr:hover,
  .admin-table tbody tr:hover{background:#fff}
  #dashboard .admin-table tbody td,
  .admin-table tbody td{display:grid;grid-template-columns:minmax(0,1fr);gap:3px;max-width:none;padding:0;border:0;white-space:normal;word-break:normal;overflow-wrap:anywhere}
  #dashboard .admin-table tbody td[data-label]::before,
  .admin-table tbody td[data-label]::before{content:attr(data-label);color:#8a6a6f;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em}
  #dashboard .admin-table tbody td[data-label]:empty,
  .admin-table tbody td[data-label]:empty{display:none}
  #dashboard .admin-table tbody td.col-action,
  .admin-table tbody td.col-action{justify-items:stretch;text-align:left}
  #dashboard .admin-table .row-actions,
  .admin-table .row-actions{flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px}
  #dashboard .admin-table .button,
  #dashboard .row-actions .button,
  #dashboard .admin-table .role-btn,
  .admin-table .button,
  .admin-table .role-btn{width:100%;min-height:44px}
  #dashboard .admin-table .status-control,
  .admin-table .status-control{display:grid;gap:4px}
  #dashboard .admin-table .status-control select,
  .admin-table .status-control select{width:100%;min-width:0;min-height:44px}
  #dashboard .admin-table tbody td.dog-cell,
  .admin-table tbody td.dog-cell{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
  #dashboard .admin-table tbody td.dog-cell::before,
  .admin-table tbody td.dog-cell::before{flex:1 0 100%}
  #dashboard .admin-table tbody tr.is-archived td,
  .admin-table tbody tr.is-archived td{opacity:1}
  #dashboard .admin-table tbody tr.is-archived,
  .admin-table tbody tr.is-archived{opacity:.62}
}

/* === Admin mobile: composeur de messagerie lisible === */
@media(max-width:600px){
  #dashboard .admin-thread-composer{flex-wrap:wrap;align-items:stretch;gap:8px}
  #dashboard .admin-thread-composer textarea{order:1;flex:1 0 100%;min-height:76px}
  #dashboard .admin-thread-attach{order:2;flex:1 1 auto;min-height:44px;justify-content:center}
  #dashboard .admin-thread-composer .button{order:3;flex:1 1 auto;min-height:44px}
  #dashboard .admin-thread-photo-name{order:4;flex:1 0 100%;max-width:none;text-align:center}
  #dashboard .owner-calendar-grid{-webkit-overflow-scrolling:touch;scrollbar-width:thin}
}

/* === Admin : menu « sandwich » sur mobile (remplace la TLN qui passait sur plusieurs lignes) === */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.menu-toggle{display:none}
@media(max-width:900px){
  /* Une seule ligne : marque à gauche, bouton menu à droite. */
  .topbar{flex-wrap:nowrap;align-items:center;gap:12px;padding:9px 14px}
  .topbar>.brand{flex:1 1 auto;width:auto;max-width:calc(100% - 62px)}
  .topbar>.brand .brand-logo{width:auto;max-height:40px}
  .menu-toggle{display:flex;flex:0 0 auto;margin-left:auto;width:46px;height:46px;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:0;border-radius:50%;background:var(--anchor);cursor:pointer}
  .menu-toggle span:not(.sr-only){width:20px;height:2px;background:#fff}
  .menu-toggle:hover,.menu-toggle[aria-expanded="true"]{background:var(--anchor-deep)}
  .menu-toggle:focus-visible{outline:3px solid var(--coral);outline-offset:2px}

  /* Le panneau du menu s'ouvre sous l'en-tête, pleine largeur. */
  .section-nav{position:absolute;top:100%;left:0;right:0;z-index:60;display:none;flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:0;width:auto;max-height:calc(100dvh - 64px);overflow-y:auto;margin:0;padding:12px 14px 16px;border-bottom:2px solid var(--anchor);background:var(--cream);box-shadow:0 18px 44px rgba(57,5,13,.18)}
  .section-nav.open{display:flex}

  /* Groupes en accordéon pleine largeur. */
  .nav-group{position:static;flex:0 0 auto;margin:0 0 8px;border:1px solid var(--line);border-radius:12px;background:#fff}
  .nav-group summary{padding:12px 14px;border-radius:12px;font-size:.92rem}
  .nav-group summary:hover,.nav-group[open] summary{background:var(--sand)}
  .nav-group summary::after{content:"expand_more";font-family:"Material Symbols Outlined";margin-left:6px;font-size:1.15rem;transition:transform .15s ease}
  .nav-group[open] summary::after{content:"expand_more";transform:rotate(180deg)}
  .nav-dropdown{position:static;top:auto;left:auto;right:auto;display:block;min-width:0;max-width:none;padding:0 6px 6px;border:0;border-radius:0;background:transparent;box-shadow:none}
  .nav-group[open] .nav-dropdown{display:grid;gap:0}
  .nav-dropdown a,.nav-direct{padding:11px 14px;border-radius:10px;font-size:.92rem}

  /* « Messagerie » : ligne pleine largeur. */
  .nav-direct{flex:0 0 auto;margin:0 0 8px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--anchor);font-weight:700;text-align:left;white-space:normal}

  /* « ← Site public » + « Se déconnecter » : même groupe, alignés à droite. */
  .nav-actions.owner-only,
  body.is-owner .nav-actions.owner-only{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;margin:12px 0 0;padding-top:12px;border-top:1px solid var(--line)}
  .nav-actions .topbar-link,.nav-actions .button{min-height:42px;padding:9px 14px;font-size:.85rem}
  body.menu-open{overflow:hidden}
}

/* Champs Article / À la une (catégories, couverture, images, audience). */
.inline-field{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.inline-field select{flex:1 1 200px}
.field-label{display:block;margin-top:14px;color:var(--anchor);font-size:.86rem;font-weight:650}
.cover-field{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:6px 0 4px}
.cover-field img{width:120px;height:80px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}
.highlight-switch{margin:10px 0 4px}
#category-list,#highlight-list{margin-top:14px}

/* Une liste qui contient une table ne doit pas la comprimer dans une cellule de
   grille : les tableaux admin occupent toute la largeur disponible (et passent
   en cartes sur mobile via la règle @media existante). */
#dashboard .request-list:has(> .admin-table-wrap),
.request-list:has(> .admin-table-wrap){grid-template-columns:minmax(0,1fr)}

/* Gestion des comptes (Owner) : création + fiche « Gérer » */
.account-create-form{margin:18px 0;padding:18px;border:1px solid #e6ddd4;border-radius:16px;background:#fff}
.account-create-form h3{margin:0 0 12px}
.account-create-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.account-create-grid label{display:flex;flex-direction:column;gap:6px;font-weight:600}
.row-actions{display:flex;gap:8px;flex-wrap:wrap}
#account-modal .modal-panel{width:min(100%,920px);padding:clamp(16px,3vw,32px)}
#account-modal h2{margin-bottom:8px}
#account-modal-person{margin:0;overflow-wrap:anywhere}
#account-form{margin-top:20px;gap:18px;min-width:0}
.account-identity-fields,.account-contact-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
#account-form label{display:flex;flex-direction:column;gap:6px;min-width:0;font-weight:600}
#account-form .check{flex-direction:row;align-items:center}
.account-contact-fields,.account-dog-fields{min-width:0;border:1px solid var(--line);border-radius:14px;padding:16px;margin:0}
.account-dog-fields{display:block}
#account-form legend{padding:0 6px;font-weight:700}
.account-section-note{font-size:.9rem;color:#715a5e;margin:0 0 14px}
#account-form .account-actions{margin:0;padding:16px 0 0;border:0;border-top:1px solid var(--line);border-radius:0;gap:10px}
#account-form .account-actions .button{margin-top:0;white-space:normal}
#account-form input{font:inherit;min-width:0}
@media(max-width:640px){
  #account-modal{padding:10px}
  #account-modal .modal-panel{max-height:calc(100dvh - 20px);border-radius:16px}
  .account-identity-fields,.account-contact-fields{grid-template-columns:minmax(0,1fr)}
  #account-form .account-actions{display:grid;grid-template-columns:minmax(0,1fr);width:100%}
}

/* Actions de réservation + chips de statut */
#confirm-modal{z-index:120}
.request-states{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.status-chip{font-size:.72rem;font-weight:700;letter-spacing:.02em}
.status-new{background:var(--sand);color:var(--anchor)}
.status-in_progress{background:#e7f0ff;color:#1c3f7a}
.status-confirmed{background:#e3f4e6;color:#27603a}
.status-cancelled{background:#fde7e7;color:#8a1f1f}
.status-closed{background:#eee;color:#555}
.request-note{margin:8px 0 0;font-size:.82rem;color:#7a5a60;background:#faf1f2;border-radius:10px;padding:8px 10px}
.request-message{margin:0;color:#4b3a3e}
.row-actions{align-items:center}
.row-actions .button{white-space:nowrap}

/* Boutons d'action uniformes (listes Personnes / Demandes) */
.row-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.row-actions .button{display:inline-flex;align-items:center;justify-content:center;min-width:96px;min-height:38px;padding:8px 14px;font-size:.86rem;margin:0}
.account-create-grid label,.account-create-form label{display:flex;flex-direction:column;gap:6px;font-weight:600}
.account-create-grid input,.account-create-grid select{width:100%}
#account-form > label{margin-bottom:10px}

.dog-cell .dog-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.dog-none{color:#9a8b8f;font-weight:600}

/* Éditeur de chiens (modale Gérer) */
.account-dogs{display:grid;gap:14px;margin-bottom:14px;min-width:0}
.account-dog-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,.7fr);gap:12px;align-items:start;border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--cream);min-width:0}
.account-dog-row input{width:100%;min-width:0}
.account-dog-remove{grid-column:1 / -1;justify-self:end}
@media(max-width:640px){.account-dog-row{grid-template-columns:minmax(0,1fr)}.account-dog-remove{justify-self:stretch}}

/* Équipe interne (Owner uniquement) */
#private-team .eyebrow{color:#3f8fd0}
#private-team-list{display:block}
.private-team-form{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px 12px;margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:14px;background:#fff8eb}
.private-team-form>label{grid-column:1/-1;margin-bottom:-2px;color:var(--anchor)}
.private-team-form>select{min-width:0}
.private-team-form>.button{margin-top:0}
.private-team-form>.message{grid-column:1/-1;margin:0}
@media(max-width:760px){.private-team-form{grid-template-columns:minmax(0,1fr)}.private-team-form>.button{width:100%;min-height:44px}}

/* === D-074 : aperçu vivant = l'éditeur lui-même ; popover emoji maison === */
.rich-emoji-popover{position:absolute;z-index:120;display:grid;grid-template-columns:repeat(8,30px);gap:2px;padding:8px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 14px 30px rgba(57,5,13,.16)}
.rich-emoji-popover button{width:30px;height:30px;border:0;border-radius:8px;background:none;font-size:1.05rem;line-height:1;cursor:pointer}
.rich-emoji-popover button:hover{background:var(--cream)}

/* === Sélecteurs date/heure standard Flatpickr (D-073) : « Aujourd'hui » DANS le panneau === */
.pw-today-shortcut{display:block;width:calc(100% - 12px);margin:6px;min-height:38px;padding:7px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--anchor);font:inherit;font-size:.85rem;font-weight:650;cursor:pointer}
.pw-today-shortcut:hover{background:var(--sand)}
.pw-today-shortcut:focus-visible{outline:2px solid var(--anchor);outline-offset:1px}

/* === Chantier 42 — dialogue de lien de l'éditeur riche (module partagé) ===
   Le module `pawkedog-rich-editor.js` crée un <dialog> modal `.rich-link-dialog`
   (couche supérieure, centrage natif) ; la console fournit l'apparence, une
   largeur lisible desktop + mobile et des cibles tactiles, conformes à la
   charte (mêmes variables que le reste de l'espace Owner). */
.rich-link-dialog{width:min(92vw,420px);max-height:min(85vh,600px);overflow-y:auto;padding:20px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 24px 70px rgba(57,5,13,.22);color:var(--ink);font-family:var(--font-body);font-size:.92rem;text-align:left}
.rich-link-dialog::backdrop{background:rgba(57,5,13,.48)}
.rich-link-dialog form{display:grid;gap:10px;margin:0}
.rich-link-dialog h2{margin:0;color:var(--anchor);font-family:var(--font-heading);font-size:1.1rem;letter-spacing:-.02em}
.rich-link-dialog label{color:var(--anchor);font-weight:650;font-size:.84rem}
.rich-link-dialog input{width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font:inherit;font-size:1rem}
.rich-link-dialog input:focus-visible{outline:3px solid var(--coral);outline-offset:2px}
.rich-link-dialog [data-link-error]{margin:0;color:#8c1d2b;font-size:.84rem;font-weight:650}
.rich-link-dialog [data-link-error]:empty{display:none}
/* Rangée d'actions du module : boutons alignés, espacés, cible tactile.
   Chantier 43 (D1) — compacts sur desktop (38 px), confortables au toucher
   (44 px sur pointeur grossier, plein écran sur mobile). */
.rich-link-dialog .rich-link-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:center}
.rich-link-dialog .button{min-height:38px;margin:0;padding:8px 14px;font:inherit;font-weight:700;line-height:1.25}
@media(pointer:coarse){.rich-link-dialog .button{min-height:44px}}
.rich-link-dialog [data-link-save]{background:var(--anchor);color:#fff}
.rich-link-dialog [data-link-save]:hover{background:var(--anchor-deep)}
.rich-link-dialog [data-link-remove]{border:1px solid rgba(140,29,43,.3);background:#fff;color:#8c1d2b}
.rich-link-dialog [data-link-remove]:hover{background:#fdecec}
.rich-link-dialog .button:focus-visible{outline:3px solid var(--coral);outline-offset:2px}
@media(max-width:480px){
  .rich-link-dialog{padding:16px 14px;border-radius:16px}
  .rich-link-dialog .button{flex:1 1 100%;min-height:44px}
  .rich-link-dialog input{font-size:16px}
}

/* === Chantier 43 — console Owner =========================================
   C1 : boutons d'action des personnes (ordre géré au DOM). Couleurs issues
   des variables de la charte — rouge charte (--anchor), bleu (--sky), jaune
   (--sand) ; texte contrasté et focus visible (règles #dashboard existantes).
   D2 : le dialogue maison remplace l'infobulle native de Quill dans NOS
   éditeurs (console ; côté membres, même neutralisation dans le module). === */
.button-danger{background:var(--anchor);color:#fff;border:1px solid transparent}
.button-danger:hover{background:var(--anchor-deep)}
.button-info{background:var(--sky);color:var(--anchor);border:1px solid transparent}
.button-info:hover{background:#a9dbf9}
.button-sand{background:var(--sand);color:var(--anchor);border:1px solid transparent}
.button-sand:hover{background:#f7dca4}
.rich-editor .ql-tooltip{display:none!important}
.account-questionnaire-block{margin:18px 0;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(189,229,254,.18)}.account-questionnaire-block summary{cursor:pointer;color:var(--anchor);font-weight:700}.account-questionnaire-block[hidden]{display:none}.account-questionnaire{margin-top:6px}

/* === Chantier 41-C — « Demandes de récupération » (console Owner) =========
   Bloc de la section Personnes + badge de compteur de la navigation. */
.nav-badge{display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;margin-left:6px;padding:0 6px;border-radius:999px;background:var(--coral);color:var(--anchor);font:700 .7rem/1 var(--font-body)}
.recovery-requests{margin-top:26px;padding-top:20px;border-top:1px solid var(--line)}
.recovery-requests h3{margin:0 0 8px;color:var(--anchor);font-family:var(--font-heading);font-size:1.2rem;letter-spacing:-.02em}
.recovery-requests .small-note{margin:6px 0 0}
.recovery-card{display:grid;gap:10px;border-left-color:#c47a1a;min-width:0}
/* Empêche un enfant large (e-mail/adresse long) d'élargir la carte au-delà de
   sa colonne : `min-width:0` laisse les items grid/flex se rétracter et les
   longues valeurs se couper. Corrige un débordement horizontal de quelques px
   en 390 px (défaut CSS réel, diagnostiqué sur la pile NAS). */
.recovery-card>*{min-width:0}
.recovery-card .request-top,
.recovery-card .recovery-contact,
.recovery-card .recovery-candidate,
.recovery-card .recovery-status,
.recovery-card .recovery-approve,
.recovery-card .recovery-refuse{min-width:0;overflow-wrap:anywhere;max-width:100%}
.recovery-card h3{margin:0;font-size:1.05rem;color:var(--anchor)}
.recovery-status{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.recovery-chip-pending{background:var(--sand);color:var(--anchor)}
.recovery-chip-owner_approved{background:var(--harmony);color:#fff}
.recovery-chip-owner_refused{background:#f2eae5;color:#705f63}
.recovery-chip-completed{background:var(--sky);color:var(--anchor)}
.recovery-chip-dismissed{background:#f2eae5;color:#705f63}
.chip-contact-verified{background:var(--harmony);color:#fff}
.chip-contact-pending{background:var(--sand);color:var(--anchor)}
.recovery-contact{margin:4px 0 0;font-size:.84rem;color:#624d51}
.recovery-candidates{padding:10px 12px;border:1px solid rgba(93,10,20,.12);border-radius:12px;background:#fffaf5}
.recovery-candidates-title{margin:0 0 4px;color:var(--anchor);font-weight:700;font-size:.82rem}
.recovery-candidate{margin:2px 0;font-size:.85rem;color:#4f4044;overflow-wrap:anywhere}
.recovery-candidates-warning{margin:6px 0 0;color:#a01423;font-weight:650;font-size:.83rem}
.recovery-decision,.recovery-proof,.recovery-note{margin:0;font-size:.84rem;color:#4f4044;overflow-wrap:anywhere}
.recovery-proof{color:var(--anchor)}
.recovery-approve,.recovery-refuse{display:grid;gap:8px;padding:12px;border:1px solid rgba(93,10,20,.14);border-radius:14px;background:#fff8eb}
.recovery-approve label,.recovery-refuse label{font-size:.84rem;font-weight:650;color:var(--anchor)}
.recovery-attestation{display:flex;align-items:flex-start;gap:8px;font-weight:600;font-size:.83rem;line-height:1.45}
.recovery-attestation input{flex:0 0 auto;margin-top:2px}
.recovery-approve textarea{min-height:64px}
.recovery-approve-actions,.recovery-refuse-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.recovery-approve-help,.recovery-refuse-help{margin:0}
.recovery-confirm-row{display:grid;gap:8px;padding:10px 12px;border:1px dashed rgba(93,10,20,.3);border-radius:12px}
@media(max-width:680px){
  .recovery-approve-actions .button,.recovery-refuse-actions .button{flex:1 1 auto;justify-content:center}
  .recovery-status{align-items:flex-start}
}

/* === AutoDev M1 — « Mes demandes d’amélioration » (console Owner) =========
   Section autonome : création multimodale (texte + captures annotées/expurgées
   + audio), suivi. L’éditeur d’annotation est un canvas maison (CSP self).
   Couleurs alignées sur les variables de la charte. */
.improvement-row{cursor:pointer}
.improvement-cell-main{display:grid;gap:2px;min-width:0}
.improvement-cell-main strong{color:var(--anchor);font-size:.95rem;overflow-wrap:anywhere}
.improvement-cell-excerpt{color:#715a5e;font-size:.82rem;overflow-wrap:anywhere}
.improvement-status-submitted{background:var(--sky);color:var(--anchor)}
.improvement-status-analyzing{background:var(--sand);color:var(--anchor)}
.improvement-status-analyzed{background:var(--sky);color:var(--anchor)}
.improvement-status-needs_answer{background:var(--coral);color:var(--anchor)}
.improvement-status-needs_approval{background:var(--coral);color:var(--anchor)}
.improvement-status-building,.improvement-status-testing,.improvement-status-reviewing{background:var(--sand);color:var(--anchor)}
.improvement-status-blocked{background:#f2eae5;color:#705f63}
.improvement-status-pr_open,.improvement-status-ready-to-publish{background:var(--harmony);color:#fff}
.improvement-status-delivered{background:var(--harmony);color:#fff}
.improvement-status-rejected,.improvement-status-cancelled{background:#f2eae5;color:#705f63}

.improvement-form{display:grid;gap:4px;margin-top:18px;padding:clamp(16px,3vw,24px);border:1px solid var(--line);border-radius:20px;background:#fff}
.improvement-form h3{margin:0 0 6px;color:var(--anchor);font-family:var(--font-heading);font-size:1.15rem}
.improvement-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:14px;margin-top:6px}
.improvement-form label{color:var(--anchor);font-weight:650;font-size:.86rem}
.improvement-attachments{margin:18px 0 6px;padding:14px 16px;border:1px dashed rgba(93,10,20,.25);border-radius:16px}
.improvement-attachments legend{color:var(--anchor);font-weight:700;font-size:.86rem;padding:0 6px}
.improvement-attach-actions{display:flex;flex-wrap:wrap;gap:8px}
.improvement-file-pick{cursor:pointer;display:inline-flex;align-items:center}
.improvement-staged{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:10px}
.improvement-staged-empty{margin:12px 0 0;color:#715a5e;font-size:.85rem}
.improvement-staged-item{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:12px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--cream);min-width:0}
.improvement-staged-thumb{width:64px;height:64px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#fff}
.improvement-staged-icon{display:flex;width:64px;height:64px;align-items:center;justify-content:center;border-radius:10px;background:#fff;border:1px solid var(--line);color:var(--anchor);font-weight:700}
.improvement-staged-info{display:grid;gap:6px;min-width:0}
.improvement-staged-name{margin:0;font-size:.85rem;color:var(--ink);overflow-wrap:anywhere}
.improvement-staged-caption{min-height:40px}
.improvement-staged-audio{width:100%;max-width:340px;height:36px}
.improvement-staged-actions{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.improvement-chip-annotated{background:var(--sand);color:var(--anchor);margin-left:6px}

.improvement-detail{display:grid;gap:16px}
.improvement-detail-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.improvement-pr-link{font-weight:700;color:var(--anchor)}
.improvement-detail-body{margin:0;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
.improvement-gallery h3,.improvement-thread h3{margin:0 0 10px;color:var(--anchor);font-family:var(--font-heading);font-size:1.05rem}
.improvement-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(180px,100%),1fr));gap:12px}
.improvement-gallery-item{margin:0;display:grid;gap:6px;min-width:0}
.improvement-gallery-item img{width:100%;height:140px;object-fit:cover;border:1px solid var(--line);border-radius:12px;cursor:zoom-in;background:#fff}
.improvement-gallery-item figcaption{font-size:.78rem;color:#715a5e;overflow-wrap:anywhere}
.improvement-file-item{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:0}
.improvement-file-name{font-weight:650;color:var(--anchor);overflow-wrap:anywhere}
.improvement-file-audio{height:36px;max-width:320px}
.improvement-file-download{text-decoration:none}
.improvement-transcript{flex:1 1 100%;margin:0}
.improvement-transcript summary{cursor:pointer;color:var(--anchor);font-weight:650;font-size:.85rem}
.improvement-transcript-text{margin:6px 0 0;color:var(--ink);font-size:.9rem;white-space:pre-wrap;overflow-wrap:anywhere}
.improvement-thread-list{display:grid;gap:10px}
.improvement-message{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;min-width:0}
.improvement-message-owner{background:rgba(189,229,254,.22);border-color:rgba(93,10,20,.14)}
.improvement-message-engine{background:var(--cream)}
.improvement-message-meta{margin:0 0 4px;color:#715a5e;font-size:.76rem;font-weight:650}
.improvement-message-body{margin:0;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
.improvement-message-action{background:#fff3f3;border:1px solid #e3b4b4;border-left:4px solid #b00020}
.improvement-message-action .improvement-message-meta{color:#b00020;font-weight:700}
.improvement-chip-action{background:#b00020;color:#fff;font-weight:700}
.improvement-action-alert{margin:0 0 10px;padding:10px 12px;border:1px solid #b00020;border-left:5px solid #b00020;border-radius:8px;background:#fff3f3;color:#7a0016;font-weight:650}
.improvement-reply{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.improvement-approval{margin-top:16px;padding:14px;border:1px solid rgba(93,10,20,.16);border-radius:14px;background:#fff8eb}
.improvement-detail-actions{margin-top:18px;flex-wrap:wrap}

.modal-wide .improvement-annotator-panel{width:min(100%,900px)}
.improvement-annotator-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0 12px}
.improvement-annotator-tools [aria-pressed="true"]{background:var(--anchor);color:#fff;border-color:transparent}
.improvement-annotator-color{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;color:var(--anchor);font-weight:650}
.improvement-annotator-color input{width:40px;height:32px;padding:0;border:1px solid var(--line);border-radius:8px;background:#fff}
.improvement-annotator-stage{max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:14px;background:#f7f2ee;padding:8px}
.improvement-annotator-stage canvas{display:block;max-width:100%;height:auto;border-radius:8px;background:#fff;touch-action:none;cursor:crosshair}
.improvement-annotator-text-field{display:block;margin:10px 0}
.improvement-purge-summary{display:grid;gap:14px;margin:12px 0}
.improvement-purge-block h3{margin:0 0 6px;color:var(--anchor);font-size:.9rem;text-transform:uppercase;letter-spacing:.05em}
.improvement-purge-title{margin:0 0 4px;font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.improvement-purge-body{margin:0;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}
.improvement-purge-list{margin:0;padding-left:20px;display:grid;gap:4px;font-size:.88rem;color:#4f4044;overflow-wrap:anywhere}

@media(max-width:640px){
  .improvement-staged-item{grid-template-columns:56px minmax(0,1fr)}
  .improvement-staged-actions{grid-column:1 / -1;flex-direction:row;justify-content:flex-start;flex-wrap:wrap}
  .improvement-detail-actions .button{flex:1 1 auto;justify-content:center}
  .improvement-annotator-tools .button{flex:0 1 auto}
}

/* ---------------------------------------------------------------------------
 * Fiche de demande AutoDev — confort de lecture (2026-10-17, chantier modal UX).
 *
 * B : le modal exploite la largeur sur desktop (~88 vw, plafonnée), la hauteur
 *     est bornée au viewport avec un DÉFILEMENT INTERNE unique (en-tête et
 *     actions restent accessibles : « sticky » dans la zone défilante). Pas de
 *     double barre : le panneau lui-même ne défile pas, seul
 *     `.improvement-request-scroll`.
 * A : le Markdown des agents est rendu dans `.improvement-rich` (voir admin.js)
 *     sans jamais déborder (mots/URL longs coupés, tableaux et code à
 *     défilement horizontal interne).
 * ------------------------------------------------------------------------- */
#improvement-request-modal{padding:clamp(10px,2.2vw,24px)}
#improvement-request-modal .improvement-request-panel{
  display:flex;flex-direction:column;
  width:min(100%,clamp(680px,88vw,1160px));
  max-height:calc(100dvh - 2*clamp(10px,2.2vw,24px));
  padding:0;overflow:hidden;
}
.improvement-request-scroll{
  flex:1 1 auto;min-height:0;
  overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;overscroll-behavior:contain;
}
.improvement-request-header{
  position:sticky;top:0;z-index:2;
  padding:clamp(16px,2.4vw,24px) clamp(16px,3vw,28px) 12px;
  background:#fff;border-bottom:1px solid var(--line);border-radius:20px 20px 0 0;
}
.improvement-request-header h2{margin:0 0 6px;overflow-wrap:anywhere}
.improvement-request-header .small-note{margin:0;overflow-wrap:anywhere}
.improvement-request-footer{
  position:sticky;bottom:0;z-index:2;
  display:grid;gap:10px;
  padding:12px clamp(16px,3vw,28px) clamp(16px,2.4vw,22px);
  background:#fff;border-top:1px solid var(--line);border-radius:0 0 20px 20px;
}
/* Le pied de page reste compact : on neutralise les encadrés `.toolbar` crème. */
#improvement-request-modal .improvement-request-footer .toolbar{margin:0;padding:0;border:0;border-radius:0;background:transparent;gap:8px}
#improvement-request-modal .improvement-request-footer .improvement-reply,
#improvement-request-modal .improvement-request-footer .improvement-approval,
#improvement-request-modal .improvement-request-footer .improvement-detail-actions{margin-top:0}
#improvement-request-modal .improvement-request-footer .improvement-reply{padding-top:0;border-top:0}
#improvement-request-modal .improvement-detail{padding:16px clamp(16px,3vw,28px)}
#improvement-request-modal #improvement-reply-body,
#improvement-request-modal #improvement-approval-note{min-height:60px;resize:vertical}

/* A — contenu Markdown rendu : lisible et sans débordement. */
.improvement-rich{overflow-wrap:anywhere;word-break:break-word;white-space:normal}
.improvement-rich>*{min-width:0}
.improvement-rich>*:first-child{margin-top:0}
.improvement-rich>*:last-child{margin-bottom:0}
.improvement-rich p{margin:0 0 10px;line-height:1.55}
.improvement-rich h2,.improvement-rich h3{margin:16px 0 8px;color:var(--anchor);font-family:var(--font-heading);line-height:1.2}
.improvement-rich h2{font-size:1.15rem}
.improvement-rich h3{font-size:1.02rem}
.improvement-rich ul,.improvement-rich ol{margin:0 0 10px;padding-left:22px}
.improvement-rich li{margin:2px 0;line-height:1.5}
.improvement-rich a{color:var(--anchor);overflow-wrap:anywhere}
.improvement-rich img{max-width:100%;height:auto;border-radius:10px}
.improvement-rich blockquote{margin:0 0 10px;padding:6px 14px;border-left:4px solid var(--sand);color:#715a5e;background:rgba(254,232,185,.25);border-radius:0 10px 10px 0}
.improvement-rich hr{border:0;border-top:1px solid var(--line);margin:14px 0}
.improvement-rich code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.86em;background:#f2eae5;padding:1px 5px;border-radius:6px;overflow-wrap:anywhere}
.improvement-rich pre{margin:0 0 12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#f7f2ee;overflow-x:auto;max-width:100%}
.improvement-rich pre code{display:block;background:none;padding:0;white-space:pre;overflow-wrap:normal}
.improvement-rich table{display:block;width:100%;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:0 0 12px;font-size:.9rem}
.improvement-rich th,.improvement-rich td{border:1px solid var(--line);padding:6px 10px;text-align:left;vertical-align:top;overflow-wrap:anywhere}
.improvement-rich th{background:#fff1cf;color:var(--anchor)}

@media(max-width:640px){
  #improvement-request-modal{padding:8px}
  #improvement-request-modal .improvement-request-panel{width:100%;max-height:calc(100dvh - 16px);border-radius:14px}
  .improvement-request-header{border-radius:14px 14px 0 0}
  .improvement-request-footer{border-radius:0 0 14px 14px}
  /* Actions sur 2 colonnes : le pied de page reste compact sur mobile. */
  #improvement-request-modal .improvement-detail-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}
  #improvement-request-modal .improvement-detail-actions .button{width:auto}
}

/* ---------------------------------------------------------------------------
 * RFC5 + RFC2 (AutoDev, 2026-10-16) — console Owner.
 *
 * RFC5 : les filtres « Afficher » (demandes d'amélioration, réservations,
 *        personnes) sont des segmented controls en boutons, SANS couleur de
 *        fond : l'état actif se lit au poids typographique + à la bordure, ce
 *        qui reste lisible et cliquable sur mobile (cibles >= 40 px).
 * RFC2 : badges d'acteurs du fil / de l'étape en cours (« qui fait quoi »),
 *        cloche du centre de notifications AutoDev et conteneur de toasts
 *        #autodev-toasts. Le CSS ne pose aucun style inline (CSP work/prod
 *        interdit `unsafe-inline`).
 * ------------------------------------------------------------------------- */

/* RFC5 — segmented control sans fond (actif = poids + bordure).
   Les sélecteurs portent #dashboard pour dépasser les règles d'id
   `#dashboard .button-outline` (bordure/couleur de fond). */
.segmented-filter{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.segmented-filter .button{width:auto;flex:0 1 auto;min-height:40px;padding:8px 14px}
#dashboard .segmented-filter .button{border:1px solid var(--line);background:#fff;color:#715a5e;font-weight:600}
#dashboard .segmented-filter .button:hover,#dashboard .segmented-filter .button:focus-visible{border-color:rgba(93,10,20,.4);background:#fff;color:var(--anchor)}
#dashboard .segmented-filter .button[aria-pressed="true"]{border-color:var(--anchor);background:#fff;color:var(--anchor);font-weight:800;box-shadow:inset 0 0 0 1px var(--anchor)}

/* RFC2 — badges d'acteurs : icône Material Symbols déjà chargée + couleur
   distincte, contraste texte/fond >= 5.9:1 (WCAG AA). */
.actor-owner,.actor-engine,.actor-builder,.actor-tester,.actor-review,.actor-ci{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border:1px solid currentColor;border-radius:999px;font-size:.78rem;font-weight:700;line-height:1.5;white-space:nowrap;vertical-align:middle}
.actor-owner{background:#f6e7e9;color:#5d0a14}
.actor-engine{background:#e3f0f8;color:#0b4f7a}
.actor-builder{background:#efe9fa;color:#5b2a86}
.actor-tester{background:#e4f3e9;color:#175d33}
.actor-review{background:#fdeeda;color:#8a4b00}
.actor-ci{background:#e1f3f3;color:#0a5f5f}
.actor-owner .material-symbols-outlined,.actor-engine .material-symbols-outlined,.actor-builder .material-symbols-outlined,.actor-tester .material-symbols-outlined,.actor-review .material-symbols-outlined,.actor-ci .material-symbols-outlined,.actor-owner .material-symbols-rounded,.actor-engine .material-symbols-rounded,.actor-builder .material-symbols-rounded,.actor-tester .material-symbols-rounded,.actor-review .material-symbols-rounded,.actor-ci .material-symbols-rounded{font-family:"Material Symbols Outlined";font-size:1.05rem;line-height:1;font-weight:normal;font-style:normal;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;font-feature-settings:"liga";-webkit-font-smoothing:antialiased}

/* RFC2 — cloche du centre de notifications AutoDev (en-tête de la console). */
.notif-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:44px;min-width:44px;padding:8px 10px;border:1px solid transparent;border-radius:999px;background:var(--sand);color:var(--anchor);font:inherit;font-weight:700;cursor:pointer}
.notif-bell:hover,.notif-bell:focus-visible{background:#f7dca4}
.notif-bell[aria-expanded="true"]{background:var(--coral)}
.notif-bell .material-symbols-outlined{font-family:"Material Symbols Outlined";font-size:1.3rem;line-height:1;font-weight:normal;font-style:normal;letter-spacing:normal;text-transform:none;white-space:nowrap;direction:ltr;font-feature-settings:"liga";-webkit-font-smoothing:antialiased}
.notif-bell-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:var(--anchor);color:#fff;font-size:.72rem;font-weight:800;line-height:1}

/* RFC2 — conteneur des toasts « action requise » (vide = masqué). */
#autodev-toasts{position:fixed;top:22px;right:22px;z-index:140;display:grid;gap:10px;max-width:min(92vw,420px)}
#autodev-toasts:empty{display:none}

@media(max-width:620px){
  .segmented-filter{width:100%}
  .segmented-filter .button{flex:1 1 auto}
  .notif-bell{min-width:40px;padding:8px}
  #autodev-toasts{left:14px;right:14px;top:14px;max-width:none}
}

/* Réservable distinct des rendez-vous occupés, dans les vues du calendrier. */
.oc-slot { background: #d9f0df; color: #244a31; }
.oc-dot.oc-slot { background: #39784c; }
