/* Presmile — composants CSS pur. Charger après tokens.css. Préfixe pm-. */
[data-theme="dark"]{color-scheme:dark}
.pm{font:400 16px/24px var(--font-body);color:var(--text-primary);background:var(--surface-page);-webkit-font-smoothing:antialiased;text-size-adjust:100%}
.pm *,.pm *::before,.pm *::after{box-sizing:border-box}
.pm :focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
.pm .is-focus{outline:3px solid var(--focus-ring);outline-offset:2px}
.pm h1,.pm h2,.pm h3,.pm h4,.pm p{margin:0}
.pm .amount-lg,.pm .amount-md,.pm .amount-sm,.pm .pm-num{font-variant-numeric:tabular-nums}
.pm .pm-muted{color:var(--text-secondary)}
.pm-ic{width:var(--size-icon);height:var(--size-icon);flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pm-cq{container-type:inline-size;width:100%}
.pm-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@keyframes pm-spin{to{transform:rotate(360deg)}}
@keyframes pm-shimmer{to{background-position:-200% 0}}
@keyframes pm-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.pm *,.pm *::before,.pm *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}

/* Boutons */
.pm-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--size-field);min-width:var(--size-touch);padding:0 var(--space-5);font:600 16px/1 var(--font-body);border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap;background:var(--brand-primary);color:var(--text-on-brand);border-color:var(--border-strong);transition:background var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard)}
.pm-btn:hover{background:var(--brand-primary-hover)}
.pm-btn:active{background:var(--brand-primary-active)}
.pm-btn--secondary{background:var(--surface-card);color:var(--text-primary);border-color:var(--border-default)}
.pm-btn--secondary:hover{background:var(--surface-sunken);border-color:var(--border-strong)}
.pm-btn--secondary:active{background:var(--neutral-bg)}
.pm-btn--ghost{background:transparent;color:var(--text-link);border-color:transparent;padding:0 var(--space-3)}
.pm-btn--ghost:hover{background:var(--surface-sunken)}
.pm-btn--ghost:active{background:var(--info-bg)}
.pm-btn--danger{background:var(--surface-card);color:var(--danger-text);border-color:var(--danger-border)}
.pm-btn--danger:hover{background:var(--danger-bg)}
.pm-btn--sm{min-height:var(--size-touch);padding:0 var(--space-4);font-size:14px}
.pm-btn--block{display:flex;width:100%}
.pm-btn--icon{padding:0;width:var(--size-touch)}
.pm-btn:disabled,.pm-btn[aria-disabled="true"]{background:var(--surface-sunken);color:var(--text-secondary);border-color:var(--border-subtle);cursor:not-allowed}
.pm-btn[aria-busy="true"]{pointer-events:none;cursor:progress}
.pm-btn[aria-busy="true"]::before{content:"";width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:pm-spin .8s linear infinite}

/* Champs */
.pm-field{display:grid;gap:var(--space-1)}
.pm-label{font:600 14px/20px var(--font-body)}
.pm-label small{font-weight:400;color:var(--text-secondary)}
.pm-hint{font:400 14px/20px var(--font-body);color:var(--text-secondary)}
.pm-error{display:flex;gap:var(--space-2);align-items:flex-start;font:500 14px/20px var(--font-body);color:var(--danger-text)}
.pm-error .pm-ic{width:18px;height:18px;margin-top:1px}
.pm-input,.pm-select,.pm-textarea{width:100%;min-height:var(--size-field);padding:0 var(--space-3);font:400 16px/24px var(--font-body);color:var(--text-primary);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-md);appearance:none;transition:border-color var(--duration-fast) var(--ease-standard)}
.pm-textarea{padding:var(--space-3);min-height:120px;resize:vertical}
.pm-input::placeholder,.pm-textarea::placeholder{color:var(--text-secondary)}
.pm-input:hover,.pm-select:hover,.pm-textarea:hover{border-color:var(--border-strong)}
.pm-input:focus-visible,.pm-select:focus-visible,.pm-textarea:focus-visible{border-color:var(--focus-ring)}
.pm-input:disabled,.pm-select:disabled,.pm-textarea:disabled{background:var(--surface-sunken);color:var(--text-secondary);border-style:dashed;cursor:not-allowed}
.pm-input[aria-invalid="true"],.pm-select[aria-invalid="true"],.pm-textarea[aria-invalid="true"]{border-color:var(--danger-text);background:var(--danger-bg);box-shadow:inset 0 0 0 1px var(--danger-text)}
.pm-input-group{position:relative}
.pm-input--amount{text-align:right;padding-right:44px;font-variant-numeric:tabular-nums;font-weight:600}
.pm-affix{position:absolute;right:var(--space-3);top:0;bottom:0;display:flex;align-items:center;font-weight:600;color:var(--text-secondary);pointer-events:none}
.pm-input--date{min-width:0}
.pm-select-wrap{position:relative}
.pm-select{padding-right:44px}
.pm-select-wrap .pm-ic{position:absolute;right:var(--space-3);top:14px;pointer-events:none;color:var(--text-secondary)}
.pm-search{position:relative}
.pm-search>.pm-ic{position:absolute;left:var(--space-3);top:14px;color:var(--text-secondary);pointer-events:none}
.pm-search .pm-input{padding-left:44px;padding-right:44px;border-radius:var(--radius-pill)}
.pm-search__clear{position:absolute;right:2px;top:2px;width:44px;height:44px;border:0;background:none;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-pill);display:grid;place-items:center}
.pm-skeleton-field{height:var(--size-field)}

/* Cases, radios, interrupteurs */
.pm-check{display:flex;gap:var(--space-3);align-items:flex-start;min-height:var(--size-touch);padding:10px 0;cursor:pointer;font:400 16px/24px var(--font-body)}
.pm-check input{appearance:none;flex:none;width:24px;height:24px;margin:0;display:grid;place-content:center;background:var(--surface-card);border:1.5px solid var(--border-default);border-radius:var(--radius-xs);cursor:pointer}
.pm-check input[type=radio]{border-radius:50%}
.pm-check:hover input{border-color:var(--border-strong)}
.pm-check input:checked{background:var(--brand-primary);border-color:var(--border-strong)}
.pm-check input[type=checkbox]:checked::after{content:"";width:6px;height:12px;border:solid var(--text-on-brand);border-width:0 2.5px 2.5px 0;transform:rotate(45deg) translate(-1px,-1px)}
.pm-check input[type=radio]:checked::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--text-on-brand)}
.pm-check input:disabled{background:var(--surface-sunken);border-style:dashed;cursor:not-allowed}
.pm-check:has(input:disabled){color:var(--text-secondary);cursor:not-allowed}
.pm-check input[aria-invalid="true"]{border-color:var(--danger-text);box-shadow:inset 0 0 0 1px var(--danger-text)}
.pm-check small{display:block;color:var(--text-secondary);font-size:14px;line-height:20px}
.pm-switch{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:var(--size-touch);cursor:pointer}
.pm-switch input{appearance:none;flex:none;position:relative;width:52px;height:32px;margin:0;border-radius:var(--radius-pill);background:var(--surface-sunken);border:1.5px solid var(--border-default);cursor:pointer;transition:background var(--duration-base) var(--ease-standard)}
.pm-switch input::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--text-secondary);transition:transform var(--duration-base) var(--ease-standard)}
.pm-switch input:checked{background:var(--brand-primary);border-color:var(--border-strong)}
.pm-switch input:checked::after{transform:translateX(20px);background:var(--text-on-brand)}
.pm-switch input:disabled{border-style:dashed;cursor:not-allowed}
.pm-switch__state{font:600 13px/1 var(--font-body);color:var(--text-secondary);min-width:60px;text-align:right}

/* Badges */
.pm-badge{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:0 var(--space-2);border-radius:var(--radius-sm);font:600 13px/1 var(--font-body);white-space:nowrap;background:var(--neutral-bg);color:var(--neutral-text)}
.pm-badge .pm-ic{width:14px;height:14px}
.pm-badge--success{background:var(--success-bg);color:var(--success-text)}
.pm-badge--warning{background:var(--warning-bg);color:var(--warning-text)}
.pm-badge--danger{background:var(--danger-bg);color:var(--danger-text)}
.pm-badge--info{background:var(--info-bg);color:var(--info-text)}
.pm-badge--ai{background:var(--brand-azur-soft);color:var(--text-primary)}
.pm-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:var(--radius-pill);background:var(--brand-primary);color:var(--text-on-brand);font:700 12px/1 var(--font-body)}

/* Cartes */
.pm-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-4)}
.pm-card--raised{box-shadow:var(--shadow-md)}
.pm-card--interactive{cursor:pointer;transition:box-shadow var(--duration-base) var(--ease-standard),border-color var(--duration-base) var(--ease-standard);text-decoration:none;color:inherit;display:block}
.pm-card--interactive:hover{border-color:var(--border-default);box-shadow:var(--shadow-md)}
.pm-card--interactive:active{box-shadow:none}
.pm-card--error{border-color:var(--danger-border);background:var(--danger-bg)}
.pm-card__head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3)}
.pm-card__title{font:600 18px/24px var(--font-display);letter-spacing:-.01em}
.pm-card__meta{font:400 14px/20px var(--font-body);color:var(--text-secondary)}
.pm-dossier{display:grid;gap:var(--space-3)}
.pm-dossier__top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3)}
.pm-dossier__foot{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border-subtle)}
.pm-dossier__next{display:flex;gap:var(--space-2);align-items:center;font:500 14px/20px var(--font-body);color:var(--text-primary);background:var(--surface-sunken);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)}
.pm-card--loading{pointer-events:none}
@media (min-width:1024px){.pm-card{padding:var(--space-5)}}

/* Tableaux */
.pm-table{width:100%;border-collapse:collapse;font:400 14px/20px var(--font-body)}
.pm-table caption{text-align:left;padding-bottom:var(--space-2);font:600 14px/20px var(--font-body)}
.pm-table th{text-align:left;font:600 12px/16px var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);padding:var(--space-3);border-bottom:1px solid var(--border-strong);white-space:nowrap}
.pm-table td{padding:var(--space-3);border-bottom:1px solid var(--border-subtle);vertical-align:middle;min-height:var(--size-touch)}
.pm-table tbody tr{transition:background var(--duration-fast) var(--ease-standard)}
.pm-table tbody tr:hover,.pm-table tbody tr.is-hover{background:var(--surface-sunken)}
.pm-table tbody tr:focus-within{background:var(--surface-sunken)}
.pm-table .num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.pm-table th.num{font-weight:600}
.pm-table td a{color:var(--text-primary);font-weight:600;text-decoration:none}
.pm-table td a:hover{text-decoration:underline}
.pm-table tr.is-selected{background:var(--brand-soft)}
.pm-table tr.is-late td:first-child{box-shadow:inset 0 0 0 0 transparent}
.pm-table__wrap{overflow-x:auto;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--surface-card)}
.pm-table__wrap .pm-table tr:last-child td{border-bottom:0}
@container (max-width:640px){
.pm-table--stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.pm-table--stack,.pm-table--stack tbody,.pm-table--stack tr,.pm-table--stack td{display:block;width:100%}
.pm-table--stack tr{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3)}
.pm-table--stack td{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);border:0;padding:6px 0;text-align:right}
.pm-table--stack td::before{content:attr(data-label);color:var(--text-secondary);font:500 13px/18px var(--font-body);text-align:left;flex:none}
.pm-table--stack td:first-child{font-size:16px;padding-bottom:var(--space-2);margin-bottom:var(--space-1);border-bottom:1px solid var(--border-subtle);text-align:left}
.pm-table--stack td:first-child::before{display:none}
.pm-table--stack tbody tr:hover{background:var(--surface-card)}
.pm-table--stack .num{font-size:16px}
}

.pm-sort{display:inline-flex;align-items:center;gap:4px;background:none;border:0;padding:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;cursor:pointer;min-height:var(--size-touch)}

/* Onglets */
.pm-tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--border-subtle);overflow-x:auto;scrollbar-width:none}
.pm-tab{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--size-touch);padding:0 var(--space-4);font:600 15px/1 var(--font-body);color:var(--text-secondary);background:none;border:0;border-bottom:3px solid transparent;margin-bottom:-1px;cursor:pointer;white-space:nowrap}
.pm-tab:hover{color:var(--text-primary);background:var(--surface-sunken);border-radius:var(--radius-md) var(--radius-md) 0 0}
.pm-tab[aria-selected="true"]{color:var(--text-primary);border-bottom-color:var(--text-primary)}
.pm-tab:disabled{color:var(--text-disabled);cursor:not-allowed}
.pm-segments{display:inline-grid;grid-auto-flow:column;gap:2px;padding:3px;background:var(--surface-sunken);border-radius:var(--radius-md);border:1px solid var(--border-subtle)}
.pm-segments button{min-height:38px;padding:0 var(--space-4);border:0;border-radius:var(--radius-sm);background:none;font:600 14px/1 var(--font-body);color:var(--text-secondary);cursor:pointer}
.pm-segments button[aria-pressed="true"]{background:var(--surface-card);color:var(--text-primary);box-shadow:var(--shadow-sm)}
.pm-chips{display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none;padding:2px}
.pm-chip{display:inline-flex;align-items:center;gap:var(--space-2);min-height:var(--size-touch);padding:0 var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--border-default);background:var(--surface-card);color:var(--text-primary);font:600 14px/1 var(--font-body);cursor:pointer;white-space:nowrap}
.pm-chip:hover{border-color:var(--border-strong)}
.pm-chip[aria-pressed="true"]{background:var(--text-primary);color:var(--surface-page);border-color:var(--text-primary)}

/* Modales et tiroirs */
.pm-scrim{position:fixed;inset:0;z-index:var(--z-drawer);background:var(--surface-inverse);opacity:var(--opacity-scrim)}
.pm-modal,.pm-drawer{position:fixed;z-index:var(--z-modal);background:var(--surface-overlay);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;animation:pm-in var(--duration-slow) var(--ease-standard)}
.pm-modal{left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 32px);border-radius:var(--radius-lg);animation:none}
.pm-drawer{top:0;right:0;bottom:0;width:min(440px,100vw);border-radius:var(--radius-lg) 0 0 var(--radius-lg)}
dialog.pm-modal,dialog.pm-drawer{border:0;padding:0;color:var(--text-primary);margin:0}
dialog.pm-modal:not([open]),dialog.pm-drawer:not([open]){display:none}
dialog.pm-modal::backdrop,dialog.pm-drawer::backdrop{background:var(--surface-inverse);opacity:var(--opacity-scrim)}
.pm-dialog__head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:var(--space-5) var(--space-5) var(--space-3)}
.pm-dialog__title{font:600 20px/26px var(--font-display);letter-spacing:-.015em}
.pm-dialog__body{padding:var(--space-2) var(--space-5) var(--space-5);overflow:auto;display:grid;gap:var(--space-4)}
.pm-dialog__foot{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--border-subtle);flex-wrap:wrap}
.pm-dialog__grab{display:none;width:40px;height:4px;border-radius:2px;background:var(--border-default);margin:var(--space-2) auto 0}
@media (max-width:767.98px){
 .pm-modal,.pm-drawer{left:0;right:0;top:auto;bottom:0;width:100%;max-height:92dvh;transform:none;border-radius:var(--radius-xl) var(--radius-xl) 0 0}
 .pm-dialog__grab{display:block}
 .pm-dialog__foot .pm-btn{flex:1}
}
.pm-modal.is-static,.pm-drawer.is-static{position:relative!important;inset:auto!important;transform:none!important;margin:0 auto;animation:none;width:100%;max-width:520px;border-radius:var(--radius-lg)!important}

/* Notifications */
.pm-alert,.pm-toast{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--info-border);background:var(--info-bg);color:var(--text-primary);font:400 15px/22px var(--font-body)}
.pm-alert .pm-ic,.pm-toast .pm-ic{margin-top:2px;color:var(--info-text)}
.pm-alert strong,.pm-toast strong{display:block;font-weight:600}
.pm-alert--success,.pm-toast--success{background:var(--success-bg);border-color:var(--success-border)}.pm-alert--success .pm-ic,.pm-toast--success .pm-ic{color:var(--success-text)}
.pm-alert--warning,.pm-toast--warning{background:var(--warning-bg);border-color:var(--warning-border)}.pm-alert--warning .pm-ic,.pm-toast--warning .pm-ic{color:var(--warning-text)}
.pm-alert--danger,.pm-toast--danger{background:var(--danger-bg);border-color:var(--danger-border)}.pm-alert--danger .pm-ic,.pm-toast--danger .pm-ic{color:var(--danger-text)}
.pm-toast{box-shadow:var(--shadow-lg);background-color:var(--surface-card);animation:pm-in var(--duration-slow) var(--ease-standard)}
.pm-toast__body{flex:1}
.pm-toast__act{margin-left:auto;align-self:center}
.pm-toasts{position:fixed;z-index:var(--z-toast);left:var(--space-4);right:var(--space-4);bottom:calc(var(--size-tabbar) + var(--space-4));display:grid;gap:var(--space-2)}
@media (min-width:1024px){.pm-toasts{left:auto;right:var(--space-6);bottom:var(--space-6);width:400px}}

/* États vides et squelettes */
.pm-empty{display:grid;justify-items:center;text-align:center;gap:var(--space-3);padding:var(--space-12) var(--space-4)}
.pm-empty__art{width:96px;height:96px;border-radius:50%;background:var(--brand-azur-soft);display:grid;place-items:center;color:var(--text-primary);position:relative}
.pm-empty__art .pm-ic{width:40px;height:40px;stroke-width:1.5}
.pm-empty__art::after{content:"";position:absolute;right:6px;top:8px;width:20px;height:20px;border-radius:50%;background:var(--brand-primary);border:1px solid var(--border-strong)}
.pm-empty h3{font:600 22px/28px var(--font-display);letter-spacing:-.015em}
.pm-empty p{max-width:36ch;color:var(--text-secondary)}
.pm-skel{display:block;border-radius:var(--radius-sm);min-height:14px;background:linear-gradient(90deg,var(--surface-sunken) 0%,var(--border-subtle) 50%,var(--surface-sunken) 100%);background-size:200% 100%;animation:pm-shimmer 1.4s linear infinite}
.pm-skel--title{height:22px;width:60%}.pm-skel--line{height:14px}.pm-skel--short{width:40%}.pm-skel--badge{height:28px;width:84px;border-radius:var(--radius-sm)}.pm-skel--avatar{width:44px;height:44px;border-radius:50%}.pm-skel--btn{height:var(--size-field);width:140px;border-radius:var(--radius-md)}

/* Navigation */
.pm-sidebar{width:var(--size-sidebar);background:var(--surface-card);border-right:1px solid var(--border-subtle);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1);min-height:100%}
.pm-sidebar__brand{padding:var(--space-2) var(--space-3) var(--space-5)}
.pm-nav-item{display:flex;align-items:center;gap:var(--space-3);min-height:var(--size-touch);padding:0 var(--space-3);border-radius:var(--radius-md);color:var(--text-secondary);font:600 15px/1 var(--font-body);text-decoration:none}
.pm-nav-item:hover{background:var(--surface-sunken);color:var(--text-primary)}
.pm-nav-item[aria-current="page"]{background:var(--brand-soft);color:var(--text-primary)}
.pm-nav-item .pm-count{margin-left:auto}
.pm-sidebar__foot{margin-top:auto;padding-top:var(--space-4);border-top:1px solid var(--border-subtle);display:flex;gap:var(--space-3);align-items:center;font:600 14px/20px var(--font-body)}
.pm-avatar{width:40px;height:40px;border-radius:50%;background:var(--brand-azur-soft);color:var(--text-primary);display:grid;place-items:center;font:700 14px/1 var(--font-body);flex:none;border:1px solid var(--border-subtle)}
.pm-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-nav);height:calc(var(--size-tabbar) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);display:grid;grid-template-columns:repeat(5,1fr);background:var(--surface-card);border-top:1px solid var(--border-subtle)}
.pm-tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--size-touch);color:var(--text-secondary);font:600 12px/16px var(--font-body);text-decoration:none}
.pm-tabbar a .pm-tabbar__ic{display:grid;place-items:center;width:56px;height:30px;border-radius:var(--radius-pill)}
.pm-tabbar a[aria-current="page"]{color:var(--text-primary)}
.pm-tabbar a[aria-current="page"] .pm-tabbar__ic{background:var(--brand-soft)}
.pm-tabbar.is-static{position:relative;z-index:auto}
.pm-fab{position:fixed;right:var(--space-4);bottom:calc(var(--size-tabbar) + var(--space-4));z-index:var(--z-nav);width:56px;height:56px;border-radius:16px;display:grid;place-items:center;background:var(--brand-primary);color:var(--text-on-brand);border:1px solid var(--border-strong);box-shadow:var(--shadow-md);cursor:pointer}
.pm-fab .pm-ic{width:24px;height:24px}
.pm-topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:56px;padding:0 var(--space-4);background:var(--surface-page);position:sticky;top:0;z-index:var(--z-sticky)}
.pm-shell{min-height:100dvh;background:var(--surface-page)}
.pm-shell__side{display:none}
.pm-shell__main{padding-bottom:calc(var(--size-tabbar) + var(--space-8))}
.pm-page{max-width:var(--size-content);margin:0 auto;padding:var(--space-4);display:grid;gap:var(--space-6)}
.pm-page__head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap}
.pm-grid{display:grid;gap:var(--space-4)}
@media (min-width:768px){.pm-page{padding:var(--space-6)}.pm-grid--2{grid-template-columns:1fr 1fr}.pm-grid--3{grid-template-columns:repeat(3,1fr)}}
@media (min-width:1024px){
 .pm-shell{display:grid;grid-template-columns:var(--size-sidebar) 1fr}
 .pm-shell__side{display:block;position:sticky;top:0;height:100dvh}
 .pm-shell__main{padding-bottom:var(--space-10)}
 .pm-tabbar,.pm-fab{display:none}
}

/* Calendrier des événements */
.pm-cal{container-type:inline-size;min-width:0;max-width:100%;background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-3);display:grid;gap:var(--space-2)}
.pm-cal__bar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-2)}
.pm-cal__title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;font:600 20px/26px var(--font-display);letter-spacing:-.015em;text-transform:capitalize}
.pm-cal__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(110px,auto);gap:2px}
.pm-cal__dow{text-align:center;font:600 12px/16px var(--font-body);color:var(--text-secondary);padding:var(--space-1) 0;text-transform:uppercase}
.pm-cal__day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;min-width:0;max-width:100%;overflow:hidden;min-height:44px;padding:6px 4px;border:1px solid transparent;border-radius:var(--radius-md);background:none;color:var(--text-primary);font:600 15px/20px var(--font-body);cursor:default}
.pm-cal__day[role="button"]{cursor:pointer}
.pm-cal__day:hover{background:var(--surface-sunken)}
.pm-cal__day--out{color:var(--text-disabled)}
.pm-cal__day--today{border-color:var(--border-strong)}
.pm-cal__day--busy{background:var(--brand-soft)}
.pm-cal__day--option{background:repeating-linear-gradient(135deg,var(--warning-bg) 0 6px,var(--surface-card) 6px 12px);border-color:var(--warning-border)}
.pm-cal__day--conflict{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger-text)}
.pm-cal__day--selected{background:var(--text-primary);color:var(--surface-page)}
.pm-cal__daynum{flex:none}
.pm-cal__marks{display:flex;gap:3px;align-items:center;min-height:12px}
.pm-cal__dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}
.pm-cal__dot--ring{background:none;border:2px solid currentColor;width:9px;height:9px;flex:none}
.pm-cal__marks .pm-ic{width:12px;height:12px}
.pm-cal__events{display:flex;flex-direction:column;gap:3px;width:100%;min-width:0}
.pm-cal__eventline{display:flex;align-items:center;gap:6px;width:100%;min-width:0;font:500 12px/16px var(--font-body)}
.pm-cal__eventline .pm-ic{width:12px;height:12px;flex:none}
.pm-cal__eventline-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.pm-cal__more{display:block;width:100%;text-align:left;background:none;border:0;padding:2px 0;margin:0;font:600 12px/16px var(--font-body);color:var(--text-link);cursor:pointer;min-height:auto;min-width:0}
.pm-cal__more:hover{text-decoration:underline}
.pm-cal__legend{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);font:500 13px/16px var(--font-body);color:var(--text-secondary);padding-top:var(--space-2);border-top:1px solid var(--border-subtle)}
.pm-cal__legend span{display:inline-flex;align-items:center;gap:6px}
.pm-cal__key{width:16px;height:16px;border-radius:4px;border:1px solid var(--border-default);display:inline-block}
.pm-cal__key--busy{background:var(--brand-soft)}
.pm-cal__key--option{background:repeating-linear-gradient(135deg,var(--warning-bg) 0 4px,var(--surface-card) 4px 8px);border-color:var(--warning-border)}
.pm-cal__key--conflict{background:var(--danger-bg);border-color:var(--danger-border)}
.pm-cal-layout{display:grid;gap:var(--space-4)}
@container (min-width:900px){.pm-cal-layout{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}}
@container (min-width:560px){.pm-cal__day{align-items:flex-start;padding:8px}}
#calAgenda{display:none}
@media (max-width:1023.98px){
  #calGrid{display:none}
  #calAgenda{display:grid}
}
.pm-agenda{display:grid;gap:var(--space-2);min-width:0}
.pm-agenda__row{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:var(--space-3);align-items:center;padding:var(--space-3);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);min-height:var(--size-touch)}
.pm-agenda__date{display:grid;justify-items:center;line-height:1;padding:6px 0;border-radius:var(--radius-md);background:var(--surface-sunken)}
.pm-agenda__date b{font:700 22px/24px var(--font-display)}
.pm-agenda__date span{font:600 11px/14px var(--font-body);text-transform:uppercase;color:var(--text-secondary);letter-spacing:.06em}
.pm-agenda__row--conflict{border-color:var(--danger-border);background:var(--danger-bg)}
.pm-agenda__row--conflict .pm-agenda__date{background:var(--surface-card)}
.pm-agenda__body{min-width:0}
.pm-agenda__title{font-weight:600;overflow-wrap:anywhere}
.pm-agenda__meta{font-size:14px;line-height:20px;color:var(--text-secondary);overflow-wrap:anywhere}
.pm-agenda__row--conflict .pm-agenda__meta{color:var(--danger-text);font-weight:500}
@container (max-width:419px){.pm-agenda__row{grid-template-columns:48px 1fr}.pm-agenda__row .pm-badge{grid-column:2;justify-self:start}}

/* Lignes de devis */
.pm-lines{display:grid;gap:var(--space-3)}
.pm-line{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);padding:var(--space-3);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);position:relative}
.pm-line__desc{grid-column:1/-1}
.pm-line__total{display:flex;align-items:center;justify-content:flex-end;font:700 18px/24px var(--font-body);font-variant-numeric:tabular-nums;grid-column:1/-1}
.pm-line__del{position:absolute;top:2px;right:2px}
.pm-line__label{font:600 12px/16px var(--font-body);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}
.pm-line--error{border-color:var(--danger-border)}
.pm-lines__head{display:none}
@container (min-width:640px){
 .pm-lines{gap:0;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--surface-card);overflow:hidden}
 .pm-line{grid-template-columns:minmax(0,1fr) 84px 140px 120px 44px;align-items:start;border:0;border-bottom:1px solid var(--border-subtle);border-radius:0}
 .pm-line__desc{grid-column:auto}.pm-line__total{grid-column:auto;min-height:var(--size-field)}
 .pm-line__del{position:static}
 .pm-line__label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
 .pm-lines__head{display:grid;grid-template-columns:minmax(0,1fr) 84px 140px 120px 44px;gap:var(--space-3);padding:var(--space-3);background:var(--surface-sunken);font:600 12px/16px var(--font-body);text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary)}
 .pm-lines__head span:nth-child(n+2){text-align:right}
}
.pm-totals{display:grid;gap:var(--space-2);margin-left:auto;width:min(100%,340px);font:400 16px/24px var(--font-body)}
.pm-totals div{display:flex;justify-content:space-between;gap:var(--space-4);font-variant-numeric:tabular-nums}
.pm-totals .is-total{border-top:1px solid var(--border-strong);padding-top:var(--space-3);font:700 20px/26px var(--font-body)}
.pm-totals .is-sub{color:var(--text-secondary);font-size:14px;line-height:20px}

/* Frise d'un dossier */
.pm-timeline{list-style:none;margin:0;padding:0;display:grid;gap:0}
.pm-step{position:relative;display:grid;grid-template-columns:32px 1fr;gap:var(--space-3);padding-bottom:var(--space-4)}
.pm-step:last-child{padding-bottom:0}
.pm-step::before{content:"";position:absolute;left:15px;top:32px;bottom:0;width:2px;background:var(--border-subtle)}
.pm-step:last-child::before{display:none}
.pm-step--done::before{background:var(--border-strong)}
.pm-step__dot{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--surface-card);border:2px solid var(--border-default);color:var(--text-secondary)}
.pm-step__dot .pm-ic{width:16px;height:16px;stroke-width:2.5}
.pm-step--done .pm-step__dot{background:var(--brand-primary);border-color:var(--border-strong);color:var(--text-on-brand)}
.pm-step--current .pm-step__dot{border-color:var(--border-strong);background:var(--surface-card);box-shadow:0 0 0 5px var(--brand-soft);color:var(--text-primary)}
.pm-step--late .pm-step__dot{background:var(--danger-bg);border-color:var(--danger-text);color:var(--danger-text)}
.pm-step__label{font:600 16px/22px var(--font-body);display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}
.pm-step__meta{font:400 14px/20px var(--font-body);color:var(--text-secondary)}
.pm-step--todo .pm-step__label{color:var(--text-secondary)}
@container (min-width:720px){
 .pm-timeline--h{grid-template-columns:repeat(6,1fr)}
 .pm-timeline--h .pm-step{grid-template-columns:1fr;justify-items:start;padding:0 var(--space-2) 0 0;gap:var(--space-2)}
 .pm-timeline--h .pm-step::before{left:32px;top:15px;bottom:auto;right:0;width:auto;height:2px}
}

/* Relance à faire */
.pm-followup{display:grid;grid-template-columns:auto 1fr;gap:var(--space-3) var(--space-3);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-4)}
.pm-followup__ic{width:44px;height:44px;border-radius:var(--radius-md);display:grid;place-items:center;background:var(--warning-bg);color:var(--warning-text)}
.pm-followup--late .pm-followup__ic{background:var(--danger-bg);color:var(--danger-text)}
.pm-followup__title{font:600 17px/24px var(--font-body)}
.pm-followup__why{font:400 14px/20px var(--font-body);color:var(--text-secondary);display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}
.pm-followup__act{grid-column:1/-1;display:flex;gap:var(--space-2);flex-wrap:wrap}
.pm-followup__act .pm-btn--primary,.pm-followup__act .pm-btn:first-child{flex:1 1 180px}
@container (min-width:560px){.pm-followup{grid-template-columns:auto 1fr auto;align-items:center}.pm-followup__act{grid-column:auto;flex-wrap:nowrap}.pm-followup__act .pm-btn:first-child{flex:none}}

/* Brouillon d'email généré par IA */
.pm-draft{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden}
.pm-draft__ai{display:flex;gap:var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);background:var(--brand-azur-soft);font:500 14px/20px var(--font-body)}
.pm-draft__ai .pm-ic{color:var(--text-primary);flex:none}
.pm-draft__meta{display:grid;gap:0}
.pm-draft__meta div{display:grid;grid-template-columns:64px 1fr;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);font:400 15px/22px var(--font-body);align-items:baseline}
.pm-draft__meta dt{color:var(--text-secondary);font-size:14px}
.pm-draft__meta dd{margin:0;font-weight:500}
.pm-draft__body{padding:var(--space-4);font:400 17px/26px var(--font-body);display:grid;gap:var(--space-3);white-space:pre-line}
.pm-draft__body[contenteditable="true"]{outline:2px dashed var(--border-default);outline-offset:-6px;background:var(--surface-page)}
.pm-draft__foot{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-subtle);background:var(--surface-sunken);align-items:center}
.pm-draft__foot .pm-draft__note{flex:1 1 100%;font:400 13px/18px var(--font-body);color:var(--text-secondary);display:flex;gap:6px;align-items:center}
.pm-draft__foot .pm-btn:first-of-type{flex:1 1 200px}
@container (min-width:560px){.pm-draft__foot .pm-draft__note{flex:1;order:-1;flex-basis:auto}.pm-draft__foot .pm-btn:first-of-type{flex:none}}

/* Blocs divers */
.pm-stat{display:grid;gap:var(--space-1)}
.pm-stat__v{font:700 28px/32px var(--font-body);font-variant-numeric:tabular-nums}
.pm-stat__l{font:500 14px/20px var(--font-body);color:var(--text-secondary)}
.pm-section-title{font:600 22px/28px var(--font-display);letter-spacing:-.015em}
.pm-row{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap}
.pm-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}
.pm-kv{display:grid;grid-template-columns:auto 1fr;gap:var(--space-1) var(--space-4);font:400 15px/22px var(--font-body);margin:0}
.pm-kv dt{color:var(--text-secondary)}.pm-kv dd{margin:0;font-weight:500}
