/* Perceptis staff console. Base rules below; the "Backoffice design layer" at the end re-skins every screen with the validated
   prototype's tokens (prototype/backoffice/bo.css: Outfit, ink #1e1a2e, orange pills, cards with a coloured left border). */
:root{--orange:#ef8425;--blue:#4bbeee;--purple:#9a66a7;--orange-ink:#a4500a;--blue-ink:#0b6d97;--purple-ink:#6f4580;
 --ink:#1e1a2e;--ink-soft:#5b5870;--mist:#f3f5f9;--line:#dce0ea;--line-strong:#b9bfce;--orange-wash:#fdeedf;--blue-wash:#e3f4fc;--purple-wash:#f1e9f4;
 --success:#1d7a4a;--success-wash:#e2f3ea;--danger:#b3261e;--danger-wash:#fbe9e7;--radius-m:12px;--radius-l:22px;--side:264px;--gut:16px;
 --paper:var(--mist);--muted:var(--ink-soft);--soft:var(--mist);--focus:var(--blue-ink);--font:"Outfit",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
@font-face{font-family:"Outfit";font-style:normal;font-weight:300 700;font-display:swap;src:url(fonts/outfit-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Outfit";font-style:normal;font-weight:300 700;font-display:swap;src:url(fonts/outfit-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;line-height:1.55;overflow-wrap:anywhere}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:1px solid #c4cec8;background:white;padding:10px 14px;font-size:14px;font-weight:600}
button:hover:not(:disabled){background:#f0f4ed}
button:disabled{cursor:not-allowed;opacity:.55}
button.primary{background:var(--ink);border-color:var(--ink);color:white}
button.primary:hover:not(:disabled){background:#0f2924}
button.link{border:0;background:none;padding:4px 0;font-weight:400;text-decoration:underline;text-underline-offset:4px}
button.danger,.danger{color:var(--danger)}
a{color:inherit;text-underline-offset:4px}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
input,select,textarea{width:100%;border:1px solid #c4cec8;background:white;padding:10px 12px;font-size:15px;border-radius:0}
label{display:block;font-size:13px;font-weight:600;margin:14px 0 6px}
.top{max-width:1300px;margin:auto;padding:24px 5%;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.wordmark{font-size:29px;font-weight:700;letter-spacing:-1px}
.wordmark span{display:block;font-size:8px;letter-spacing:1.8px}
.whoami{display:flex;gap:14px;align-items:center;font-size:13px}
.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:var(--orange);margin:0 0 8px}
h1{font-family:Georgia,serif;font-weight:400;font-size:clamp(30px,4vw,48px);line-height:1.1;letter-spacing:-1px;margin:10px 0 18px}
h2{font-family:Georgia,serif;font-weight:400;font-size:22px;margin:26px 0 10px}
.small{font-size:12px;color:var(--muted);font-family:Arial,Helvetica,sans-serif}
.note{color:var(--muted);font-size:13px}
.center{text-align:center}
.success{background:#e8f3ec;border-left:3px solid #2f7d4f;padding:10px 14px;font-size:13px}
.error{background:#fbeae5;border-left:3px solid var(--danger);padding:10px 14px;font-size:13px}
.info{background:var(--soft);border-left:3px solid #8caa97;padding:10px 14px;font-size:13px}
.label-note{font-size:12px;color:var(--muted);border-left:3px solid var(--orange);padding:6px 12px;background:white}
.card{border:1px solid var(--line);background:white;padding:26px 24px;box-shadow:0 15px 45px #16352f06;margin:0 0 22px}
.signin-grid{max-width:1300px;margin:10px auto 40px;display:grid;grid-template-columns:1fr 1fr;gap:8%;padding:20px 5%}
.signin-grid aside>p:not(.eyebrow){max-width:400px;color:var(--muted);font-size:15px}
.signin{max-width:470px;width:100%;justify-self:end}
.signin .card h2{font-size:30px;line-height:1.2;margin:16px 0}
#google-login{margin:20px 0 16px;width:100%;display:flex;gap:14px;align-items:center;justify-content:center;padding:15px 12px}
.local-google{border:1px dashed var(--orange);padding:12px 14px;margin-bottom:16px}
.local-google .tag{font-size:9px;letter-spacing:1px;color:var(--orange);margin:0}
.local-google button{margin-top:10px;width:100%}
#auth-status{background:var(--soft);border-left:3px solid #8caa97;padding:14px 16px;font-size:12px}
#auth-status strong{display:block;font-size:13px}
#auth-status p{margin:5px 0 0;color:var(--muted)}
.account-note{font-size:11px;color:var(--muted);margin-top:18px}
.work{max-width:1100px;margin:0 auto 50px;padding:0 5%}
.row-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:16px 0}
.poll-list{list-style:none;padding:0;margin:16px 0}
.poll-list li{margin:0 0 10px}
.poll-open{width:100%;text-align:left;display:flex;flex-direction:column;gap:4px;padding:16px 18px;font-weight:400}
.poll-open strong{font-size:16px}
.poll-open span{font-size:12px;color:var(--muted)}
.form h2:first-of-type{margin-top:22px}
.questions{padding-left:22px;margin:0 0 12px}
.question{border-left:3px solid var(--line);padding:4px 0 12px 14px;margin:0 0 14px}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:14px;margin:8px 0}
.check input{width:auto;margin-top:4px}
.schedule{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.confirm{border:1px solid var(--orange);background:#fff7f1;padding:14px 16px;margin-top:10px}
.confirm button{margin:6px 10px 0 0}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.copy-row{display:flex;gap:8px}
.copy-row input{min-width:0;font-size:13px}
.copy-row button{flex:none;white-space:nowrap}
#qr{display:block;margin:16px 0 4px;width:220px;height:220px;image-rendering:pixelated;border:1px solid var(--line)}
.invite-list,.audit{font-size:12px;color:var(--muted);padding-left:20px}
.monitor-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.monitor-head h2{margin-top:0}
.monitor-modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:22px;margin-top:14px}
.mode{border:1px solid var(--line);padding:16px 18px;min-width:0}
.mode h3{font-family:Georgia,serif;font-weight:400;font-size:19px;margin:0 0 8px}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:14px 0}
.kpis div{background:var(--soft);padding:8px 10px}
.kpis dt{font-size:11px;color:var(--muted)}
.kpis dd{margin:2px 0 0;font-size:18px;font-weight:700}
.cells{width:100%;border-collapse:collapse;font-size:13px;margin:12px 0;table-layout:fixed}
.cells caption{text-align:left;font-weight:700;padding:4px 0}
.cells th,.cells td{border-bottom:1px solid var(--line);padding:5px 6px;text-align:left;vertical-align:top}
.cells td{width:28%}
.cells thead th{font-size:11px;color:var(--muted);font-weight:600}
.cells tbody th{font-weight:400}
.cells tr[data-suppressed=true] td{color:var(--muted);font-style:italic}
footer{max-width:1300px;margin:auto;padding:20px 5% 35px;color:var(--muted);font-size:10px}
[hidden]{display:none!important}
@media(max-width:760px){
 .signin-grid,.grid-2,.schedule{grid-template-columns:1fr}
 .signin-grid{gap:20px;padding:0 16px}
 .signin{max-width:none}
 .work,.top,footer{padding-left:16px;padding-right:16px}
 .card{padding:20px 16px}
}

/* Visual template picker (M7): one native radio per card, a drawn phone miniature, « Voir en grand » after the label. */
.templates { border: 0; margin: 0 0 1rem; padding: 0; min-width: 0; }
.templates legend { font-weight: 600; padding: 0; margin-bottom: .5rem; }
.tpl-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 22rem), 1fr)); gap: .75rem; }
.tpl-card { display: flex; flex-direction: column; gap: .4rem; min-width: 0; }
.tpl-label { display: flex; align-items: flex-start; gap: .75rem; flex: 1; min-height: 44px; padding: .65rem; border: 2px solid #c9d0d8; border-radius: 10px; background: #fff; cursor: pointer; min-width: 0; }
.tpl-label input { flex: none; width: 1.25rem; height: 1.25rem; margin: .15rem 0 0; }
.tpl-label:has(input:checked) { border-color: #1c2733; border-width: 4px; padding: calc(.65rem - 2px); background: #f3f6f9; }
.tpl-label:has(input:focus-visible) { outline: 3px solid #2b5f8a; outline-offset: 2px; }
.tpl-text { display: flex; flex-direction: column; gap: .25rem; min-width: 0; overflow-wrap: anywhere; }
.tpl-badge { display: inline-block; padding: 0 .45rem; border-radius: 999px; background: #1c2733; color: #fff; font-size: .8rem; }
.tpl-line { font-size: .9rem; font-weight: 400; color: #4a5866; }
.tpl-big { min-height: 44px; min-width: 44px; align-self: flex-start; }
.tpl-big[aria-disabled=true] { opacity: .6; cursor: not-allowed; }
.tpl-mini { flex: none; order: 1; display: flex; flex-direction: column; gap: 5px; width: 54px; height: 96px; padding: 0 0 6px; border: 2px solid; border-radius: 9px; overflow: hidden; }
.tpl-label .tpl-text { order: 2; }
.tpl-mini-card { flex: 1; display: flex; flex-direction: column; gap: 5px; margin: 4px 4px 4px; padding: 0 0 6px; overflow: hidden; border-radius: 3px; }
.tpl-mini-head { display: flex; align-items: center; justify-content: center; height: 24px; flex: none; border-bottom: 1px solid rgba(0, 0, 0, .15); }
.tpl-mini-logo { max-width: 36px; max-height: 16px; width: auto; height: auto; object-fit: contain; }
.tpl-mini-ph { display: block; width: 28px; height: 10px; border-radius: 3px; opacity: .5; }
.tpl-mini-line { display: block; height: 5px; margin: 0 6px; border-radius: 2px; }
.tpl-mini-short { width: 60%; }
.tpl-mini-btn { display: block; height: 12px; margin: auto 6px 0; border-radius: 4px; }
@media (max-width: 760px) { .tpl-cards { grid-template-columns: 1fr; } }
.sms-signin{margin-top:22px;padding-top:18px;border-top:1px solid #c4cec8;display:grid;gap:8px}
/* flash-display: the Direction's display switches on the Flash fiche */
.switches{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 22px;align-items:end}
.switch{display:flex;gap:10px;align-items:center;margin:0;font-size:14px;cursor:pointer;min-height:44px}
.switch input{appearance:none;-webkit-appearance:none;width:44px;height:24px;flex:0 0 44px;padding:0;border:1px solid #c4cec8;border-radius:12px;background:var(--soft);position:relative;cursor:pointer;transition:background .15s}
.switch input::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:white;box-shadow:0 1px 2px #16352f40;transition:transform .15s}
.switch input:checked{background:var(--ink);border-color:var(--ink)}
.switch input:checked::after{transform:translateX(20px)}
.switch input:disabled{opacity:.55;cursor:wait}
.threshold label{margin-top:0}
#google-gsi{display:flex;justify-content:center;margin:20px 0 16px;min-height:44px}
.main-nav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px;border-bottom:1px solid var(--line);padding-bottom:12px}
.main-nav button[aria-current=page]{background:var(--ink);border-color:var(--ink);color:white}
.inline-form{border:1px solid var(--line);background:white;padding:8px 18px 18px;margin:0 0 16px;max-width:560px}
.inline-form button{margin-top:14px}
.admin-list{list-style:none;padding:0;margin:16px 0}
.admin-list li{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;border:1px solid var(--line);background:white;padding:12px 16px;margin:0 0 8px}
.admin-list .meta{font-size:12px;color:var(--muted);display:block}
.admin-list .actions{display:flex;gap:8px;flex-wrap:wrap}
.admin-list form{display:flex;gap:8px;flex:1;min-width:240px}
.admin-list form input{flex:1}
.admin-table{width:100%;border-collapse:collapse;background:white;font-size:13px}
.admin-table th,.admin-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line)}

.seg{display:inline-flex;margin:8px 0}.seg button{border-radius:0;margin:0}.seg button:first-child{border-radius:8px 0 0 8px}.seg button:last-child{border-radius:0 8px 8px 0;margin-left:-1px}.seg button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:white}
.update-banner{position:fixed;bottom:0;left:0;right:0;background:var(--ink);color:white;padding:10px 16px;text-align:center;font-size:14px;z-index:50}.update-banner button{margin-left:8px;background:white;color:var(--ink);border:1px solid white;padding:4px 12px;font-weight:600;cursor:pointer}

.tpl-example { width: min(26rem, calc(100vw - 2rem)); max-height: calc(100vh - 2rem); padding: 1rem; border: 2px solid #1c2733; border-radius: 12px; background: #fff; overflow: auto; }
.tpl-example::backdrop { background: rgba(28, 39, 51, .6); }
.tpl-example-note { margin: 0 0 .75rem; padding: .35rem .6rem; border-radius: 6px; background: #fff4d6; color: #5a4300; font-size: .9rem; font-weight: 600; }
.tpl-example-phone { display: flex; flex-direction: column; gap: .75rem; padding: 0 0 1rem; border: 2px solid #c9d0d8; border-radius: 14px; overflow: hidden; min-height: 22rem; }
.tpl-example-head { display: flex; align-items: center; justify-content: center; gap: .6rem; padding: .75rem; border-bottom: 1px solid rgba(0, 0, 0, .15); }
.tpl-example-logo { max-height: 2rem; max-width: 8rem; object-fit: contain; }
.tpl-example-card { display: flex; flex-direction: column; gap: .75rem; margin: 0 .75rem; padding: 1rem; border-radius: 8px; }
.tpl-example-card h3 { margin: 0; font-size: 1.1rem; }
.tpl-example-answers { display: flex; flex-direction: column; gap: .5rem; }
.tpl-example-option { display: block; padding: .7rem .9rem; border: 2px solid; border-radius: 8px; }
.tpl-example-btn { display: block; padding: .75rem; border-radius: 8px; text-align: center; font-weight: 600; }
.tpl-example-close { min-height: 44px; min-width: 44px; margin-top: .75rem; }

/* Visible loading feedback (slow networks): spinner, busy buttons, list placeholders. */
.spin{display:inline-block;width:1em;height:1em;margin-right:.5em;vertical-align:-.15em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spin{animation:none;border-right-color:currentColor;border-style:dotted}}
button[aria-busy=true]:disabled{opacity:.85;cursor:progress;font-size:0}
button[aria-busy=true]::before{content:"";display:inline-block;width:.9rem;height:.9rem;margin-right:.5rem;vertical-align:-.15rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite}
button[aria-busy=true]::after{content:attr(data-busy-label);font-size:var(--busy-size)}
@media (prefers-reduced-motion:reduce){.spin,button[aria-busy=true]::before{animation:none;border-right-color:currentColor;border-style:dotted}}
.slow-note{display:block;margin:6px 0 0;font-size:12px;color:var(--muted)}
.slow-note:empty{display:none}
.list-note{margin:12px 0;padding:10px 14px;background:var(--soft);border-left:3px solid #8caa97;font-size:14px}
.list-note[hidden]{display:none}
.list-note button{margin-left:6px}
.fixed-lines{list-style:none;margin:0 0 .5rem;padding:0}
.fixed-lines li{padding:.5rem .75rem;margin:0 0 .35rem;border:1px solid #c9d0d8;border-radius:8px;background:#f6f8fa}
.places{margin:.25rem 0 .75rem}
.places summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:.5rem;color:var(--blue-ink);font-weight:500;list-style:none}
.places summary::-webkit-details-marker{display:none}
.places summary::before{content:'▸';display:inline-block;transition:transform .15s}
.places[open]>summary::before{transform:rotate(90deg)}
.send-sched{margin:12px 0;font-weight:500}
#settings-form{margin:1.25rem 0}
#settings-form h3{font-size:1rem;margin:1rem 0 .25rem}
.card fieldset{border:0;padding:0;margin:16px 0 0;min-width:0}
.card legend{font-weight:600;font-size:14px;padding:0;margin-bottom:8px}

/* ---------- Shell (backoffice socle): sidebar of 8 sections on desktop, a scrolling strip on 390 px ---------- */
.shell{display:grid;grid-template-columns:230px minmax(0,1fr);gap:28px;align-items:start}
.shell-side{position:sticky;top:12px;border:1px solid var(--line);background:white;padding:14px 10px}
.shell-role{margin:0 6px 10px;display:inline-block;font-size:12px;font-weight:700;color:var(--orange);letter-spacing:1px;text-transform:uppercase}
.shell-nav{display:flex;flex-direction:column;gap:4px}
.shell-nav button{text-align:left;border:0;background:none;padding:12px 14px;min-height:44px;font-weight:600;border-radius:8px}
.shell-nav button:hover{background:var(--soft)}
.shell-nav button[aria-current=page]{background:var(--orange);color:white}
.shell-main{min-width:0}
.main-nav button.off{display:none}
.shell-cards{list-style:none;margin:16px 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.shell-cards .card{margin:0}
.badge-soon{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.5px;padding:2px 10px;border-radius:99px;background:#f1e9f4;color:#6f4580;vertical-align:middle}
.next{margin:22px 0 0;padding:10px 14px;border-left:3px solid var(--orange);background:white;font-size:14px}
.study-types{border:0;padding:0;margin:14px 0 0;min-width:0}
.study-types legend{font-weight:600;font-size:14px;padding:0}
.type-chip{display:inline-flex;align-items:center;gap:8px;margin:6px 8px 0 0;padding:8px 12px;border:1px solid #c4cec8;background:white;font-weight:600}
.type-chip input{width:auto;margin:0}
.type-chip.is-soon{opacity:.7}
.journal-filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px;margin:10px 0}
.table-wrap{overflow-x:auto}
.tag-refus{color:var(--danger);font-weight:700}.tag-kind{font-weight:600}
#journal-table td{vertical-align:top}
#journal-table th,#journal-table td:nth-child(-n+3){white-space:nowrap;overflow-wrap:normal}#journal-table td:last-child{min-width:14rem}
@media (max-width:899px){
  .shell{grid-template-columns:minmax(0,1fr);gap:14px}
  .shell-side{position:static;padding:8px}
  .shell-nav{flex-direction:row;overflow-x:auto;gap:6px;-webkit-overflow-scrolling:touch}
  .shell-nav button{flex:none;white-space:nowrap}
  .journal-filters{grid-template-columns:1fr}
}

/* ============ Backoffice design layer: the validated prototype (prototype/backoffice/bo.css, CONVENTIONS.md) on every screen ============ */
body{font-family:var(--font);font-size:1.0625rem;line-height:1.5;background:var(--mist);color:var(--ink)}
h1,h2,h3{font-family:var(--font);font-weight:600;letter-spacing:0;line-height:1.2}
h1{font-size:clamp(1.7rem,1.3rem + 1.6vw,2.07rem);margin:6px 0 10px}
h2{font-size:1.33rem;margin:28px 0 12px}
h3{font-size:1.08rem}
a{color:var(--blue-ink)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:none;box-shadow:0 0 0 3px #fff,0 0 0 6px var(--blue-ink);border-radius:8px}
.eyebrow{font-size:.8rem;letter-spacing:.04em;color:var(--orange-ink);font-weight:600;text-transform:uppercase;margin:0 0 4px}
.note,.small,.hint{color:var(--ink-soft)}.note{font-size:1rem}.small{font-size:.9rem;font-family:var(--font)}
/* buttons: pills; orange = the one primary action, the others outlined */
button{font:600 1rem/1.1 var(--font);min-height:44px;padding:0 22px;border-radius:99px;border:2px solid var(--ink);background:transparent;color:var(--ink);transition:background-color .15s}
button:hover:not(:disabled){background:var(--mist)}
button.primary{background:var(--orange);border-color:var(--orange);color:var(--ink)}
button.primary:hover:not(:disabled){background:#f59a4a;border-color:#f59a4a}
button.link{border:0;background:none;min-height:44px;padding:0 8px;color:var(--blue-ink);font-weight:500;text-decoration:underline}
button.link:hover:not(:disabled){background:none}
button.danger,.danger{color:var(--danger)}
button.danger:not(.link){border-color:var(--danger)}
button:disabled{opacity:.55}
.shell-cards .card:not(:first-child) button.primary{background:transparent;border-color:var(--ink)}
.shell-cards .card:not(:first-child) button.primary:hover:not(:disabled){background:var(--mist)}
label{font-size:.95rem;font-weight:600;margin:16px 0 6px}
input,select,textarea{border:2px solid var(--line-strong);border-radius:var(--radius-m);padding:10px 14px;min-height:48px;font-size:1rem;background:#fff}
input[type=checkbox],input[type=radio]{min-height:0}
.card{border:1px solid var(--line);border-radius:var(--radius-m);padding:20px;box-shadow:none;margin:0 0 20px}
.card-attn{border-left:6px solid var(--orange);display:flex;flex-direction:column}
.card-attn.blue{border-left-color:var(--blue)}.card-attn.purple{border-left-color:var(--purple)}.card-attn.ok{border-left-color:var(--success)}.card-attn.muted-card{border-left-color:var(--line-strong)}
.card-attn .row-actions,.card-attn>button{margin-top:auto;align-self:flex-start}
.card-attn h2{font-size:1.2rem;margin:0 0 6px}
.card-attn .note{margin:0 0 16px}
.card-attn>button{margin-top:auto}
/* statuses */
.success{background:var(--success-wash);border:0;border-left:6px solid var(--success);border-radius:var(--radius-m);padding:12px 16px;color:var(--ink)}
.error{background:var(--danger-wash);border:0;border-left:6px solid var(--danger);border-radius:var(--radius-m);padding:12px 16px}
.info{background:var(--blue-wash);border:0;border-left:6px solid var(--blue);border-radius:var(--radius-m);padding:12px 16px}
.label-note{border-left:6px solid var(--orange);background:var(--orange-wash);border-radius:var(--radius-m);padding:10px 14px;color:var(--ink)}
.confirm{border:0;border-left:6px solid var(--orange);background:var(--orange-wash);border-radius:var(--radius-m);padding:14px 18px}
.badge-soon{font-size:.8rem;font-weight:600;letter-spacing:0;padding:2px 12px;background:var(--purple-wash);color:var(--purple-ink)}
.badge-soon::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:currentColor;margin-right:6px}
.next{margin:24px 0 0;padding:12px 16px;border:0;border-radius:var(--radius-m);background:var(--blue-wash);font-size:.9rem;color:var(--ink)}
.tag-refus{color:var(--danger)}
/* lists, tables, forms */
.poll-open{border-radius:var(--radius-m);border:1px solid var(--line);border-left:6px solid var(--orange);background:#fff;padding:16px 20px}
.poll-open:hover:not(:disabled){border-color:var(--ink);border-left-color:var(--orange);background:#fff}
.poll-open span{color:var(--ink-soft);font-size:.9rem}
.admin-list li{border-radius:var(--radius-m);padding:14px 18px}
.admin-table{border-collapse:collapse;font-size:.95rem}
.admin-table th{background:var(--mist);color:var(--ink-soft);font-size:.9rem;font-weight:600;padding:12px 16px}
.admin-table td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
.admin-table tr:last-child td{border-bottom:0}
.table-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius-m);overflow:auto}
.cells th,.cells td{border-color:var(--line)}
.inline-form{border-radius:var(--radius-m);padding:8px 20px 20px;max-width:620px}
.kpis div{background:var(--mist);border-radius:var(--radius-m);padding:10px 14px}
.kpis dd{font-size:1.6rem;font-weight:600}
.mode{border-radius:var(--radius-m);border-left:6px solid var(--blue)}
.mode h3{font-family:var(--font);font-weight:600;font-size:1.1rem}
.question{border-left:6px solid var(--line)}
.type-chip{border:2px solid var(--line-strong);border-radius:99px;padding:8px 16px;background:#fff}
.switch input:checked{background:var(--orange);border-color:var(--orange)}
.seg button{border-radius:0}.seg button:first-child{border-radius:99px 0 0 99px}.seg button:last-child{border-radius:0 99px 99px 0}.seg button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}
.tpl-label{border-radius:var(--radius-m);border-color:var(--line-strong)}
.tpl-label:has(input:checked){border-color:var(--orange);background:var(--orange-wash)}
.tpl-badge{background:var(--ink)}
.update-banner{background:var(--ink)}.update-banner button{color:var(--ink);background:#fff;min-height:36px;padding:0 14px}
.local-google{border:2px dashed var(--line-strong);border-radius:var(--radius-m)}
.local-google .tag{color:var(--orange-ink)}
#auth-status{background:var(--blue-wash);border:0;border-left:6px solid var(--blue);border-radius:var(--radius-m)}
#auth-status:empty{display:none}
.signin .card{border-radius:var(--radius-l);padding:28px}
.signin .card h2{font-size:1.66rem}
.signin .card button.primary,#google-login{width:100%}
/* sub-navigation of a section: pill tabs */
.main-nav{border:0;padding:0;margin:0 0 20px;gap:8px}
.main-nav button{background:#fff;border:2px solid var(--line-strong);min-height:44px;font-weight:500;padding:0 18px}
.main-nav button[aria-current=page]{background:var(--ink);border-color:var(--ink);color:#fff}
.main-nav button:hover:not(:disabled):not([aria-current=page]){background:var(--mist)}

/* ---------- Shell: full-height sidebar, top bar, full-width content ---------- */
.top{max-width:none;margin:0;padding:10px var(--gut);min-height:64px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30;gap:12px;flex-wrap:nowrap}
.top-logo{height:34px;display:block}
.wordmark{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.top>.link{margin-left:auto}
.top>.link[hidden]+.whoami,.top>.top-logo+.wordmark+.whoami{margin-left:auto}
.whoami{margin-left:12px;gap:12px;font-size:.9rem;color:var(--ink-soft)}
.avatar{width:40px;height:40px;border-radius:50%;background:var(--purple-wash);color:var(--purple-ink);display:grid;place-items:center;font-weight:600;font-size:.95rem;flex:none}
.menu-toggle{display:none;padding:0;width:44px;min-height:44px;border:0;place-items:center}
.menu-toggle svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.side-brand,.scrim{display:none}
body[data-view=signin] .top,body[data-view=loading] .top{padding-left:5%;padding-right:5%}
.signin-grid{max-width:1180px}
.work{max-width:none;margin:0;padding:24px var(--gut) 48px}
.shell{display:block}
.shell-main{max-width:1180px}
footer{max-width:none;margin:0;padding:12px var(--gut) 24px}
.shell-side{display:none}
body:not([data-view=signin]):not([data-view=loading]) .shell-side{display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:var(--side);z-index:40;border:0;border-right:1px solid var(--line);background:#fff;padding:0;overflow:auto}
body:not([data-view=signin]):not([data-view=loading]) .side-brand{display:block;padding:18px 20px 6px}
.side-brand img{height:34px;display:block}
.shell-role{display:inline-block;align-self:flex-start;margin:6px 20px 8px;font-size:.8rem;font-weight:600;letter-spacing:0;text-transform:none;color:var(--purple-ink);background:var(--purple-wash);border-radius:99px;padding:2px 12px}
.shell-nav{flex:1;padding:8px 12px 20px;gap:4px;flex-direction:column}
.shell-nav button{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:0 14px;border:0;border-radius:99px;background:none;color:var(--ink);font-weight:500;text-align:left}
.shell-nav button:hover{background:var(--mist)}
.shell-nav button[aria-current=page]{background:var(--orange-wash);color:var(--orange-ink);font-weight:600}
.shell-nav svg{width:22px;height:22px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
body:not([data-view=signin]):not([data-view=loading]) .top,body:not([data-view=signin]):not([data-view=loading]) .work,body:not([data-view=signin]):not([data-view=loading]) footer,body:not([data-view=signin]):not([data-view=loading]) #loading{margin-left:var(--side)}
body:not([data-view=signin]):not([data-view=loading]) .top .top-logo{display:none}
@media(min-width:900px){:root{--gut:32px}}
.shell-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:16px}
.shell-cards .card{margin:0}
.shell-cards .card:not(.card-attn){border-left:6px solid var(--line-strong)}
@media(max-width:899px){
 body:not([data-view=signin]):not([data-view=loading]) .top,body:not([data-view=signin]):not([data-view=loading]) .work,body:not([data-view=signin]):not([data-view=loading]) footer,body:not([data-view=signin]):not([data-view=loading]) #loading{margin-left:0}
 body:not([data-view=signin]):not([data-view=loading]) .menu-toggle{display:grid}
 body:not([data-view=signin]):not([data-view=loading]) .top .top-logo{display:block;height:28px}
 body:not([data-view=signin]):not([data-view=loading]) .shell-side{width:min(300px,86vw);transform:translateX(-100%);transition:transform .2s}
 body.drawer:not([data-view=signin]):not([data-view=loading]) .shell-side{transform:none;box-shadow:0 0 40px rgba(30,26,46,.3)}
 body.drawer .scrim{display:block;position:fixed;inset:0;background:rgba(30,26,46,.4);z-index:35}
 .shell-nav{flex-direction:column;overflow:visible}
 .shell-nav button{white-space:normal}
 .whoami #login-name{display:none}
 .top{gap:2px;padding-left:8px;padding-right:8px}.top button.link{white-space:nowrap;padding:0 4px;font-size:.8rem;min-height:44px}.menu-toggle{flex:none}.top-logo{height:26px}.whoami{margin-left:4px;gap:4px}.top-logo{max-width:110px}
 .work{padding-bottom:72px}
 .journal-filters,.grid-2,.schedule{grid-template-columns:1fr}
}
.update-banner{z-index:60}
.shell-cards .card h2,.card>h2:first-child{margin-top:0}

/* 390 top bar: at <=700px the drawer carries « Se déconnecter »; the bar keeps only the menu button, logo and avatar */
.drawer-logout{display:none;white-space:nowrap}
header.top button{white-space:nowrap}
@media(max-width:700px){
 #whoami #logout,#whoami #login-name{display:none!important}
 .drawer-logout{display:block;margin:12px 0 0;padding:0 12px;text-align:left}
}

/* ---------- Réglages (bloc 2): tabs Coûts / Affichage, one card per group, one row per setting (prototype sec-reglages.js) ---------- */
.settings .set-tabs{display:flex;gap:8px;margin:14px 0 16px;flex-wrap:wrap}
.settings .set-tab{border-color:var(--line-strong);min-height:44px}
.settings .set-tab[aria-selected=true]{background:var(--ink);border-color:var(--ink);color:#fff}
.settings .set-tab[aria-selected=true]:hover:not(:disabled){background:var(--ink)}
.set-card{border:1px solid var(--line);border-left:6px solid var(--blue);border-radius:var(--radius-m);background:#fff;padding:16px 18px;margin:0 0 16px}
.set-card h3{margin:0 0 4px}
.set-card>.small{margin:0 0 8px}
.set-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,240px);gap:8px 20px;align-items:start;padding:12px 0;border-top:1px solid var(--line)}
.set-card h3+.small+div>.set-row:first-child,.set-card>div>.set-row:first-child{border-top:0}
.set-text label{display:inline-block;margin:0 8px 2px 0}
.set-text .small{margin:0}
.set-input{display:flex;align-items:center;gap:8px}
.set-input input{width:100%;min-width:0}
.set-unit{font-size:.9rem;color:var(--ink-soft);white-space:nowrap}
.field-error{margin:6px 0 0;font-size:.9rem;color:var(--danger)}
.settings .row-actions{margin-top:18px}
.settings input[aria-invalid]{border-color:var(--danger)}
@media (max-width:640px){.set-row{grid-template-columns:minmax(0,1fr)}}

/* ---------- Collecte (bloc 3): assistant d'envoi en 6 étapes, aperçu d'import, désinscriptions, suivi (prototype sec-collecte.js) ---------- */
.wiz-steps{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 20px;padding:0}
.wiz-steps button{min-height:44px;padding:0 16px;border-color:var(--line-strong);display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.wiz-steps button[aria-current=step]{background:var(--ink);border-color:var(--ink);color:#fff}
.wiz-steps button[aria-current=step]:hover:not(:disabled){background:var(--ink)}
.wiz-steps .n{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--orange-wash);color:var(--orange-ink);font-size:.85rem;font-weight:700}
.wiz-steps button[aria-current=step] .n{background:var(--orange);color:var(--ink)}
.wiz-step[hidden]{display:none}
.wiz-step .row-actions{margin:12px 0 0}
.price{font-size:.9rem;color:var(--ink-soft);font-weight:400}
.recap{margin:12px 0}
.recap ul,.preview ul{margin:8px 0 0;padding-left:20px}
.preview{background:var(--blue-wash);border-left:6px solid var(--blue);border-radius:var(--radius-m);padding:12px 16px;margin:14px 0}
.nowrap{white-space:nowrap}
@media (max-width:700px){
 .wiz-steps{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}
 .wiz-step .row-actions button,#unsub-form button{width:100%}
 #unsub-rows th,#review-rows th{white-space:nowrap}
 #review-rows td:last-child{white-space:nowrap}
}

.table-wrap .admin-table th,.table-wrap .admin-table td{overflow-wrap:normal;word-break:normal}
.table-wrap .admin-table th,.table-wrap .admin-table td{white-space:nowrap}
/* Pulse « Agences »: a long agency name wraps so Région / Réponses / Note moyenne stay in view at 390 px */
#res-agences-rows td:first-child,#cs-agences-rows td:first-child{white-space:normal;overflow-wrap:anywhere;min-width:7rem}
#res-agences-rows td,#cs-agences-rows td{padding-inline:8px;white-space:normal}
.table-wrap .admin-table:has(#res-agences-rows) th,.table-wrap .admin-table:has(#cs-agences-rows) th{white-space:normal;padding-inline:8px}
/* Suivi des envois: one card per send */
.send-card{margin:0 0 16px}
.send-head h3{margin:0 0 4px;font-size:1.1rem}
.send-head p{margin:0}
.send-card .kpis{margin:12px 0}
.send-card .row-actions{margin:0 0 12px}
.relancer p{margin:6px 0 0}
.relance-count{font-size:1.6rem;font-weight:600;line-height:1.2}
.send-card .confirm{max-width:100%}
.send-card .confirm p{margin:0 0 8px}
/* Résultats et qualité */
.export-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:18px;margin:14px 0}
.export-grid h3{margin:0 0 4px}
#res-table td,#res-table th{vertical-align:top}
#res-table th,#res-table td{white-space:normal;overflow-wrap:break-word}
#res-table td:first-child{min-width:14em}
#res-rows button{white-space:nowrap}
@media (max-width:700px){
 #res-table thead{display:none}
 #res-table,#res-table tbody,#res-table tr,#res-table td{display:block}
 #res-table tr{padding:12px 16px;border-bottom:1px solid var(--line)}
 #res-table tr:last-child{border-bottom:0}
 #res-table td{padding:2px 0;border:0;min-width:0}
 #res-table td[data-label]::before{content:attr(data-label) ' : ';color:var(--ink-soft)}
 #res-table td:last-child{padding-top:8px}
}
#cs-table th,#cs-table td{white-space:normal;overflow-wrap:break-word;vertical-align:top}
#cs-rows button{white-space:nowrap}
@media (max-width:700px){
 #cs-table thead{display:none}
 #cs-table,#cs-table tbody,#cs-table tr,#cs-table td{display:block}
 #cs-table tr{padding:12px 16px;border-bottom:1px solid var(--line)}
 #cs-table tr:last-child{border-bottom:0}
 #cs-table td{padding:2px 0;border:0;min-width:0}
 #cs-table td[data-label]::before{content:attr(data-label) ' : ';color:var(--ink-soft)}
 #cs-table td:last-child{padding-top:8px}
}
#res-detail .card{margin-top:18px}

.rule-full{margin:8px 0 0}.rule-full summary{cursor:pointer;font-weight:600;min-height:44px;display:flex;align-items:center;gap:8px;list-style:none}.rule-full summary::-webkit-details-marker{display:none}.rule-full summary::before{content:'';width:0;height:0;border-left:6px solid currentColor;border-top:5px solid transparent;border-bottom:5px solid transparent;transition:transform .15s}.rule-full[open] summary::before{transform:rotate(90deg)}.rule-full .label-note{margin-top:4px}
#res-title{overflow-wrap:anywhere}
/* Espace client (bloc 5): study tabs (Pulse / Série « Bientôt ») and the result filters; wraps at 390 px, no horizontal scroll */
.cs-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;border-bottom:1px solid var(--line,#e3e0d8);padding-bottom:8px}
.cs-tabs [aria-selected="true"]{background:var(--ink,#1d2433);color:#fff}
.cs-tabs [aria-selected="true"]:hover:not(:disabled){background:var(--ink,#1d2433)}
.cs-tabs button:disabled{opacity:.75;cursor:default}
.cs-filters{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0}
.cs-filters label{display:flex;flex-direction:column;gap:4px;min-width:min(100%,180px);flex:1 1 180px}
.cs-filters select{max-width:100%}

.signin .or{margin:14px 0 4px;text-align:center;color:var(--muted)}
.code-form{display:grid;gap:8px}
.google-required{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:center;padding:12px 16px;background:#fff4d6;border-bottom:1px solid #c9a227}
.google-required[hidden]{display:none}
#team-level-row[hidden],#code-step[hidden],#code-request[hidden]{display:none}
.agencies{margin-top:32px;border-top:1px solid var(--line);padding-top:8px}
.agencies h2{margin:16px 0 4px}
/* backoffice-pulse M7: low-score alert banner (client « Agences » tab and staff Résultats) */
.alert-banner{background:#fdecea;border:0;border-left:6px solid #c0392b;border-radius:var(--radius-m);padding:12px 16px;margin:0 0 16px;color:#5c1a13}
.alert-banner p{margin:6px 0 0}
.optin{display:inline-flex;gap:6px;align-items:center;margin-right:12px;font-size:13px}
