/* OpenCookies — système de design. Une seule feuille pour le site public et l'espace client. Aucune ressource externe. */
:root{
  --bg:#f6f5f0;--surface:#fff;--ink:#14201b;--muted:#5b675f;--line:#e2dfd4;--line-strong:#cfcabb;
  --brand:#0b7a58;--brand-dark:#085c42;--brand-ink:#fff;--brand-soft:#e1f3ea;--dark:#0b2a21;--dark-ink:#e9f4ee;
  --ok:#067647;--ok-bg:#dcf3e6;--warn:#a65a05;--warn-bg:#fdefd2;--bad:#b42318;--bad-bg:#fde4e1;--info:#175cd3;--info-bg:#e2ecfd;--na:#5b675f;--na-bg:#eceae2;
  --focus:#2563eb;--radius:14px;--shadow:0 1px 2px rgba(20,32,27,.05),0 8px 24px rgba(20,32,27,.06);--shadow-lg:0 2px 4px rgba(20,32,27,.06),0 18px 50px rgba(20,32,27,.12);
  --font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0f1512;--surface:#18211d;--ink:#eaf1ed;--muted:#a3b0a8;--line:#27322d;--line-strong:#37453e;
  --brand:#3fcf9b;--brand-dark:#6fe0b6;--brand-ink:#06271b;--brand-soft:#133428;--dark:#07140f;--dark-ink:#e9f4ee;
  --ok:#6fe0b0;--ok-bg:#12352a;--warn:#f2c25f;--warn-bg:#3a2c0e;--bad:#ff9a90;--bad-bg:#3b1a17;--info:#8fb5ff;--info-bg:#162a52;--na:#a3b0a8;--na-bg:#222c27;--focus:#8ab4ff;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.3);--shadow-lg:0 2px 4px rgba(0,0,0,.4),0 18px 50px rgba(0,0,0,.45)}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 var(--font);display:flex;flex-direction:column;min-height:100vh;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%}
a{color:var(--brand-dark);text-underline-offset:3px}
a:hover{color:var(--brand)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hp{position:absolute;left:0;top:0;width:1px!important;min-width:0;height:1px!important;min-height:0;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);opacity:0;pointer-events:none}
.wrap{width:min(100% - 40px,1120px);margin-inline:auto}
.narrow{width:min(100% - 40px,720px);margin-inline:auto}
.muted{color:var(--muted)}.small{font-size:14px}.center{text-align:center}.nowrap{white-space:nowrap}
h1,h2,h3,h4{margin:0 0 .5em;line-height:1.15;letter-spacing:-.02em;font-weight:760;color:var(--ink)}
h1{font-size:clamp(30px,5vw,52px)}h2{font-size:clamp(23px,3.4vw,34px)}h3{font-size:19px;letter-spacing:-.01em}h4{font-size:16px}
p{margin:0 0 1em}
.lede{font-size:clamp(17px,2vw,20px);color:var(--muted);max-width:60ch}
.kicker{margin:0 0 10px;font-size:13px;font-weight:750;letter-spacing:.09em;text-transform:uppercase;color:var(--brand-dark)}
code{font:13.5px/1.5 var(--mono);background:var(--na-bg);padding:2px 6px;border-radius:6px;overflow-wrap:anywhere}
hr{border:0;border-top:1px solid var(--line);margin:28px 0}

/* ---------- boutons ---------- */
.btn,button.btn,button{font:inherit;font-weight:680;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;border-radius:11px;border:1.5px solid var(--brand);background:var(--brand);color:var(--brand-ink);cursor:pointer;text-decoration:none;transition:transform .08s,filter .15s,background .15s;line-height:1.2}
.btn:hover,button:hover{filter:brightness(1.07);color:var(--brand-ink)}
.btn:active,button:active{transform:translateY(1px)}
.btn.secondary,button.secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}
.btn.secondary:hover,button.secondary:hover{background:var(--na-bg);color:var(--ink);filter:none}
.btn.ghost,button.ghost{background:transparent;border-color:transparent;color:var(--ink)}
.btn.ghost:hover,button.ghost:hover{background:var(--na-bg);color:var(--ink);filter:none}
.btn.danger,button.danger{background:var(--bad);border-color:var(--bad);color:#fff}
.btn.sm,button.sm{min-height:36px;padding:6px 14px;font-size:14px;border-radius:9px}
.btn.lg{min-height:52px;padding:14px 28px;font-size:17px}
.btn[disabled],button[disabled]{opacity:.55;cursor:not-allowed}
.actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}

/* ---------- formulaires ---------- */
.field{margin:0 0 18px}
.field label,label.l{display:block;font-weight:650;margin-bottom:6px;font-size:15px}
.field .hint{display:block;color:var(--muted);font-size:13.5px;margin-top:5px;font-weight:400}
input[type=text],input[type=email],input[type=password],input[type=url],input[type=number],select,textarea{width:100%;font:inherit;color:var(--ink);background:var(--surface);border:1.5px solid var(--line-strong);border-radius:11px;padding:11px 14px;min-height:46px}
textarea{min-height:110px;resize:vertical}
input:focus,select:focus,textarea:focus{border-color:var(--brand);outline:3px solid color-mix(in srgb,var(--brand) 25%,transparent);outline-offset:0}
input[type=color]{width:56px;height:46px;padding:3px;border-radius:11px;border:1.5px solid var(--line-strong);background:var(--surface);cursor:pointer}
input[type=checkbox],input[type=radio]{width:19px;height:19px;accent-color:var(--brand);vertical-align:-3px;margin-right:6px}
.row{display:grid;gap:18px}.row.two{grid-template-columns:repeat(2,minmax(0,1fr))}.row.three{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:720px){.row.two,.row.three{grid-template-columns:1fr}}
fieldset{border:1.5px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin:0 0 18px;background:var(--surface)}
legend{font-weight:700;padding:0 8px}
.choice{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;margin:8px 0;background:var(--surface);cursor:pointer}
.choice:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}
.choice b{display:block}.choice span.d{color:var(--muted);font-size:14px;display:block}
.inline-form{display:inline}

/* ---------- messages ---------- */
.alert{padding:14px 16px;border-radius:12px;border:1px solid;margin:0 0 18px;font-size:15px}
.alert.ok{background:var(--ok-bg);border-color:color-mix(in srgb,var(--ok) 35%,transparent);color:var(--ok)}
.alert.warn{background:var(--warn-bg);border-color:color-mix(in srgb,var(--warn) 35%,transparent);color:var(--warn)}
.alert.bad{background:var(--bad-bg);border-color:color-mix(in srgb,var(--bad) 35%,transparent);color:var(--bad)}
.alert.info{background:var(--info-bg);border-color:color-mix(in srgb,var(--info) 35%,transparent);color:var(--info)}
.alert strong{color:inherit}

/* ---------- puces ---------- */
.chip,.badge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap}
.v-ok,.badge.ok{color:var(--ok);background:var(--ok-bg)}.v-verifier,.badge.warn{color:var(--warn);background:var(--warn-bg)}.v-corriger,.badge.bad{color:var(--bad);background:var(--bad-bg)}.v-na,.badge.na{color:var(--na);background:var(--na-bg)}.badge.info{color:var(--info);background:var(--info-bg)}.badge.brand{color:var(--brand-dark);background:var(--brand-soft)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--na)}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}

/* ---------- en-tête public ---------- */
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.top .in{display:flex;align-items:center;gap:20px;min-height:68px}
.brand{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:20px;letter-spacing:-.02em;color:var(--ink);text-decoration:none}
.brand:hover{color:var(--ink)}.brand span{color:var(--brand)}
.brand svg{width:30px;height:30px;flex:none}
.top nav{display:flex;gap:6px;margin-left:auto;align-items:center;flex-wrap:wrap}
.top nav a{color:var(--muted);text-decoration:none;font-size:15px;font-weight:600;padding:8px 12px;border-radius:9px}
.top nav a:hover{color:var(--ink);background:var(--na-bg)}
.top nav a[aria-current=page]{color:var(--ink)}
.top nav .btn{color:var(--brand-ink);margin-left:6px}
.top nav .btn:hover{background:var(--brand);color:var(--brand-ink)}
.navchk{position:absolute;opacity:0;pointer-events:none}.burger{display:none}
@media(max-width:760px){.top .in{flex-wrap:nowrap;justify-content:space-between;min-height:58px;padding:0}
.burger{display:flex;align-items:center;justify-content:center;width:44px;height:44px;margin-right:-8px;border-radius:10px;cursor:pointer}
.burger:hover{background:var(--na-bg)}.navchk:focus-visible+.burger{outline:2px solid var(--brand);outline-offset:1px}
.burger span,.burger span::before,.burger span::after{display:block;width:22px;height:2px;border-radius:2px;background:var(--ink);transition:transform .2s,opacity .2s}
.burger span{position:relative}.burger span::before,.burger span::after{content:"";position:absolute;left:0}.burger span::before{top:-7px}.burger span::after{top:7px}
.navchk:checked+.burger span{background:transparent}.navchk:checked+.burger span::before{top:0;transform:rotate(45deg)}.navchk:checked+.burger span::after{top:0;transform:rotate(-45deg)}
.top nav{display:none;position:absolute;left:0;right:0;top:100%;margin:0;width:auto;flex-direction:column;align-items:stretch;gap:2px;padding:8px 16px 16px;background:var(--bg);border-bottom:1px solid var(--line);box-shadow:0 12px 24px rgba(0,0,0,.08)}
.navchk:checked~nav{display:flex}.top nav a{padding:13px 12px;font-size:16px}.top nav .btn{margin:8px 0 0;text-align:center;padding:13px 16px}}

/* ---------- sections publiques ---------- */
.main{flex:1;padding:40px 0 64px}
.section{padding:72px 0}.section.alt{background:var(--surface);border-block:1px solid var(--line)}
.section.dark{background:var(--dark);color:var(--dark-ink);border:0}.section.dark h2,.section.dark h3{color:#fff}.section.dark .muted,.section.dark .lede{color:#9fb8ac}.section.dark code{background:#12382c;color:#bff0d9}.section.dark a{color:#7be0b5}.section.dark a.btn{color:var(--brand-ink)}.section.dark a.btn.secondary{background:transparent;color:#fff;border-color:#9fb8ac}.section.dark a.btn.secondary:hover{background:rgba(255,255,255,.12);color:#fff}
.hero{padding:64px 0 48px}
.hero .grid{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center}
@media(max-width:900px){.hero .grid{grid-template-columns:1fr;gap:32px}.hero{padding:40px 0 24px}}
.hero h1 em{font-style:normal;color:var(--brand)}
.trust{display:flex;gap:18px;flex-wrap:wrap;margin:22px 0 0;padding:0;list-style:none;color:var(--muted);font-size:14.5px}
.trust li::before{content:"✓";color:var(--brand);font-weight:800;margin-right:7px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
@media(max-width:900px){.grid3,.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.grid3,.grid2,.grid4{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}
.card.flat{box-shadow:none}.card h3{margin-bottom:8px}.card p:last-child{margin-bottom:0}
.card .ico{width:44px;height:44px;border-radius:12px;background:var(--brand-soft);color:var(--brand-dark);display:grid;place-items:center;margin-bottom:14px}
.card .ico svg{width:24px;height:24px}
.step{position:relative;padding-top:6px}.step .n{width:36px;height:36px;border-radius:50%;background:var(--brand);color:var(--brand-ink);font-weight:800;display:grid;place-items:center;margin-bottom:12px}
.codeblock{position:relative;background:#0b1f18;color:#d6f5e6;border-radius:12px;padding:16px 18px;font:13.5px/1.6 var(--mono);overflow-x:auto;margin:0 0 14px;white-space:pre-wrap;word-break:break-all}
.codeblock .copy{position:absolute;top:8px;right:8px;min-height:32px;padding:4px 12px;font-size:13px;background:#1c3b2f;border-color:#1c3b2f;color:#d6f5e6}
.codeblock .copy:hover{filter:brightness(1.3)}
.codeblock.pad{padding-right:96px}
.faq details{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:6px 18px;margin:10px 0}
.faq summary{cursor:pointer;font-weight:700;padding:12px 0;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::after{content:"+";font-size:22px;line-height:1;color:var(--brand)}.faq details[open] summary::after{content:"–"}
.faq details p{color:var(--muted)}

/* maquette du bandeau (page d'accueil) */
.mock{background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);overflow:hidden}
.mock .bar{display:flex;gap:6px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--na-bg)}
.mock .bar i{width:11px;height:11px;border-radius:50%;background:var(--line-strong)}
.mock .page{padding:22px 22px 120px;position:relative;min-height:340px}
.mock .page u{display:block;height:11px;border-radius:6px;background:var(--na-bg);margin:11px 0;text-decoration:none}
.mock .page u:nth-child(1){width:55%;height:20px}.mock .page u:nth-child(3){width:90%}.mock .page u:nth-child(5){width:70%}.mock .page u:nth-child(6){width:82%}
.mock .ban{position:absolute;left:14px;right:14px;bottom:14px;background:var(--surface);border:1px solid var(--line-strong);border-radius:14px;box-shadow:var(--shadow-lg);padding:16px}
.mock .ban b{display:block;margin-bottom:4px;font-size:15px}.mock .ban p{font-size:13px;color:var(--muted);margin:0 0 12px}
.mock .ban .b{display:flex;gap:8px}.mock .ban .b span{flex:1;text-align:center;padding:9px 6px;border-radius:9px;font-size:13px;font-weight:700;border:1.5px solid var(--brand)}
.mock .ban .b span.p{background:var(--brand);color:var(--brand-ink)}.mock .ban .b span.s{border-color:var(--line-strong);color:var(--muted)}
.mock .tag{position:absolute;right:16px;top:14px}

/* formulaire de test */
.scan-form{display:flex;gap:10px;margin:22px 0 10px;flex-wrap:wrap}
.scan-form input[type=text]{flex:1 1 280px;min-width:0}
.region-choice{border:0;padding:0;margin:0;display:flex;gap:14px;align-items:center;flex-wrap:wrap;background:transparent;font-size:14.5px;color:var(--muted);width:100%}
.region-choice legend{padding:0;float:left;margin-right:6px;font-weight:600}
.region-choice label{cursor:pointer}

/* ---------- rapport de test ---------- */
.summary{margin-top:22px;padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}
.headline{margin:0 0 6px;font-size:22px;font-weight:720}
.score{display:flex;align-items:baseline;gap:8px;margin:6px 0 14px}.score b{font-size:54px;line-height:1;letter-spacing:-.03em}.score span{color:var(--muted)}
.share{margin-top:18px;padding:14px 20px;border:1px dashed var(--line-strong);border-radius:var(--radius)}
.report section{margin-top:36px}
.check{margin:14px 0;padding:16px 18px;border:1px solid var(--line);border-left-width:5px;border-radius:12px;background:var(--surface)}
.check.v-ok{border-left-color:var(--ok)}.check.v-verifier{border-left-color:var(--warn)}.check.v-corriger{border-left-color:var(--bad)}.check.v-na{border-left-color:var(--na)}
.check.v-ok,.check.v-verifier,.check.v-corriger,.check.v-na{background:var(--surface);color:var(--ink)}
.check p{margin:6px 0}.check .expected{font-size:14px;color:var(--muted)}.check .action{background:var(--na-bg);padding:8px 12px;border-radius:8px}
.proofs{margin:6px 0 6px 18px;padding:0;font-size:14px;color:var(--muted)}
.chips{list-style:none;padding:0;margin:10px 0;display:flex;gap:8px;flex-wrap:wrap}
.shots{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.shots figure{margin:0}
.shots img{width:100%;height:auto;border:1px solid var(--line);border-radius:10px;display:block;background:var(--na-bg)}.shots figcaption{font-size:14px;color:var(--muted);margin-top:6px}
.plain-list{list-style:none;padding:0;margin:12px 0}.plain-list li{margin:10px 0}.steps{padding-left:22px}.steps li{margin:10px 0}
.hint{color:var(--muted);font-size:14px;max-width:62ch}.site{overflow-wrap:anywhere}
details{margin:10px 0;border:1px solid var(--line);border-radius:12px;padding:10px 16px;background:var(--surface)}summary{cursor:pointer;font-weight:600}
.table-wrap{overflow-x:auto;margin:10px 0}
table{border-collapse:collapse;width:100%;font-size:14.5px}
th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle;overflow-wrap:anywhere}
thead th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;background:transparent}
tbody th{font-weight:650}
tbody tr:hover{background:color-mix(in srgb,var(--na-bg) 55%,transparent)}
.loading{height:8px;border-radius:99px;background:var(--na-bg);overflow:hidden;margin:26px 0 14px}.loading i{display:block;height:100%;width:40%;background:var(--brand);border-radius:99px;animation:slide 2.6s ease-in-out infinite}
@keyframes slide{0%{margin-left:-40%;width:30%}45%{margin-left:30%;width:55%}100%{margin-left:105%;width:30%}}
.wait-msg{position:relative;height:28px;color:var(--muted)}.wait-msg span{position:absolute;left:0;opacity:0;animation:msg 40s infinite}
.wait-msg span:nth-child(1){animation-delay:0s}.wait-msg span:nth-child(2){animation-delay:8s}.wait-msg span:nth-child(3){animation-delay:16s}.wait-msg span:nth-child(4){animation-delay:24s}.wait-msg span:nth-child(5){animation-delay:32s}
@keyframes msg{0%,18%{opacity:1}20%,100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.loading i{animation:none;width:100%;opacity:.5}.wait-msg span{animation:none}.wait-msg span:first-child{opacity:1}html{scroll-behavior:auto}}

/* ---------- pied de page ---------- */
.foot{background:var(--surface);border-top:1px solid var(--line);margin-top:auto}
.foot .in{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:28px;padding:40px 0 24px}
.foot h4,.foot .ft{font-weight:760;line-height:1.15;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 10px}
.foot ul{list-style:none;margin:0;padding:0}.foot li{margin:7px 0}.foot a{color:var(--ink);text-decoration:none;font-size:15px}.foot a:hover{color:var(--brand)}
.foot .base{border-top:1px solid var(--line);padding:16px 0 28px;color:var(--muted);font-size:13.5px;display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap}
.foot .in.five{grid-template-columns:1.3fr repeat(4,1fr)}
@media(max-width:900px){.foot .in.five{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:760px){.foot .in,.foot .in.five{grid-template-columns:1fr 1fr}}

/* ---------- espace client ---------- */
body.app{background:var(--bg)}
.apptop{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.apptop .in{display:flex;align-items:center;gap:16px;min-height:62px}
.apptop .sw{margin-left:6px;min-width:0}.apptop select{min-height:38px;padding:6px 12px;border-radius:9px;font-weight:650;max-width:260px;width:auto}
.apptop .right{margin-left:auto;display:flex;gap:6px;align-items:center}
.apptop .right a{color:var(--muted);text-decoration:none;font-size:14.5px;font-weight:600;padding:7px 11px;border-radius:9px}.apptop .right a:hover{background:var(--na-bg);color:var(--ink)}
.sitehead{background:var(--surface);border-bottom:1px solid var(--line)}
.sitehead .in{padding:22px 0 0}
.sitehead h1{font-size:28px;margin:0 0 4px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tabs{display:flex;gap:2px;overflow-x:auto;margin-top:14px;scrollbar-width:thin}
.tabs a{display:block;padding:12px 16px;color:var(--muted);text-decoration:none;font-weight:650;font-size:15px;border-bottom:3px solid transparent;white-space:nowrap}
.tabs a:hover{color:var(--ink)}.tabs a[aria-current=page]{color:var(--brand-dark);border-bottom-color:var(--brand)}
.app .main{padding:30px 0 70px}
.page-title{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;flex-wrap:wrap;margin-bottom:22px}.page-title h1{font-size:30px;margin:0}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}
.stat .k{color:var(--muted);font-size:13.5px;font-weight:650}.stat .v{font-size:34px;font-weight:780;letter-spacing:-.03em;line-height:1.15;margin:4px 0 2px}.stat .s{font-size:13.5px;color:var(--muted)}
.stat .up{color:var(--ok)}.stat .down{color:var(--bad)}
.bars{display:flex;align-items:flex-end;gap:5px;height:150px;padding:6px 0 0;border-bottom:1px solid var(--line-strong)}
.bars i{flex:1;min-width:4px;background:var(--brand);border-radius:5px 5px 0 0;opacity:.88;position:relative}.bars i:hover{opacity:1}
.bars-x{display:flex;justify-content:space-between;color:var(--muted);font-size:12.5px;margin-top:6px}
.hbar{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,2fr) auto;gap:12px;align-items:center;margin:9px 0;font-size:14.5px}
.hbar .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar .b{height:10px;border-radius:99px;background:var(--na-bg);overflow:hidden}.hbar .b i{display:block;height:100%;background:var(--brand);border-radius:99px}.hbar .n{font-weight:700;font-variant-numeric:tabular-nums}
.site-card{display:flex;flex-direction:column;gap:14px}
.site-card header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.site-card h3{margin:0;font-size:20px}
.kv{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.kv div{background:var(--bg);border-radius:10px;padding:10px 12px}.kv small{display:block;color:var(--muted);font-size:12.5px}.kv b{font-size:18px}
.empty{text-align:center;padding:44px 20px;border:2px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface)}
.empty h3{margin-bottom:6px}
.checklist{list-style:none;margin:0;padding:0}.checklist li{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.checklist li:last-child{border:0}
.checklist .mark{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:14px}
.mark.ok{background:var(--ok-bg);color:var(--ok)}.mark.warn{background:var(--warn-bg);color:var(--warn)}.mark.bad{background:var(--bad-bg);color:var(--bad)}.mark.na{background:var(--na-bg);color:var(--na)}
.auth{display:grid;place-items:center;min-height:calc(100vh - 140px);padding:30px 0}
.auth .card{width:min(100%,440px)}
.auth h1{font-size:28px}
.editor{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:28px;align-items:start}
@media(max-width:980px){.editor{grid-template-columns:1fr}}
.preview{position:sticky;top:90px}
.preview .frame{border:1px solid var(--line-strong);border-radius:16px;overflow:hidden;background:#fff;box-shadow:var(--shadow-lg)}
.preview .frame .bar{display:flex;gap:6px;padding:11px 14px;background:var(--na-bg);border-bottom:1px solid var(--line)}.preview .frame .bar i{width:10px;height:10px;border-radius:50%;background:var(--line-strong)}
.preview iframe{display:block;width:100%;height:480px;border:0;background:#fff}
.preview iframe.mobile{width:375px;max-width:100%;margin:0 auto;border-left:1px solid var(--line);border-right:1px solid var(--line)}
.seg{display:inline-flex;border:1.5px solid var(--line-strong);border-radius:10px;overflow:hidden;background:var(--surface)}
.seg button{min-height:36px;border:0;border-radius:0;background:transparent;color:var(--muted);padding:6px 14px;font-weight:650}.seg button[aria-pressed=true]{background:var(--brand);color:var(--brand-ink)}
.swatches{display:flex;gap:10px;flex-wrap:wrap}.swatch{border:2px solid var(--line);border-radius:12px;padding:6px;background:var(--surface);cursor:pointer;display:flex;gap:4px;min-height:auto}
.swatch:hover{border-color:var(--brand);filter:none}.swatch i{width:22px;height:22px;border-radius:6px;display:block;border:1px solid rgba(0,0,0,.12)}
.kbd{font:13px var(--mono);border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:6px;padding:1px 6px;background:var(--surface)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--dark);color:#fff;padding:10px 18px;border-radius:99px;font-weight:650;box-shadow:var(--shadow-lg);z-index:50}
@media print{body{background:#fff;color:#000;font-size:12px}.top,.foot,.apptop,.tabs,.scan-form,.btn,.share .actions{display:none}.check,.summary,details{break-inside:avoid;border-color:#999}details{display:block}details>*{display:block}.chip{border:1px solid #000;background:#fff;color:#000}a{color:#000;text-decoration:none}}
@media(max-width:700px){.apptop .in{flex-wrap:wrap;gap:6px 10px;padding:10px 0;min-height:0}.apptop .sw{order:3;margin-left:0;flex:1 1 100%}.apptop select{max-width:100%;width:100%}.apptop .right{gap:0}.apptop .right a:nth-of-type(3){display:none}.apptop .right a,.apptop .right button{padding:7px 8px;font-size:13.5px}.sitehead h1{font-size:23px;word-break:break-word}}
/* Langues : sélecteur en pied de page, barre de suggestion, marques « à compléter » des pages juridiques, droite-à-gauche (arabe). */
.langmenu{display:flex;flex-wrap:wrap;gap:6px 16px;justify-content:center;padding:14px 0 6px;font-size:13.5px}
.langmenu a{color:var(--muted)}.langmenu a:hover{color:var(--brand)}.langmenu [aria-current]{font-weight:700;color:var(--ink)}
.langbar{background:var(--brand-soft);text-align:center;padding:7px 16px;font-size:14px}.langbar a{color:var(--brand-dark);font-weight:650}
mark.ph{background:#fff1a8;color:#4d3b00;padding:0 4px;border-radius:4px;font-weight:650;white-space:normal}
@media (prefers-color-scheme:dark){mark.ph{background:#5c4a00;color:#ffe9a0}}
.legal .legal-sec ul{margin:8px 0 8px;padding-inline-start:22px}.legal .legal-sec li{margin:8px 0}.legal .legal-sec p{max-width:78ch}
.codeblock{direction:ltr;text-align:left}
[dir=rtl] .top nav{margin-left:0;margin-right:auto}[dir=rtl] .top nav .btn{margin-left:0;margin-right:6px}
[dir=rtl] input[type=checkbox],[dir=rtl] input[type=radio]{margin-right:0;margin-left:6px}
[dir=rtl] .trust li::before{margin-right:0;margin-left:7px}
[dir=rtl] .mock .tag{right:auto;left:16px}
[dir=rtl] .region-choice legend{float:right;margin-right:0;margin-left:6px}
[dir=rtl] .check{border-left-width:1px;border-right-width:5px}
[dir=rtl] .check.v-ok{border-left-color:var(--line);border-right-color:var(--ok)}[dir=rtl] .check.v-verifier{border-left-color:var(--line);border-right-color:var(--warn)}[dir=rtl] .check.v-corriger{border-left-color:var(--line);border-right-color:var(--bad)}[dir=rtl] .check.v-na{border-left-color:var(--line);border-right-color:var(--na)}
[dir=rtl] .steps{padding-left:0;padding-right:22px}
[dir=rtl] th,[dir=rtl] td{text-align:right}
[dir=rtl] .wait-msg span{left:auto;right:0}
[dir=rtl] .apptop .sw{margin-left:0;margin-right:6px}[dir=rtl] .apptop .right{margin-left:0;margin-right:auto}
@media(max-width:760px){[dir=rtl] .top nav{margin-right:0}}
@media(max-width:700px){[dir=rtl] .apptop .sw{margin-right:0}}
