/* ════════════════════════════════════════════════════════════════════════
   FEUILLE DES DOCUMENTS DIDACTIQUES « REGISTRES ».
   Extraite de Pages/Registres.cshtml, partagee avec Pages/RegistresRelatifs.cshtml :
   deux documents soeurs doivent se ressembler, et une regle corrigee ici doit
   valoir pour les deux. Les couleurs propres a chaque page (l'ambre et le rouge
   des jetons) sont redefinies DANS la page, sur .reg.
   ════════════════════════════════════════════════════════════════════════ */
.reg {
        --ink:#0f172a; --muted:#41506b; --soft:#64748b; --line:#e7ebf4;
        --indigo:#4f46e5; --violet:#7c3aed; --teal:#0f766e; --navy:#1e1b4b;
        --amber:#b45309; --rose:#be123c;
        /* UNE COULEUR PAR CONCEPT DE DUVAL, tenue d'un bout à l'autre du document :
           quatre analyses reviennent seize fois, et l'œil doit les retrouver sans lire. */
        --rec:#7c3aed; --rec-bg:#f7f3ff; --rec-li:#e6dcff;
        --tra:#4f46e5; --tra-bg:#f2f3ff; --tra-li:#dcdefc;
        --con:#0f766e; --con-bg:#effaf7; --con-li:#cbeae2;
        --coo:#b45309; --coo-bg:#fff8ef; --coo-li:#fae3c3;
        --paper:#fff; --wash:#f6f8fd;
        --serif:"Fraunces", Georgia, "Times New Roman", serif;
        --sans:"Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;
        --mono:"Cascadia Mono", Consolas, "SFMono-Regular", Menlo, monospace;
        color:var(--ink); font-family:var(--sans); background:var(--paper);
        -webkit-font-smoothing:antialiased; line-height:1.6; overflow-wrap:break-word;
    }
    .reg * { box-sizing:border-box; }
    .reg .rd { max-width:820px; margin-inline:auto; padding-inline:22px; }
    .reg .wide { max-width:1180px; margin-inline:auto; padding-inline:22px; }
    .reg p { color:var(--muted); font-size:17.5px; line-height:1.78; margin:0 0 18px; }
    .reg a { color:var(--indigo); }
    /* ⚠ site.css impose à TOUTE la maison « li { white-space:nowrap; cursor:pointer;
       padding:5px; margin-right:10px } » — des règles écrites pour les barres d'outils.
       Sans cette annulation, chaque étape numérotée part en une seule ligne et sort de
       l'écran sur un téléphone. On l'annule ICI, jamais globalement : le reste du site
       en dépend. */
    .reg li { white-space:normal; cursor:auto; padding:0; margin-right:0; }
    .ms-navlang { display:none !important; }
    .reg-langbar { position:absolute; top:14px; right:16px; z-index:5; }

    /* ---------- Héro ---------- */
    .reg-hero { position:relative; overflow:hidden; border-bottom:1px solid var(--line);
        background:
          radial-gradient(1100px 500px at 86% -14%, rgba(124,58,237,.13), transparent 60%),
          radial-gradient(940px 440px at 4% -8%, rgba(15,118,110,.12), transparent 60%),
          linear-gradient(180deg,#f8f9ff,#fff); }
    .reg-hero .rd { padding:78px 22px 54px; position:relative; }
    .reg-eyebrow { display:inline-flex; align-items:center; gap:9px; font-size:12.5px; font-weight:800;
        letter-spacing:.16em; text-transform:uppercase; color:var(--violet); margin-bottom:18px; }
    .reg-eyebrow .dot { width:8px; height:8px; border-radius:50%;
        background:linear-gradient(135deg,var(--violet),var(--teal)); box-shadow:0 0 0 4px rgba(124,58,237,.14); }
    .reg-h1 { font-family:var(--serif); font-optical-sizing:auto; font-weight:600; letter-spacing:-.015em;
        font-size:clamp(31px,5.2vw,54px); line-height:1.06; margin:0 0 16px; text-wrap:balance;
        background:linear-gradient(96deg,var(--navy),var(--violet) 52%,var(--teal));
        -webkit-background-clip:text; background-clip:text; color:transparent; }
    .reg-deck { font-family:var(--serif); font-weight:400; font-style:italic;
        font-size:clamp(18px,2.2vw,23px); line-height:1.45; color:#475569; margin:0; max-width:700px; text-wrap:balance; }
    .reg-sign { display:inline-flex; align-items:center; gap:10px; margin-top:22px; font-size:13.5px;
        color:var(--navy); background:#fff; border:1px solid #dde3f5; border-radius:999px;
        padding:9px 18px; box-shadow:0 8px 22px rgba(2,6,23,.06); }
    .reg-sign svg { width:16px; height:16px; color:var(--teal); flex:0 0 auto; }
    .reg-sign b { font-weight:800; }
    .reg-sign .quand { color:var(--soft); font-weight:600; }
    .reg-sign .quand::before { content:"·"; margin:0 7px; color:#c3ccdf; }

    /* ---------- Sections ---------- */
    .reg-sec { padding:54px 0 8px; scroll-margin-top:calc(var(--hdr,0px) + 16px); }
    .reg-kick { display:flex; align-items:center; gap:12px; margin-bottom:12px; }
    .reg-knum { font-family:var(--serif); font-weight:600; font-size:15px; color:#fff;
        background:linear-gradient(135deg,var(--violet),var(--teal)); border-radius:9px; padding:3px 10px; }
    .reg-klbl { font-size:12.5px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--soft); }
    .reg-h2 { font-family:var(--serif); font-weight:600; letter-spacing:-.01em;
        font-size:clamp(25px,3.4vw,36px); line-height:1.16; color:var(--navy); margin:0 0 14px; text-wrap:balance; }
    .reg-h3 { font-size:19px; font-weight:800; color:var(--navy); margin:26px 0 10px; letter-spacing:-.01em; }
    .reg-lead { font-size:19px; color:#334155; }

    /* ---------- Les quatre concepts, en cartes ---------- */
    .reg-quatre { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin-top:22px; }
    .reg-q { border:1px solid var(--line); border-radius:15px; padding:17px 19px; background:#fff; }
    .reg-q h4 { font-size:16px; font-weight:800; margin:0 0 7px; display:flex; align-items:center; gap:9px; }
    .reg-q h4 .pu { width:10px; height:10px; border-radius:3px; flex:0 0 auto; }
    .reg-q p { font-size:15px; line-height:1.62; margin:0; }
    .reg-q.rec { border-color:var(--rec-li); background:var(--rec-bg); } .reg-q.rec h4 { color:var(--rec); } .reg-q.rec .pu { background:var(--rec); }
    .reg-q.tra { border-color:var(--tra-li); background:var(--tra-bg); } .reg-q.tra h4 { color:var(--tra); } .reg-q.tra .pu { background:var(--tra); }
    .reg-q.con { border-color:var(--con-li); background:var(--con-bg); } .reg-q.con h4 { color:var(--con); } .reg-q.con .pu { background:var(--con); }
    .reg-q.coo { border-color:var(--coo-li); background:var(--coo-bg); } .reg-q.coo h4 { color:var(--coo); } .reg-q.coo .pu { background:var(--coo); }

    /* ---------- L'exemple numérique : il ouvre chaque opération ---------- */
    .reg-ex { border:1px solid var(--line); border-radius:16px; overflow:hidden;
        background:#fff; box-shadow:0 10px 30px rgba(2,6,23,.05); margin:20px 0 6px; }
    .reg-ex .t { display:flex; align-items:center; gap:20px; flex-wrap:wrap;
        padding:16px 20px; background:var(--wash); border-bottom:1px solid var(--line); }
    .reg-ex .t .qq { font-size:12.5px; font-weight:800; letter-spacing:.1em;
        text-transform:uppercase; color:var(--soft); }

    /* ---------- L'OPÉRATION POSÉE, comme sur le papier ----------
       Une opération écrite sur une ligne — « 47 + 38 = 85 » — n'est pas ce que l'élève
       a sous les yeux. Il la voit POSÉE : les rangs alignés en colonnes, la retenue
       au-dessus, la barre, le résultat dessous. Le document doit la montrer ainsi,
       sinon il parle d'autre chose que de ce qu'il analyse. */
    .reg-posee { display:inline-grid; gap:0 4px; font-family:var(--mono);
        font-variant-numeric:tabular-nums; line-height:1.15; }
    /* display:contents — les lignes servent à NOMMER (retenue, barre, résultat) sans
       casser la grille : leurs cases restent celles du parent, donc les rangs s'alignent. */
    .reg-posee > div { display:contents; }
    .reg-posee span { display:block; text-align:right; min-width:26px; font-size:26px;
        font-weight:700; color:var(--navy); padding:1px 2px; }
    .reg-posee .sg { color:var(--soft); font-weight:700; }
    .reg-posee .ret span { font-size:14px; color:var(--amber); height:18px; padding-bottom:0; }
    /* LA BARRE TRAVERSE TOUTE LA LARGEUR. Une bordure par colonne laissait apparaitre
       les gouttieres : trois traits au lieu d'un. Sur le papier, la barre est continue. */
    .reg-posee .bar span { grid-column:1 / -1; border-top:2.5px solid var(--navy);
        height:0; padding:0; margin-top:4px; margin-bottom:2px; min-width:0; }
    .reg-posee .res span { color:var(--teal); }
    .reg-posee .ray span, .reg-posee .ray-c { color:var(--rose); text-decoration:line-through; }
    /* La potence : le trait vertical à gauche du diviseur, le trait sous lui. */
    .reg-pot { display:inline-grid; grid-template-columns:auto auto; gap:0 12px;
        font-family:var(--mono); font-variant-numeric:tabular-nums; }
    .reg-pot .g { text-align:right; font-size:24px; font-weight:700; color:var(--navy); line-height:1.25; }
    .reg-pot .g i { font-style:normal; color:var(--amber); }
    .reg-pot .d { border-left:2.5px solid var(--navy); padding-left:12px;
        font-size:24px; font-weight:700; line-height:1.25; }
    .reg-pot .d .q { color:var(--teal); border-top:2.5px solid var(--navy); padding-top:2px; display:block; }
    /* ---------- La capture de l'outil ----------
       De VRAIES images : l'outil photographié en train de faire l'opération, pas un
       schéma redessiné. On les charge en différé — le lecteur qui s'arrête à la
       première section n'a pas à payer les quatre. */
    .reg-shot { margin:0; padding:16px 20px 4px; background:#fbfcff; border-bottom:1px solid var(--line); }
    .reg-shot img { display:block; width:100%; height:auto; border:1px solid var(--line);
        border-radius:12px; box-shadow:0 8px 24px rgba(2,6,23,.10); background:#fff; }
    .reg-shot figcaption { font-size:13.5px; color:var(--soft); margin-top:10px; line-height:1.55; }
    /* ---------- LE REJEU ----------
       L'opération SE FAIT sous les yeux du lecteur : on envoie à l'outil la même suite
       d'événements que le tableau s'envoie à lui-même. L'iframe isole l'outil (il tient
       à un « #main » unique, et la page en a déjà un) et se charge en différé.
       L'image reste dessous, visible tant que le rejeu n'est pas là : une vignette vide
       le temps du chargement ressemblerait à une panne. */
    .reg-rejeu { position:relative; width:100%; aspect-ratio:1160 / 700;
        border:1px solid var(--line); border-radius:12px; overflow:hidden;
        background:#fff center/cover no-repeat; box-shadow:0 8px 24px rgba(2,6,23,.10); }
    /* ⚠ LE REJEU GARDE SA TAILLE NATURELLE, ON LE MET À L'ÉCHELLE.
       Le cadre de l'outil ne descend pas sous 460 px de large : dans une vignette de
       302 px — un téléphone — il serait rogné de moitié. On donne donc à l'iframe ses
       1160 px, et on la réduit par transform. Tout reste visible, simplement plus petit ;
       c'est une démonstration qu'on regarde, pas un outil qu'on manipule. */
    .reg-rejeu iframe { position:absolute; top:0; left:0; width:1160px; height:700px;
        border:0; display:block; transform-origin:top left; }
    /* LE BOUTON QUI LANCE. Tant qu'on n'a pas appuye, rien ne se charge et rien ne
       bouge : le lecteur voit l'operation terminee, en image, et decide s'il veut la
       voir SE FAIRE. */
    .reg-play { position:absolute; inset:0; z-index:5; display:flex; flex-direction:column;
        align-items:center; justify-content:center; gap:14px; cursor:pointer;
        border:0; width:100%; font-family:inherit;
        background:linear-gradient(180deg, rgba(15,23,42,.30), rgba(15,23,42,.52));
        transition:background .18s ease; }
    .reg-play:hover { background:linear-gradient(180deg, rgba(15,23,42,.22), rgba(15,23,42,.46)); }
    .reg-play .rond { width:76px; height:76px; border-radius:50%; display:flex;
        align-items:center; justify-content:center; color:#fff;
        background:linear-gradient(135deg,var(--violet),var(--teal));
        box-shadow:0 14px 34px rgba(15,23,42,.45), 0 0 0 8px rgba(255,255,255,.22);
        transition:transform .18s ease, box-shadow .18s ease; }
    .reg-play:hover .rond { transform:scale(1.06); box-shadow:0 18px 42px rgba(15,23,42,.5), 0 0 0 11px rgba(255,255,255,.26); }
    .reg-play .rond svg { width:30px; height:30px; margin-inline-start:4px; }
    .reg-play .dit { font-size:14.5px; font-weight:800; color:#fff; letter-spacing:.01em;
        text-shadow:0 2px 10px rgba(2,6,23,.55); padding:0 16px; text-align:center; }
    @media (max-width:560px) { .reg-play .rond { width:62px; height:62px; } .reg-play .rond svg { width:25px; height:25px; } }

    /* LA PHRASE DE L'ETAPE, HORS DU CADRE — pour les petits ecrans seulement.
       Le rejeu y est mis a l'echelle 0,26 : sa propre bande de narration tomberait a
       quatre pixels de haut. La page la reprend donc ici, a taille normale. */
    .reg-narre { display:none; align-items:flex-start; gap:10px; margin:10px 0 0;
        font-size:15px; line-height:1.5; color:var(--navy); font-weight:600; }
    .reg-narre .no { flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center;
        min-width:26px; height:26px; padding:0 8px; border-radius:8px; color:#fff;
        font:800 12px var(--sans); font-variant-numeric:tabular-nums;
        background:linear-gradient(135deg,var(--violet),var(--teal)); }
    .reg-narre b { color:var(--indigo); }
    @media (max-width:700px) { .reg-narre.vu { display:flex; } }

    .reg-loupe { display:block; position:relative; }
    .reg-loupe::after { content:"Agrandir"; position:absolute; right:10px; bottom:10px;
        font-size:11.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
        color:#fff; background:rgba(15,23,42,.72); border-radius:8px; padding:5px 10px;
        pointer-events:none; }
    .reg-shot figcaption b { color:var(--ink); font-weight:700; }

    .reg-ex .b { padding:16px 20px 6px; }
    .reg-ex .b p { font-size:16px; }
    .reg-ex .b p:last-child { margin-bottom:14px; }
    .reg-ex ol { margin:0 0 16px; padding-inline-start:22px; }
    .reg-ex li { font-size:16px; color:var(--muted); line-height:1.7; margin-bottom:8px; }
    .reg-ex b { color:var(--ink); }
    .reg-ex code { font-family:var(--mono); font-size:15px; background:#eef1f8; border-radius:5px; padding:1px 6px; }

    /* ---------- Les quatre analyses d'une opération ---------- */
    .reg-an { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin:14px 0 4px; }
    .reg-a { border:1px solid var(--line); border-left-width:4px; border-radius:12px; padding:14px 16px; background:#fff; }
    .reg-a .n { font-size:11px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; margin-bottom:6px; }
    .reg-a p { font-size:15px; line-height:1.64; margin:0; }
    .reg-a.rec { border-left-color:var(--rec); background:var(--rec-bg); } .reg-a.rec .n { color:var(--rec); }
    .reg-a.tra { border-left-color:var(--tra); background:var(--tra-bg); } .reg-a.tra .n { color:var(--tra); }
    .reg-a.con { border-left-color:var(--con); background:var(--con-bg); } .reg-a.con .n { color:var(--con); }
    .reg-a.coo { border-left-color:var(--coo); background:var(--coo-bg); } .reg-a.coo .n { color:var(--coo); }

    /* ---------- Avertissements / limites ---------- */
    .reg-note { border:1px solid #fde4c8; background:linear-gradient(180deg,#fffaf3,#fff);
        border-radius:14px; padding:17px 19px; margin:22px 0 0; }
    .reg-note .t { display:flex; align-items:center; gap:8px; font-size:12.5px; font-weight:800;
        letter-spacing:.1em; text-transform:uppercase; color:var(--amber); margin-bottom:8px; }
    .reg-note .t svg { width:15px; height:15px; }
    .reg-note p { font-size:15.5px; color:#5b4a35; margin:0 0 10px; line-height:1.68; }
    .reg-note p:last-child { margin-bottom:0; }

    .reg-essai { display:inline-flex; align-items:center; gap:9px; margin-top:8px;
        font-size:14.5px; font-weight:800; color:#fff; text-decoration:none;
        background:linear-gradient(135deg,var(--violet),var(--teal)); border-radius:12px;
        padding:12px 20px; box-shadow:0 10px 24px rgba(124,58,237,.26); }
    .reg-essai svg { width:16px; height:16px; }

    .reg-refs { border-top:1px solid var(--line); margin-top:16px; padding-top:22px; }
    .reg-refs ol { margin:0; padding-inline-start:20px; }
    /* ⚠ site.css impose « li { white-space:nowrap; cursor:pointer; padding:5px } » à TOUTE
       la maison — des règles de barre d'outils. Sans cette annulation, chaque référence
       part en une seule ligne et sort de l'écran sur un téléphone. */
    .reg-refs li { font-size:15px; color:var(--muted); line-height:1.7; margin-bottom:11px;
        white-space:normal; cursor:auto; padding:0; margin-right:0; }
    .reg-refs li b { color:var(--navy); font-weight:700; }

    .reg-sign-bas { max-width:1000px; margin:52px auto 0; padding:24px 22px 4px;
        border-top:1px solid var(--line); text-align:center; }
    .reg-sign-bas .mk { font-family:var(--serif); font-weight:600; font-size:17px; color:var(--navy); }
    .reg-sign-bas .cr { font-size:13px; color:var(--soft); margin-top:6px; }
    .reg-foot-space { height:72px; }

    @media (max-width:900px) {
        .reg-quatre, .reg-an { grid-template-columns:1fr; }
    }
    @media (max-width:560px) {
        .reg-hero .rd { padding:58px 20px 40px; }
        .reg-sec { padding:42px 0 4px; }
        .reg p { font-size:16.5px; }
        .reg-sign { align-items:flex-start; border-radius:16px; }
        .reg-sign .quand { display:block; }
        .reg-sign .quand::before { content:none; margin:0; }
        .reg-ex .t .op { font-size:19px; }
    }
