.ix-card{border:1px solid var(--line,#dce2ee);border-radius:16px;padding:20px;margin:20px 0}.ix-card h3{margin:0 0 8px}.ix-card .button-row{flex-wrap:wrap;margin:14px 0}.ix-file{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line,#dce2ee)}.ix-file>div,.ix-file>span{min-width:0;overflow-wrap:anywhere}.ix-file small{display:block;opacity:.7}.ix-file button{flex-shrink:0}.ix-preview{max-height:45vh;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;border:1px solid var(--line,#dce2ee);padding:18px}#ix-export,#ix-compose{display:grid;gap:18px}#ix-compose input:not([type=checkbox]),#ix-compose textarea,#ix-compose select,#ix-export select{display:block;width:100%;margin-top:6px}#ix-compose label{display:block}#ix-compose .check-row{display:flex} .g-mail-preview{padding:18px;border:1px solid var(--line,#dce2ee);border-radius:12px}.g-mail-preview p{white-space:pre-wrap;overflow-wrap:anywhere}.g-mail-preview dl{display:grid;grid-template-columns:75px 1fr;gap:8px}.g-mail-preview dd{margin:0;overflow-wrap:anywhere}
.ix-file{flex-wrap:wrap}
.ix-file>div{flex:1 1 240px}
@media(max-width:560px){.ix-file>div{flex-basis:100%}}
/* LinkedIn post form: same layout as #ix-compose, plus a live character counter. */
#ix-linkedin{display:grid;gap:18px}
#ix-linkedin textarea,#ix-linkedin select{display:block;width:100%;margin-top:6px}
#ix-linkedin label{display:block}
#ix-linkedin .ix-counter{margin:-12px 0 0;text-align:right;font-variant-numeric:tabular-nums}
#ix-linkedin .ix-counter[data-over]{color:var(--danger,#b42318);font-weight:600}
/* Review card and receipt: the exact text keeps its line breaks (inline styles are refused by the CSP). */
.linkedin-review .linkedin-post-text{white-space:pre-wrap;overflow-wrap:anywhere}
.ix-notice{margin:0 0 12px;padding:12px 14px;border:1px solid var(--line,#dce2ee);border-radius:12px}
/* Notices on a connection card: the result of « Vérifier la connexion », an alert when LinkedIn refused. */
.ix-card .ix-notice{margin:12px 0 0}
.ix-notice.ix-alert{border-color:color-mix(in srgb,var(--danger,#b42318) 45%,transparent);border-left:4px solid var(--danger,#b42318);background:color-mix(in srgb,var(--danger,#b42318) 10%,transparent)}
/* LinkedIn receipt: folded, with a visible cue that changes once opened. */
.linkedin-receipt summary{cursor:pointer}
.linkedin-receipt .receipt-toggle{margin-left:6px;font-size:.875rem;color:var(--accent,#2449a8);text-decoration:underline;text-underline-offset:2px}
.linkedin-receipt[open] .receipt-show{display:none}
.linkedin-receipt:not([open]) .receipt-hide{display:none}
.linkedin-check{margin:12px 0 4px}
/* LinkedIn review: the post as LinkedIn will show it, then the technical facts folded under « Détails ». */
.linkedin-preview{border:1px solid var(--line,#dce2ee);border-radius:14px;padding:14px 16px;margin:8px 0 14px;background:var(--surface,transparent)}
.linkedin-preview-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.linkedin-avatar{flex:none;display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:color-mix(in srgb,var(--accent,#2449a8) 16%,transparent);color:var(--accent,#2449a8);font-weight:700;font-size:17px}
.linkedin-preview-who{display:flex;flex-direction:column;gap:2px;min-width:0}
.linkedin-preview-who strong{overflow-wrap:anywhere}
.linkedin-badge{align-self:flex-start;font-size:.875rem;line-height:1.3;padding:2px 8px;border-radius:999px;border:1px solid var(--line,#dce2ee)}
.linkedin-badge[data-visibility="PUBLIC"]{border-color:color-mix(in srgb,var(--accent,#2449a8) 45%,transparent)}
.linkedin-preview .linkedin-post-text{margin:0;padding:0;border:0;background:none}
.linkedin-preview-source{margin:10px 0 0;font-size:.875rem;opacity:.75}
.linkedin-details{margin:10px 0 14px}
.linkedin-details summary{cursor:pointer}
.linkedin-details .review-meta{margin-top:10px}
/* Identity part of an approval: recent confirmation, Touch ID / Face ID, or password. */
.step-up-recent{margin:10px 0;padding:10px 12px;border-radius:12px;border:1px solid color-mix(in srgb,var(--accent,#2449a8) 35%,transparent)}
.step-up-passkey p{margin:10px 0 6px}
.step-up-password summary{cursor:pointer;font-size:.875rem}
.step-up-password .field{margin-top:8px}
.step-up-panel .device-row{margin-top:8px}
.step-up{display:grid;gap:8px}
.step-up-lead{margin:0;font-size:.875rem;line-height:1.5}
.step-up-recent strong{font-weight:600}
.step-up-code[hidden]{display:none}
/* Anything hidden inside the identity block stays hidden, whatever its own class says (.text-button and .button
   set display:inline-flex in style.css): « Envoyer un nouveau code » while no code may leave, a lead replaced… */
.step-up [hidden],.step-up[hidden]{display:none!important}
.step-up-code input{letter-spacing:.18em;font-variant-numeric:tabular-nums;font-size:18px}
.step-up-status:empty{display:none}
.step-up-others summary{cursor:pointer;font-size:.875rem}
.step-up-other-list{display:grid;gap:6px;margin-top:8px}
.step-up-other-list .button{width:100%;justify-content:center}
.step-up-offer{display:grid;gap:2px;margin:2px 0 0;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--accent,#2449a8) 7%,transparent)}
.step-up-offer .step-up-offer-button{justify-self:start;padding:0;min-height:32px;font-weight:600;text-align:left}
.step-up-offer small{font-size:.875rem;line-height:1.45;opacity:.8}
.step-up-enrol-card,.step-up-follow-card{display:grid;gap:8px;margin-top:12px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--accent,#2449a8) 30%,transparent)}
.step-up-enrol-card h3,.step-up-follow-card h3{margin:0;font-size:15px;font-weight:600}
.step-up-enrol-card p,.step-up-follow-card p{margin:0}
.step-up-enrol-card .dialog-actions,.step-up-follow-card .dialog-actions{margin-top:4px}
form[hidden]{display:none!important}
.step-up .step-up-others,.review-document .step-up .step-up-others{margin:0;padding:0;border:0}
/* Folded parts say they open: « Autre moyen de confirmer », « Détails ». */
.step-up-others>summary,.review-document .approval-details>summary,.approval-details>summary,.linkedin-details>summary{display:flex;align-items:center;gap:8px;list-style:none;min-height:40px;cursor:pointer;font-size:.875rem}
.step-up-others>summary::-webkit-details-marker,.approval-details>summary::-webkit-details-marker,.linkedin-details>summary::-webkit-details-marker{display:none}
.step-up-others>summary::after,.approval-details>summary::after,.linkedin-details>summary::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .15s}
.step-up-others[open]>summary::after,.approval-details[open]>summary::after,.linkedin-details[open]>summary::after{transform:translateY(1px) rotate(225deg)}
.step-up-follow .dialog-actions{margin-top:14px}
/* « À valider » cards: an e-mail as an e-mail, an appointment as a calendar card (web/approval-cards.mjs). */
.approval-happening{margin:6px 0 14px;font-size:14px;line-height:1.55}
.approval-happening-label{display:block;font-size:.875rem;text-transform:uppercase;letter-spacing:.06em;opacity:.7;margin-bottom:2px}
.approval-mail{border:1px solid var(--line,#dce2ee);border-radius:14px;overflow:hidden;margin:4px 0 14px;background:var(--surface,transparent)}
.approval-mail-head{display:grid;grid-template-columns:62px minmax(0,1fr);gap:6px 12px;margin:0;padding:12px 16px;border-bottom:1px solid var(--line,#dce2ee);font-size:.875rem}
.approval-mail-head dt{opacity:.65}
.approval-mail-head dd{margin:0;overflow-wrap:anywhere}
.approval-mail-body{margin:0;padding:14px 16px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.6;unicode-bidi:plaintext}
.approval-attachments{list-style:none;margin:0;padding:10px 16px 14px;border-top:1px solid var(--line,#dce2ee);font-size:.875rem;display:grid;gap:4px}
.approval-event{border:1px solid var(--line,#dce2ee);border-radius:14px;padding:14px 16px;margin:4px 0 14px;background:var(--surface,transparent)}
.approval-event-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.approval-event-head h3{margin:0;font-size:17px;overflow-wrap:anywhere}
.approval-event-date{flex:none;display:inline-grid;place-items:center;min-width:54px;height:44px;padding:0 6px;border-radius:10px;background:color-mix(in srgb,var(--accent,#2449a8) 14%,transparent);color:var(--accent,#2449a8);font-weight:700;font-variant-numeric:tabular-nums}
.approval-event-facts{display:grid;grid-template-columns:76px minmax(0,1fr);gap:8px 12px;margin:0;font-size:.875rem}
.approval-event-facts dt{opacity:.65}
.approval-event-facts dd{margin:0;overflow-wrap:anywhere}
.approval-zone{opacity:.75}
.approval-guests{list-style:none;margin:0 0 4px;padding:0;display:grid;gap:2px}
.approval-invitation{display:block;opacity:.85}
.approval-event-notes{margin-top:10px}
.approval-event-notes .approval-mail-body{padding:8px 0 0}
.approval-details{margin:12px 0 4px}
.approval-details summary{cursor:pointer;font-size:.875rem}
.g-decision p{overflow-wrap:anywhere}
.calendar-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.calendar-appointment .form-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}
/* The appointment title is the card's headline, not a section label (.review-document h3 in refraction.css). */
.review-document .approval-event-head h3,.approval-event-head h3{margin:0;font-size:17px;font-weight:600;letter-spacing:normal;text-transform:none;color:inherit}
/* What a confirmation covers, said under the way to confirm (docs/APPROVAL_STEP_UP.md, scope of a proof). */
.step-up-scope{margin:0;font-size:.875rem;line-height:1.5;opacity:.8}
.step-up-lead[hidden]{display:none}
.step-up-window-details{margin:0!important;padding:0!important;border:0!important}
.step-up-window-details>summary{cursor:pointer;min-height:44px;align-content:center;font-size:.875rem;line-height:1.5;color:var(--accent,#3c6769)}
.step-up-window-details>summary:focus-visible{outline:3px solid var(--accent,#3c6769);outline-offset:3px;border-radius:4px}
.step-up-window-details .step-up-scope{margin-top:8px}
.step-up-enrol-receipt{display:grid;gap:8px}
.step-up-enrol-receipt h3{margin:0;font-size:15px;font-weight:600}
.step-up-enrol-receipt p{margin:0}
/* Guest and sender addresses break after « @ » or a dot, never in the middle of a word. */
.approval-guests li,.approval-mail-head dd[dir="ltr"]{overflow-wrap:normal;word-break:normal}
/* Any other action: its fields in plain words (web/approval-cards.mjs argumentsCard). */
.approval-argument{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.55}
.approval-edits{margin:0;padding-left:18px;display:grid;gap:8px}
.approval-edits span{display:block;white-space:pre-wrap;overflow-wrap:anywhere}
.approval-edit-before{opacity:.7;text-decoration:line-through}
.agenda-google-note{margin:0 0 12px}

/* Inkore connections: scan by purpose and account state, with the same consent routes. */
#modal:has(.ix-connections){width:min(1080px,calc(100% - 28px))}
.ix-connections{min-width:0;font-size:16px;line-height:1.6}
.ix-connections-intro{max-width:760px;margin-bottom:20px}
.ix-connections .eyebrow,.ix-connection-category{font-size:14px;font-weight:650;line-height:1.45;color:var(--accent,#3c6769)}
.ix-connections-intro h2{font-size:clamp(26px,3vw,34px);line-height:1.2;margin:9px 0 14px;letter-spacing:-.035em}
.ix-connections-intro p{font-size:16px;line-height:1.65;margin:0}
.ix-connection-scope{font-size:16px!important;line-height:1.6;padding:16px 18px;margin:0 0 24px;border:1px solid var(--line,#ced9d6);border-radius:14px;background:color-mix(in srgb,var(--accent,#3c6769) 7%,var(--surface,#f6f8f7))}
.ix-connections-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:18px;align-items:stretch}
.ix-connections .ix-connection-card{display:flex;flex-direction:column;gap:14px;min-width:0;margin:0;padding:22px;border-radius:19px;background:var(--surface,#f6f8f7);border-color:var(--line,#ced9d6);box-shadow:0 5px 18px #203c4305;overflow-wrap:anywhere}
.ix-connection-top{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.ix-connection-mark{display:inline-grid;place-items:center;flex:none;width:46px;height:46px;border-radius:13px;border:1px solid color-mix(in srgb,var(--accent,#3c6769) 22%,transparent);background:color-mix(in srgb,var(--accent,#3c6769) 9%,var(--surface,#f6f8f7));color:var(--ink,#203c43);font-size:24px;font-weight:750;line-height:1}
.ix-connection-mark[data-brand=linkedin]{font-size:22px;letter-spacing:-.04em}
.ix-connection-state{max-width:100%;font-size:14px;font-weight:600;line-height:1.4;border:1px solid var(--line,#ced9d6);padding:6px 10px;border-radius:999px;color:var(--muted,#4c646c);background:var(--surface-2,#edf0ed)}
.ix-connection-state[data-state=connected]{color:var(--success,#34604a);border-color:color-mix(in srgb,var(--success,#34604a) 32%,transparent);background:color-mix(in srgb,var(--success,#34604a) 8%,var(--surface,#f6f8f7))}
.ix-connection-state[data-state=attention]{color:var(--ink,#203c43);border-color:var(--gold,#b6a17e);background:color-mix(in srgb,var(--gold,#b6a17e) 15%,var(--surface,#f6f8f7))}
.ix-connections .ix-connection-card h3{font-size:21px;line-height:1.3;margin:7px 0 12px;letter-spacing:-.02em}
.ix-connections .ix-connection-purpose{font-size:16px;line-height:1.6;margin:0 0 15px}
.ix-connections .ix-connection-account{font-size:14px;font-weight:650;line-height:1.5;margin:0;color:var(--ink,#203c43)}
.ix-connections .ix-connection-detail,.ix-connection-footnote,.ix-connection-help{font-size:14px!important;line-height:1.6;color:var(--muted,#4c646c);margin:0}
.ix-connections .ix-connection-actions{margin-top:auto;display:grid;gap:10px;padding-top:4px}
.ix-connections .button-row{display:flex;gap:8px;flex-wrap:wrap;margin:0}
.ix-connections .button{font-size:16px;line-height:1.35;min-height:44px;padding:11px 14px;max-width:100%;white-space:normal;text-align:left;justify-content:center;overflow-wrap:anywhere}
.ix-connections .button-row .button{flex:1 1 auto}
.ix-connections .ix-notice{font-size:16px;line-height:1.6;margin:0}
.ix-connections .ix-connection-help{margin:0;padding-top:2px}
.ix-connection-help summary{min-height:44px;display:list-item;align-content:center;cursor:pointer;font-size:14px;font-weight:650;color:var(--accent,#3c6769);padding:8px 0}
.ix-connection-help p{font-size:14px;line-height:1.6;margin:8px 0 0}
.ix-connection-footnote{margin:22px 0 0!important}
.ix-connections-empty{grid-column:1/-1;margin:0;padding:22px;border:1px dashed var(--line,#ced9d6);border-radius:14px;font-size:16px}
@media(max-width:600px){.ix-connections .ix-connection-card{padding:20px;gap:12px}.ix-connections-grid{gap:14px}.ix-connection-scope{padding:14px;margin-bottom:18px}.ix-connections-intro h2{font-size:28px}.ix-connections .ix-connection-actions>.button{width:100%}}

/* Keep the usual task in view; account changes stay available in keyboard-operable native details. */
.ix-connections .ix-connection-options{margin:0!important;min-width:0;border-top:1px solid var(--line,#ced9d6)}
.ix-connections .ix-connection-options>summary{display:list-item;min-height:44px;padding:10px 0;font-size:14px;font-weight:650;line-height:1.55;color:var(--accent,#3c6769);cursor:pointer;overflow-wrap:anywhere}
.ix-connections .ix-connection-options>.button-row{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:4px 0}
.ix-connections .ix-connection-options .button{width:100%;justify-content:center}

#modal .ix-connection-options>summary,.ix-connections .ix-connection-options>summary{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ix-connection-options>summary::after{content:'+';flex:none;font-size:20px;line-height:1;font-weight:500}
.ix-connection-options[open]>summary::after{content:'−'}

/* The card highlights its controls without making the whole surface clickable. */
.ix-connections .ix-connection-card:focus-within{border-color:var(--accent,#3c6769);box-shadow:0 0 0 1px var(--accent,#3c6769)}
@media(prefers-reduced-motion:no-preference){.ix-connections .ix-connection-card{transition:border-color 180ms ease-out,box-shadow 180ms ease-out}}
