/* ==========================================================================
   AdFree Pass · Obscura (habillage 1.0.0) — pages du parcours : formules (planche de tirage), confirmation
   (la carte se développe), espace membre, aide. Jetons et carte : sections.css. Suit le thème clair et sombre ;
   le bandeau de tête est une plaque sombre (image autonome), le reste de la page suit les jetons.
   ========================================================================== */
.afob-page,.afob-offer{color:var(--afob-fg);font-family:var(--afob-fu)}
.afob-wrap{width:100%;max-width:var(--max,1440px);margin-inline:auto;padding-inline:var(--gut,32px)}
.afob-h1{margin:8px 0 0;font:700 clamp(34px,4.4vw,58px)/1.04 var(--afob-fd);letter-spacing:-.015em;color:inherit}
.afob-h2{margin:0 0 16px;font:700 clamp(25px,2.6vw,34px)/1.12 var(--afob-fd);color:var(--afob-fg)}
.afob-lede{margin:12px 0 0;max-width:62ch;font:19px/1.55 var(--afob-fr);color:var(--afob-fg2)}

/* Hero plate */
.afob-hero{position:relative;overflow:hidden;background:radial-gradient(70% 120% at 85% 0%,#3a1a14 0%,#0c0a0b 62%);color:var(--afob-plate-fg)}
.afob-hero::before{content:"";position:absolute;inset:0;background:url(art/card-2.webp) right -60px center/auto 140% no-repeat;opacity:.18;filter:sepia(.4) blur(1px);mask-image:linear-gradient(270deg,#000 10%,transparent 60%)}
.afob-hero__in{position:relative;padding-block:clamp(34px,5vw,64px)}
.afob-hero .afob-lede{color:var(--afob-plate-mut)}
.afob-hero .afob-k--red{color:#f08a6e}
.afob-hero--s .afob-h1{font-size:clamp(32px,3.8vw,48px)}

/* Configurator */
.afob-config{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);padding-block:clamp(26px,4vw,48px)}
.afob-config__form{display:grid;align-content:start;gap:14px;min-width:0}
.afob-step{display:flex;align-items:center;gap:10px;margin:10px 0 0;font:800 13px var(--afob-fu);letter-spacing:.14em;text-transform:uppercase;color:var(--afob-mut)}
.afob-step span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--afob-plate);color:#f08a6e;font-size:12px;letter-spacing:0}
.afob-seg--l span{min-height:46px;padding:10px 20px;font-size:15px}
.afob-tiers--l{gap:10px}
.afob-tiers--l .afob-tier>span{padding:14px 16px;gap:4px}
.afob-tiers--l .afob-tier b{font-size:17px}
.afob-tiers--l strong{grid-column:1/-1;font:800 22px/1.2 var(--afob-fu);font-variant-numeric:tabular-nums;color:var(--afob-fg)}
.afob-tiers--l strong small{font-size:14px;color:var(--afob-mut)}
.afob-fin{grid-column:2}
.afob-save{grid-column:1/-1;font-size:12.5px!important;color:var(--afob-red)!important}
.afob-perks--l{gap:10px;padding:16px 18px;border:1px solid var(--afob-line);border-radius:18px;background:var(--afob-s1)}
.afob-perks--l li{font-size:15px}
.afob-perks--l li b{display:block}
.afob-perks--l li small{display:block;font-weight:500;font-size:13.5px;color:var(--afob-mut)}
.afob-btn--xl{min-height:58px;font-size:16.5px;margin-top:6px}
.afob-assure{display:grid;gap:8px;margin:4px 0 0;padding:0;list-style:none;font:600 14px/1.4 var(--afob-fu);color:var(--afob-fg2)}
.afob-assure li{display:flex;align-items:center;gap:10px}
.afob-assure svg{width:18px;height:18px;color:var(--afob-red);flex:none}
.afob-note,.afob-alert{display:flex;align-items:flex-start;gap:10px;margin:0;padding:12px 14px;border-radius:14px;background:var(--afob-s2);font:600 14.5px/1.45 var(--afob-fu)}
.afob-alert{background:color-mix(in oklab,var(--afob-red) 14%,var(--afob-bg))}
.afob-note svg,.afob-alert svg{width:18px;height:18px;flex:none;color:var(--afob-red)}

/* Stage: chosen card in front, the two other finishes fanned behind, the contact strip below. */
.afob-config__stage{position:relative;overflow:hidden;display:grid;justify-items:center;align-content:start;gap:18px;padding:clamp(22px,3vw,36px) 18px;border-radius:24px;background:radial-gradient(110% 80% at 50% 15%,#2c2021,#0c0a0b 72%);min-width:0}
.afob-stage{position:relative;z-index:1;width:min(340px,78%)}
.afob-stage .afob-card{max-width:none}
.afob-fan{position:absolute;inset:clamp(22px,3vw,36px) 0 auto;display:flex;justify-content:center;pointer-events:none}
.afob-fan__c{position:absolute;top:24px;width:min(240px,52%);aspect-ratio:3/4;border-radius:14px;overflow:hidden;opacity:.5;box-shadow:0 20px 40px -18px #000}
.afob-fan__c img{width:100%;height:100%;object-fit:cover;filter:sepia(.3) brightness(.6)}
.afob-fan__c--t0{transform:translateX(-62%) rotate(-9deg)}
.afob-fan__c--t2{transform:translateX(62%) rotate(9deg)}
.afob-fan__c--t1{display:none}
.afob-offer:has(input[name="tier"][value="0"]:checked) .afob-fan__c--t0,.afob-offer:has(input[name="tier"][value="2"]:checked) .afob-fan__c--t2{display:none}
.afob-offer:has(input[name="tier"][value="0"]:checked) .afob-fan__c--t1{display:block;transform:translateX(-62%) rotate(-9deg)}
.afob-offer:has(input[name="tier"][value="2"]:checked) .afob-fan__c--t1{display:block;transform:translateX(62%) rotate(9deg)}
.afob-sheet{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:min(420px,100%);margin:0;padding:10px;border-radius:12px;background:#151112;list-style:none}
.afob-sheet__f{display:grid;gap:6px;color:var(--afob-plate-fg);cursor:pointer}
.afob-sheet__im{position:relative;display:block;aspect-ratio:3/4;overflow:hidden;border-radius:6px;outline:2px solid transparent;outline-offset:2px}
.afob-sheet__im img{width:100%;height:100%;object-fit:cover;filter:sepia(.2) saturate(.8)}
.afob-sheet__n{position:absolute;margin:6px;padding:2px 6px;border-radius:4px;background:#f1eae1;color:#141011;font:800 11px var(--afob-fu)}
.afob-sheet__f{position:relative}
.afob-sheet__t{font:700 13px/1.25 var(--afob-fu)}
.afob-sheet__t small{display:block;font-weight:600;font-size:11.5px;color:var(--afob-plate-mut)}
.afob-offer:has(#afob-pick-0:checked) .afob-sheet__f--t0 .afob-sheet__im,.afob-offer:has(#afob-pick-1:checked) .afob-sheet__f--t1 .afob-sheet__im,.afob-offer:has(#afob-pick-2:checked) .afob-sheet__f--t2 .afob-sheet__im{outline-color:#e2553a}
.afob-stage__note{position:relative;z-index:1;max-width:44ch;margin:0;text-align:center;font:14px/1.5 var(--afob-fu);color:var(--afob-plate-mut)}
@media (max-width:960px){.afob-config{grid-template-columns:1fr}.afob-config__stage{order:-1}}
@media (max-width:640px){.afob-tiers--l{grid-template-columns:1fr}.afob-tiers--l .afob-tier>span{grid-template-columns:auto 1fr auto;align-items:center}.afob-tiers--l strong{grid-column:3;grid-row:1/3;text-align:right;font-size:19px}.afob-save{grid-column:1/-1}.afob-seg--l{display:flex}.afob-seg--l label{flex:1}.afob-seg--l span{justify-content:center;padding-inline:10px}}

/* Why and compare */
.afob-why{padding-block:12px clamp(26px,4vw,48px)}
.afob-why__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0;padding:0;list-style:none}
.afob-why__grid li{display:grid;align-content:start;gap:8px;padding:18px;border:1px solid var(--afob-line);border-radius:18px;background:var(--afob-s1)}
.afob-why__grid svg{width:26px;height:26px;color:var(--afob-red)}
.afob-why__grid b{font:700 17px/1.3 var(--afob-fu)}
.afob-why__grid span{font:14.5px/1.5 var(--afob-fu);color:var(--afob-fg2)}
@media (max-width:1100px){.afob-why__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.afob-why__grid{grid-template-columns:1fr}}
.afob-compare{padding-bottom:clamp(30px,5vw,60px)}
.afob-compare__scroll{position:relative;overflow-x:auto;border:1px solid var(--afob-line);border-radius:18px;background:var(--afob-s1)}
.afob-compare table{width:100%;min-width:620px;border-collapse:collapse;font:15px/1.4 var(--afob-fu)}
.afob-compare th,.afob-compare td{padding:12px 14px;border-bottom:1px solid var(--afob-line);text-align:left}
.afob-compare thead th{vertical-align:bottom;font:700 16px var(--afob-fu)}
.afob-compare thead th small{display:block;font-weight:600;font-size:12.5px;color:var(--afob-mut)}
.afob-compare thead .afob-swatch{width:14px;height:14px;margin-right:6px;vertical-align:-2px}
.afob-compare td{text-align:center;color:var(--afob-red)}
.afob-compare td svg{width:20px;height:20px}
.afob-compare tbody th{font-weight:600}
.afob-compare tr:last-child>*{border-bottom:0}
.afob-more{display:flex;align-items:center;gap:8px;margin:16px 0 0;font:600 15px var(--afob-fu)}
.afob-more svg{width:18px;height:18px;color:var(--afob-red)}
.afob-more a{display:inline-flex;align-items:center;min-height:44px;color:var(--afob-red)}
.afob-faq__b table{display:block;max-width:100%;overflow-x:auto}

/* Solo pages: confirmation, member, guest states */
.afob-solo{display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:clamp(24px,5vw,72px);align-items:center;padding-block:clamp(30px,5vw,64px)}
.afob-solo__card{display:grid;justify-items:center;gap:12px;padding:clamp(20px,3vw,32px);border-radius:24px;background:radial-gradient(110% 80% at 50% 15%,#2c2021,#0c0a0b 72%)}
.afob-solo__tx{display:grid;align-content:start;gap:16px;min-width:0}
.afob-solo__tx .afob-h1{font-size:clamp(30px,3.6vw,46px)}
.afob-finish{display:flex;align-items:center;gap:8px;margin:0;font:700 13.5px var(--afob-fu);color:var(--afob-plate-mut)}
.afob-pill{display:inline-flex;align-items:center;gap:8px;justify-self:start;margin:0;padding:6px 14px;border-radius:99px;background:color-mix(in oklab,oklch(.6 .14 150) 18%,var(--afob-bg));font:700 14px var(--afob-fu)}
.afob-pill span{width:8px;height:8px;border-radius:50%;background:oklch(.6 .14 150)}
.afob-pill.is-warn,.afob-pill.is-ending{background:color-mix(in oklab,var(--afob-red) 16%,var(--afob-bg))}
.afob-pill.is-warn span,.afob-pill.is-ending span{background:var(--afob-red)}
.afob-status{display:flex;align-items:center;gap:10px;margin:0;font:700 15px var(--afob-fu)}
.afob-status svg{width:20px;height:20px;color:var(--afob-red)}
.afob-spin{animation:afob-spin 1.4s linear infinite}
@keyframes afob-spin{to{transform:rotate(360deg)}}
.afob-slow{display:grid;gap:8px;padding:14px;border-radius:14px;background:var(--afob-s2);font:15px/1.5 var(--afob-fu)}
.afob-develop .afob-card.is-pending .afob-card__art img{animation:afob-develop 3.2s ease-in-out infinite alternate}
@keyframes afob-develop{from{filter:grayscale(1) brightness(.45) blur(3px)}to{filter:grayscale(.6) brightness(.7) blur(1px)}}
[data-afps-confirm][data-state="active"] .afob-card .afob-card__art img{filter:none;animation:none;transition:filter 1.2s ease}
@media (prefers-reduced-motion:reduce){.afob-spin,.afob-develop .afob-card.is-pending .afob-card__art img{animation:none}}
@media (max-width:860px){.afob-solo{grid-template-columns:1fr}.afob-solo__card{justify-self:stretch}.afob-solo__card .afob-card{max-width:300px}}

/* Loyalty seals */
.afob-seals{padding-bottom:clamp(26px,4vw,48px)}
.afob-seals .afob-x{margin-bottom:16px}
.afob-seals__row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}
.afob-seals__row li{display:grid;justify-items:center;gap:6px;padding:14px 8px;border:1px solid var(--afob-line);border-radius:16px;background:var(--afob-s1);text-align:center}
.afob-seals__row svg{width:64px;height:64px}
.afob-seals__row b{font:700 13.5px/1.25 var(--afob-fu)}
.afob-seals__row small{font:600 12px var(--afob-fu);color:var(--afob-mut)}
.afob-seals__row .is-next svg{filter:grayscale(1);opacity:.4}
.afob-seals__row .is-now{border-color:var(--afob-red);box-shadow:inset 0 0 0 1px var(--afob-red)}
@media (max-width:900px){.afob-seals__row{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:480px){.afob-seals__row{grid-template-columns:repeat(2,minmax(0,1fr))}}
.afob-history{padding-bottom:clamp(30px,5vw,60px)}
.afob-history :is(h2,h3){font-family:var(--afob-fd);color:var(--afob-fg)}
.afob-history table{width:100%;border-collapse:collapse;font:14.5px var(--afob-fu)}
.afob-history th,.afob-history td{padding:10px;border-bottom:1px solid var(--afob-line);text-align:left}

/* Help */
.afob-help{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:clamp(24px,4vw,48px);padding-block:clamp(26px,4vw,48px)}
.afob-faq{display:grid;gap:10px;align-content:start}
.afob-faq__i{border:1px solid var(--afob-line);border-radius:16px;background:var(--afob-s1);padding:0 18px}
.afob-faq__i summary{display:flex;align-items:center;gap:14px;min-height:60px;font:700 17px/1.35 var(--afob-fu);cursor:pointer;list-style:none}
.afob-faq__i summary::-webkit-details-marker{display:none}
.afob-faq__i summary::after{content:"+";margin-left:auto;font:400 26px/1 var(--afob-fu);color:var(--afob-red)}
.afob-faq__i[open] summary::after{content:"−"}
.afob-faq__n{font:800 13px var(--afob-fu);color:var(--afob-red);font-variant-numeric:tabular-nums}
.afob-faq__b{padding:0 0 16px 40px;font:16px/1.6 var(--afob-fu);color:var(--afob-fg2)}
.afob-faq__b table{width:100%;border-collapse:collapse;margin-top:8px}
.afob-faq__b th,.afob-faq__b td{padding:8px;border-bottom:1px solid var(--afob-line);text-align:left}
.afob-help__side{display:grid;align-content:start;gap:12px}
.afob-prices{display:grid;gap:10px;padding:18px;border:1px solid var(--afob-line);border-radius:16px;background:var(--afob-s1)}
.afob-prices__r{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center;padding-top:10px;border-top:1px solid var(--afob-line);font:600 14.5px var(--afob-fu)}
.afob-prices__r .afob-swatch{grid-row:span 3}
.afob-prices__r small{display:block;font-size:12px;color:var(--afob-red)}
.afob-help__link{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--afob-line);border-radius:16px;background:var(--afob-s1);color:var(--afob-fg);text-decoration:none}
.afob-help__link:hover{border-color:var(--afob-line2)}
.afob-help__link svg{width:24px;height:24px;flex:none;color:var(--afob-red)}
.afob-help__link b{display:block;font:700 15.5px var(--afob-fu)}
.afob-help__link small{font:13px var(--afob-fu);color:var(--afob-mut)}
@media (max-width:960px){.afob-help{grid-template-columns:1fr}}

/* The studio template boxes content at 1100 px: Obscura's pages run full width with their own gutters. */
.afps-wrap:has(.afob-page,.afob-offer){width:100%;max-width:none;margin:0;padding:0}

/* Codex's billing navigation (mu-plugin obscura-billing) above the member and help pages. */
.afps-wrap .obb-nav{display:flex;flex-wrap:wrap;gap:6px;width:100%;max-width:var(--max,1440px);margin:16px auto 0;padding-inline:var(--gut,32px)}
.afps-wrap .obb-nav a{display:inline-flex;align-items:center;min-height:44px;padding:8px 16px;border:1px solid var(--line,#ddd3c6);border-radius:99px;background:var(--s1,#fffdf9);color:var(--fg,#1c1517);font:600 14px var(--fu,system-ui,sans-serif);text-decoration:none}
.afps-wrap .obb-nav a[aria-current="page"]{background:var(--fg,#1c1517);color:var(--bg,#f4efe7);border-color:var(--fg,#1c1517)}
/* Buttons printed by the plugin's account block (AFP_UI::account) on the member page. */
.afps-wrap .afp-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border:1px solid var(--line2,#c9bdae);border-radius:99px;background:var(--s1,#fffdf9);color:var(--fg,#1c1517);font:700 14.5px var(--fu,system-ui,sans-serif);cursor:pointer;text-decoration:none}
.afps-wrap .afp-btn:hover{background:var(--s2,#ebe4da)}
.afps-wrap .afp-btn--primary{border-color:transparent;background:var(--red-btn,#b4301e);color:#fff}
/* Member page: the plugin's account block (bare) under the seals row. Its badge list repeats that row: hidden.
   Display options and payment history become two theme panels. */
.afob-history .afp-account{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:16px;align-items:start}
.afob-history .afp-block:has(.afp-badges){display:none}
.afob-history .afp-block{display:grid;gap:10px;margin:0;padding:22px 24px;border:1px solid var(--line,#ddd3c6);border-radius:var(--r3,14px);background:var(--s1,#fffdf9);color:var(--fg,#1c1517)}
.afob-history .afp-block__title{margin:0;font:700 22px/1.2 var(--fd,Georgia,serif)}
.afob-history .afp-block__intro{margin:0;font:15px/1.5 var(--fu,system-ui,sans-serif);color:var(--mut,#5b4f49)}
.afob-history .afp-toggle{display:flex;gap:12px;align-items:flex-start;min-height:44px;padding:6px 0;font:500 15px/1.45 var(--fu,system-ui,sans-serif);cursor:pointer}
.afob-history .afp-toggle input{flex:none;width:20px;height:20px;margin:2px 0 0;accent-color:var(--red-btn,#b4301e)}
.afob-history .afp-prefs .afp-btn{justify-self:start}
.afob-history table{width:100%;border-collapse:collapse;font:14.5px var(--fu,system-ui,sans-serif)}
.afob-history th,.afob-history td{padding:10px 8px;border-bottom:1px solid var(--line,#ddd3c6);text-align:left}
.afob-history tr:last-child>*{border-bottom:0}

/* Aide et conditions : liens vers les conditions (1.1.0) */
.afob-help__legal{display:flex;flex-wrap:wrap;gap:6px 16px;padding:14px 4px 0;border-block-start:1px solid var(--afob-line);font:600 14px var(--afob-fu)}
.afob-help__legal a{color:var(--afob-fg2);text-underline-offset:.18em}
.afob-help__legal a:hover{color:var(--afob-red)}
/* Espace membre : reprise d'un abonnement résilié (1.1.0) */
.afob-resume{display:grid;gap:10px;padding:14px 16px;border-radius:14px;background:color-mix(in oklab,var(--afob-red) 10%,var(--afob-s1));font:600 15px/1.5 var(--afob-fu)}
.afob-resume p{margin:0}
.afob-resume .obb-done{display:grid;gap:6px;padding:12px 14px;border-radius:12px;background:color-mix(in oklab,oklch(.6 .14 150) 14%,var(--afob-s1))}
.afob-resume .obb-done h3{margin:0;font:700 18px/1.2 var(--afob-fd)}
/* Mode test de l'équipe dans l'historique (feuille du plugin non chargée par le thème) (1.1.0) */
.afob-history .afp-testbar{grid-column:1/-1;display:grid;gap:10px;padding:14px 16px;border:1px dashed var(--afob-line2);border-radius:14px;background:var(--afob-s1);font:500 14px/1.45 var(--afob-fu);color:var(--afob-fg2)}
.afob-history .afp-testbar p{margin:0}
.afob-history .afp-testbar__opts{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.afob-history .afp-testbar__opt{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border:1px solid var(--afob-line);border-radius:99px;background:var(--afob-bg);color:var(--afob-fg);font:600 13px var(--afob-fu);text-decoration:none}
.afob-history .afp-testbar__opt.is-on{border-color:var(--afob-fg);background:var(--afob-fg);color:var(--afob-bg)}
/* Préférences de l'historique : bouton aux couleurs du thème (contraste AA clair et sombre) (1.1.0) */
.afob-history .afp-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border:1px solid transparent;border-radius:99px;background:var(--red-btn,#b4301e);color:#fff;font:700 14.5px var(--fu,system-ui,sans-serif);cursor:pointer;text-decoration:none;justify-self:start}
.afob-history .afp-btn:hover{background:color-mix(in oklab,var(--red-btn,#b4301e) 86%,#000)}
