/*
  Tournois amateurs — hub (/paris/amateur). Tokens de tokens.css, composants
  de components.css, aucune couleur/taille en dur (voir CLAUDE.md).
*/
.amateur-main{max-width:1200px;margin:0 auto;padding:28px 20px 80px;display:flex;flex-direction:column;gap:28px;}

.amateur-card{background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-lg);padding:22px 24px;box-shadow:var(--shadow-subtle);display:flex;flex-direction:column;gap:12px;}
.amateur-card h2{font-size:16px;font-weight:800;color:var(--ink);margin:0;}
.amateur-card p{font-size:13px;color:var(--ink-soft);line-height:1.5;margin:0;}

.recovery-status{font-weight:700;color:var(--terracotta);}

/* -- Liste des tournois : ce qui se joue, ce qui arrive, ce qui est fini ------- */
.amateur-list-tete{display:flex;flex-direction:column;gap:6px;}
.amateur-list-tete h2{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:800;color:var(--ink);margin:0;}
.amateur-list-section{display:flex;flex-direction:column;gap:22px;}
.amateur-vues{display:flex;flex-direction:column;gap:30px;}
.amateur-loading{font-size:13px;color:var(--ink-muted);padding:20px 0;margin:0;}

.amateur-groupe{display:flex;flex-direction:column;gap:14px;}
.amateur-groupe-tete{display:flex;flex-direction:column;gap:4px;}
.amateur-groupe-tete h2{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:800;color:var(--ink);margin:0;}
.amateur-groupe-tete p{font-size:13px;color:var(--ink-soft);margin:0;}
.amateur-groupe-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:14px;}
.amateur-groupe-liste{display:flex;flex-direction:column;gap:8px;}
.amateur-vide{margin:0;padding:22px 18px;text-align:center;font-size:13.5px;color:var(--ink-soft);border:1.5px dashed var(--line-2);border-radius:var(--r-lg);}

/* La carte : date à gauche façon agenda, contenu à droite. En cours = plus
   grande, liseré terracotta et appel à l'action ; compacte = une ligne. */
.amateur-carte{display:flex;align-items:center;gap:16px;padding:16px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-lg);color:inherit;text-decoration:none;transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease;animation:amateurCarteIn .4s ease backwards;animation-delay:calc(var(--i,0) * .05s);}
@keyframes amateurCarteIn{from{opacity:0;transform:translateY(6px);}}
.amateur-carte:hover,.amateur-carte:focus-visible{border-color:var(--terracotta);}
.amateur-carte:focus-visible{outline:2px solid var(--terracotta);outline-offset:2px;}
.amateur-carte.is-ouvert{position:relative;flex-wrap:wrap;padding:18px;border-color:var(--terracotta-badge);box-shadow:var(--shadow-subtle);}
.amateur-carte.is-ouvert:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover);}
.amateur-carte-date{flex:none;width:56px;height:60px;border-radius:var(--r-md);background:var(--terracotta-badge);color:var(--terracotta-2);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;text-align:center;}
.amateur-carte-date strong{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums;}
.amateur-carte-date span{margin-top:3px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;}
.amateur-carte-date.is-sans-date{background:var(--card-2);color:var(--ink-muted);}
.amateur-carte-date.is-sans-date span{margin:0;font-size:12px;text-transform:none;letter-spacing:0;padding:0 4px;}
.amateur-carte-corps{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;}
.amateur-carte-haut{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.amateur-carte-haut .badge{gap:7px;}
.amateur-carte-parieurs{font-size:12.5px;font-weight:700;color:var(--ink-soft);}
.amateur-carte-titre{font-size:16px;font-weight:800;color:var(--ink);overflow-wrap:anywhere;}
.amateur-carte-meta{font-size:12.5px;color:var(--ink-soft);}
.amateur-carte-cta{flex:1 0 100%;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:var(--terracotta);}
.amateur-carte-cta::after{content:"→";font-size:16px;transition:transform .15s ease;}
.amateur-carte:hover .amateur-carte-cta::after{transform:translateX(4px);}
.amateur-point{width:8px;height:8px;border-radius:50%;background:var(--terracotta);animation:amateurPoint 1.4s ease-in-out infinite;}
@keyframes amateurPoint{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.35;transform:scale(.7);}}
.amateur-carte--compact{padding:10px 14px;gap:14px;}
.amateur-carte--compact .amateur-carte-date{width:46px;height:48px;}
.amateur-carte--compact .amateur-carte-date strong{font-size:18px;}
.amateur-carte--compact .amateur-carte-titre{font-size:14.5px;}

/* Terminés : repliés, ils ne doivent pas concurrencer ce qui est en cours. */
.amateur-archive{border-top:1.5px solid var(--line);padding-top:14px;}
.amateur-archive summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;font-size:14px;font-weight:800;color:var(--ink-soft);width:fit-content;padding:4px 0;}
.amateur-archive summary::-webkit-details-marker{display:none;}
.amateur-archive summary::before{content:"";width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease;}
.amateur-archive[open] summary::before{transform:rotate(45deg);}
.amateur-archive summary:focus-visible{outline:2px solid var(--terracotta);outline-offset:3px;border-radius:var(--r-sm);}
.amateur-archive .amateur-groupe-liste{margin-top:12px;}
.amateur-archive .amateur-carte{opacity:.8;}
.amateur-archive .amateur-carte:hover{opacity:1;}
.amateur-archive .amateur-carte-date{background:var(--card-2);color:var(--ink-soft);}
@media (prefers-reduced-motion:reduce) {.amateur-carte,.amateur-point{animation:none;}.amateur-carte.is-ouvert:hover{transform:none;}}

/* -- Organisateur : animer un tournoi ------------------------------------------- */
/* Pas une carte : toute la largeur de la page pour la saisie. */
.organizer-panel{display:flex;flex-direction:column;gap:22px;}

/* Terminés : lignes serrées groupées par mois (même date en badge que les cartes). */
.amateur-agenda{margin-top:12px;border:1.5px solid var(--line);border-radius:var(--r-lg);background:var(--card);overflow:hidden;}
.amateur-mois{padding:10px 18px 6px;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);background:var(--card-2);}
.amateur-ligne{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:14px;padding:10px 18px;border-top:1px solid var(--line);color:inherit;text-decoration:none;transition:background .15s ease;}
.amateur-mois + .amateur-ligne{border-top:0;}
.amateur-ligne:hover,.amateur-ligne:focus-visible{background:var(--card-2);}
.amateur-ligne:focus-visible{outline:2px solid var(--terracotta);outline-offset:-2px;}
.amateur-ligne .amateur-carte-date{width:46px;height:48px;}
.amateur-ligne .amateur-carte-date strong{font-size:18px;}
.amateur-ligne-corps{display:flex;flex-direction:column;gap:3px;min-width:0;}
.amateur-ligne-titre{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;font-size:14.5px;font-weight:800;color:var(--ink);}
.amateur-ligne-nom{overflow-wrap:anywhere;}
.amateur-ligne-meta{font-size:12.5px;color:var(--ink-soft);}
.amateur-ligne-droite{display:flex;align-items:center;gap:12px;font-size:12.5px;color:var(--ink-muted);}
.amateur-ligne-chevron{width:8px;height:8px;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg);}
@media (max-width:640px) {.amateur-ligne{gap:12px;padding-inline:14px;}.amateur-mois{padding-inline:14px;}.amateur-ligne-parieurs{display:none;}}

:where(.organizer-panel) p{font-size:13px;color:var(--ink-soft);line-height:1.5;margin:0;}

@media (prefers-reduced-motion:reduce) {
  .billet-corps > *,.billet-bouton{animation:none;}
}

.amateur-groupe-tete .tournoi-count,.amateur-archive .tournoi-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:var(--pill);background:var(--terracotta-badge);color:var(--terracotta-2);font-size:12px;font-weight:800;}
.amateur-main > .breadcrumb{align-self:flex-start;}

/* -- Accueil : le titre, le choix du rôle, le billet d'entrée -------------------- */

.amateur-tete{display:flex;flex-direction:column;align-items:flex-start;gap:18px;}
.amateur-tete h1{margin:0;font-size:clamp(24px,3vw,34px);font-weight:800;letter-spacing:-.02em;line-height:1.15;color:var(--ink);text-wrap:balance;}
.amateur-roles{display:inline-flex;gap:4px;padding:5px;border-radius:var(--pill);background:var(--card);border:1.5px solid var(--line);}
.amateur-role{display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 26px 0 20px;border:0;border-radius:var(--pill);background:none;color:var(--ink-soft);font:inherit;font-size:16px;font-weight:800;white-space:nowrap;cursor:pointer;transition:background .18s ease,color .18s ease;}
.amateur-role svg{width:22px;height:22px;flex:none;}
.amateur-role:hover{color:var(--ink);}
.amateur-role[aria-selected="true"]{background:var(--terracotta-badge);color:var(--terracotta-2);}
.amateur-role:focus-visible{outline:2px solid var(--terracotta);outline-offset:2px;}
@media (max-width:640px) {.amateur-roles{display:grid;grid-template-columns:1fr 1fr;width:100%;}.amateur-role{justify-content:center;gap:7px;padding:0 6px;font-size:15px;white-space:nowrap;}.amateur-role svg{width:20px;height:20px;}}

.amateur-jouer{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:32px;align-items:center;}
.amateur-art{width:100%;max-width:300px;justify-self:center;margin-block:-36px;aspect-ratio:400/410;color:var(--ink-muted);}
.amateur-art svg{display:block;width:100%;height:100%;}
@media (max-width:940px) {.amateur-jouer{grid-template-columns:minmax(0,1fr);}.amateur-art{display:none;}}

/* Le billet : une souche à gauche (le code, ou le tournoi trouvé), un talon
   perforé à droite (le bouton). Les deux encoches sont découpées dans le
   billet lui-même (masque), et le filet qui le cerne suit ce découpage. */
.billet-w{filter:drop-shadow(1px 0 0 var(--line-2)) drop-shadow(-1px 0 0 var(--line-2)) drop-shadow(0 1px 0 var(--line-2)) drop-shadow(0 -1px 0 var(--line-2)) drop-shadow(0 14px 18px color-mix(in srgb,var(--ink) 10%,transparent));}
.billet{--talon:180px;--cx:calc(100% - var(--talon));display:grid;grid-template-columns:minmax(0,1fr) var(--talon);border-radius:var(--r-lg);background:linear-gradient(100deg,var(--terracotta-soft),transparent 40%),var(--card);
  -webkit-mask:radial-gradient(circle 13px at var(--cx) 0,transparent 97%,var(--ink)) top/100% 51% no-repeat,radial-gradient(circle 13px at var(--cx) 100%,transparent 97%,var(--ink)) bottom/100% 51% no-repeat;
  mask:radial-gradient(circle 13px at var(--cx) 0,transparent 97%,var(--ink)) top/100% 51% no-repeat,radial-gradient(circle 13px at var(--cx) 100%,transparent 97%,var(--ink)) bottom/100% 51% no-repeat;}
.billet-corps{display:flex;flex-direction:column;gap:14px;min-width:0;padding:24px;}
.billet-corps > *{animation:billetEntre .3s ease-out backwards;}
@keyframes billetEntre{from{opacity:0;transform:translateY(6px);}}
.billet-talon{display:flex;flex-direction:column;justify-content:space-between;gap:16px;padding:22px 18px;border-left:2px dashed var(--line-2);}
.billet-kicker{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--terracotta-2);}
.billet-champ{display:flex;flex-direction:column;gap:10px;}
.billet-etiquette{font-size:13px;font-weight:700;color:var(--ink-soft);}
.billet-cases{position:relative;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px;}
.billet-case{display:grid;place-items:center;height:clamp(50px,7vw,62px);border-radius:var(--r-sm);border:1.5px solid var(--line-2);background:var(--bg);font-family:var(--mono);font-size:clamp(22px,4vw,28px);font-weight:800;line-height:1;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease,background .15s ease;}
.billet-cases:focus-within .billet-case.est-actif{border-color:var(--terracotta);box-shadow:0 0 0 3px var(--terracotta-soft);}
.billet-cases:focus-within .billet-case.est-actif:empty::after{content:"";width:2px;height:38%;background:var(--terracotta);animation:billetCurseur 1s steps(1) infinite;}
@keyframes billetCurseur{50%{opacity:0;}}
.billet-case.est-faux{border-color:var(--danger);background:var(--danger-badge);}
.billet-saisie{position:absolute;inset:0;width:100%;height:100%;opacity:0;border:0;cursor:text;}
.billet-message{margin:0!important;font-size:13px!important;color:var(--ink-muted)!important;}
.billet-message.est-erreur{font-weight:700;color:var(--danger)!important;}
.billet-haut{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.billet-haut .badge{gap:7px;}
.billet-titre{margin:0;font-size:22px;font-weight:800;letter-spacing:-.015em;line-height:1.2;color:var(--ink);overflow-wrap:anywhere;}
.billet-meta{margin:-6px 0 0!important;font-size:14px!important;color:var(--ink-soft)!important;}
.billet-faits{display:flex;flex-wrap:wrap;gap:8px;}
.billet-fait{padding:5px 12px;border-radius:var(--pill);border:1px solid var(--line);background:var(--bg);font-size:13px;font-weight:700;color:var(--ink-soft);}
.billet-lien{align-self:flex-start;padding:0;border:0;background:none;font:inherit;font-size:13px;font-weight:700;color:var(--ink-soft);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
.billet-lien:hover{color:var(--ink);}
.billet-barres{height:46px;border-radius:6px;opacity:.78;background:repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 5px,var(--ink) 5px 6px,transparent 6px 10px,var(--ink) 10px 13px,transparent 13px 16px);}
.billet-bouton{width:100%;padding-inline:12px;text-align:center;text-decoration:none;animation:billetEntre .3s ease-out backwards;}
.billet-bouton:disabled{opacity:.55;cursor:wait;}
@media (max-width:560px) {
  .billet{--talon:128px;--cy:calc(100% - var(--talon));grid-template-columns:minmax(0,1fr);
    -webkit-mask:radial-gradient(circle 13px at 0 var(--cy),transparent 97%,var(--ink)) left/51% 100% no-repeat,radial-gradient(circle 13px at 100% var(--cy),transparent 97%,var(--ink)) right/51% 100% no-repeat;
    mask:radial-gradient(circle 13px at 0 var(--cy),transparent 97%,var(--ink)) left/51% 100% no-repeat,radial-gradient(circle 13px at 100% var(--cy),transparent 97%,var(--ink)) right/51% 100% no-repeat;}
  .billet-corps{padding:20px 18px;}
  .billet-talon{height:var(--talon);flex-direction:row;align-items:center;justify-content:space-between;gap:14px;padding:18px 20px;border-left:0;border-top:2px dashed var(--line-2);}
  .billet-barres{display:none;}
  .billet-bouton{width:auto;flex:1;}
}

/* Animer sans le rôle d'organisateur : une explication à la place de la saisie. */
.amateur-acces{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:26px;border-radius:var(--r-xl);border:1.5px dashed var(--line-2);}
.amateur-acces h2{margin:0;font-size:20px;font-weight:800;color:var(--ink);}
.organizer-panel.est-ferme > :not(.amateur-acces){display:none;}

.amateur-main.creation-terminee .amateur-tete,.amateur-main.creation-terminee #brouillonsSection{display:none!important;}

/* Les brouillons de l'organisateur : un bloc À PART, nettement séparé de l'assistant de création au-dessus (grand vide, cadre en
   pointillés — c'est du travail en cours, pas des tournois publiés). Chaque ligne : la carte (lien vers la Régie) + Reprendre / Supprimer. */
#brouillonsSection{margin-top:36px;padding:22px;border:2px dashed var(--line-2);border-radius:var(--r-xl);background:var(--card-2);}
.amateur-groupe-titre{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.amateur-brouillon{display:flex;align-items:center;gap:10px;}
.amateur-brouillon > .amateur-carte{flex:1;min-width:0;}
.amateur-brouillon-actions{flex:none;display:flex;gap:8px;}
.amateur-brouillon-actions .btn,#brouillonsToutSupprimer{text-transform:none;letter-spacing:0;font-size:13px;min-height:40px;}
.amateur-supprimer.est-confirmation,#brouillonsToutSupprimer.est-confirmation{background:var(--danger-solid);border-color:var(--danger-solid);color:#fff;}
.amateur-supprimer{min-width:112px;}
.amateur-supprimer:hover{border-color:var(--danger);}
@media (max-width:640px){
  #brouillonsSection{padding:16px;margin-top:28px;}
  .amateur-brouillon{flex-direction:column;align-items:stretch;gap:8px;}
  .amateur-brouillon-actions .btn{flex:1;}
}
