/* ================================================================
   RL.CSS — componenti del corso di Reti Logiche
   Mappe di Karnaugh, circuiti interattivi, cronogrammi, automi,
   sommatore, simulatore x86, codice Assembler e Verilog.
   Richiede style.css e appunti.css; il colore d'accento è quello
   di <body data-corso="rl">.
================================================================= */

.page-content {
    --rl-on: #dc2626;          /* filo a 1 */
    --rl-off: #64748b;         /* filo a 0 */
    --rl-code: #101a2e;
    --rl-code2: #0c1526;
}

/* ---------------- Codice: Assembler e Verilog ---------------- */
.page-content pre.rl-code {
    margin: 1.3em 0;
    padding: 1em 1.2em;
    overflow-x: auto;
    font: .86rem/1.62 var(--font-mono);
    color: #dbe4f0;
    background: var(--rl-code);
    border-radius: 12px;
    font-variant-ligatures: none;
}
.page-content pre.rl-code[data-titolo]::before {
    content: attr(data-titolo);
    display: block;
    margin: -.2em 0 .6em;
    font: 700 .7rem var(--font-sans);
    letter-spacing: .06em;
    text-transform: uppercase;
    color: #8b99ae;
}
.rl-t-com { color: #8792a8; font-style: italic; }
.rl-t-str { color: #9fe0a8; }
.rl-t-num { color: #efa6e6; }
.rl-t-reg { color: #7dd3fc; }
.rl-t-lab { color: #fcd34d; font-weight: 600; }
.rl-t-dir { color: #c4b5fd; }
.rl-t-mn  { color: #fda4af; font-weight: 600; }
.rl-t-pun { color: #8b99ae; }

/* lettere negate (sopralineate) nelle espressioni booleane */
.page-content .rl-lett { font-style: italic; white-space: nowrap; }
.page-content .rl-neg { text-decoration: overline; text-decoration-thickness: 1.5px; text-underline-offset: 2px; }
.page-content .rl-expr { font: 1.05rem/1.9 var(--font-sans); color: var(--ink); }
.page-content .rl-expr-blocco {
    margin: 1.2em 0;
    padding: .7em 1em;
    font: 1.08rem/1.9 var(--font-sans);
    color: var(--ink);
    text-align: center;
    background: var(--acc-soft);
    border: 1px solid var(--acc-line);
    border-radius: 12px;
    overflow-x: auto;
}

/* tabelle di verità statiche */
.page-content table.rl-verita { width: auto; margin: 1.2em auto; border-collapse: collapse; font: .92rem var(--font-mono); }
.page-content table.rl-verita th,
.page-content table.rl-verita td { padding: .28em .75em; text-align: center; border: 1px solid var(--line); }
.page-content table.rl-verita th { background: #f7f7f9; font-family: var(--font-sans); }
.page-content table.rl-verita .is-out { background: var(--acc-soft); font-weight: 700; color: var(--acc-ink); }
.page-content table.rl-verita td.is-sep, .page-content table.rl-verita th.is-sep { border-left: 3px double var(--line-strong); }

/* ---------------- Karnaugh ---------------- */
.page-content .rl-km-bar { display: flex; flex-wrap: wrap; gap: .6em; }
.page-content .rl-km-body { display: grid; grid-template-columns: minmax(0, 300px) minmax(0, 1fr); gap: 1.2em; align-items: start; }
.page-content .rl-km-map svg { display: block; width: 100%; max-width: 320px; height: auto; font-family: var(--font-sans); }
.page-content .rl-km-ax { font: 600 12px var(--font-mono); fill: var(--muted); }
.page-content .rl-km-cod { font: 600 12px var(--font-mono); fill: var(--ink-soft); }
.page-content .rl-km-box { fill: #fff; stroke: #cbd5e1; stroke-width: 1; }
.page-content .rl-km-box.is-target { fill: var(--acc-soft); }
.page-content .rl-km-val { font: 700 19px var(--font-mono); fill: var(--ink); pointer-events: none; }
.page-content .rl-km-val.is-dc { fill: #94a3b8; }
.page-content .rl-km-idx { font: 9px var(--font-mono); fill: #94a3b8; pointer-events: none; }
.page-content .rl-km-cell.is-edit { cursor: pointer; }
.page-content .rl-km-cell.is-edit:hover .rl-km-box { fill: #fef3c7; }
.page-content .rl-km-cell:focus { outline: none; }
.page-content .rl-km-cell:focus-visible .rl-km-box { stroke: var(--acc); stroke-width: 3; }
.page-content .rl-km-grp { pointer-events: none; }
.page-content .rl-km-nome { font: 800 12px var(--font-sans); pointer-events: none; }
.page-content .rl-km-info { min-width: 0; }
.page-content .rl-km-tab td, .page-content .rl-km-tab th { padding: .35em .55em; font-size: .86rem; }
.page-content .rl-km-tipo { font-size: .8rem; white-space: nowrap; }
.page-content .rl-km-tipo.is-essenziale { color: #15803d; font-weight: 700; }
.page-content .rl-km-tipo.is-assolutamente { color: #b42318; }
.page-content .rl-km-tipo.is-semplicemente { color: #b45309; }
.page-content .rl-km-sub { margin: .9em 0 .3em; font-size: .76rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.page-content .rl-km-liste ul { margin: 0; padding-left: 1.1em; font: .9rem var(--font-mono); }
.page-content .rl-km-liste li span { font-family: var(--font-sans); font-size: .8rem; color: var(--muted); }
.page-content .rl-km-liste li.is-min { font-weight: 700; color: var(--acc-ink); }
.page-content .rl-km-expr { margin: .2em 0 0; padding: .55em .8em; font: 1.1rem/1.8 var(--font-sans); color: var(--ink); background: #fff; border: 1px solid var(--acc-line); border-radius: 10px; overflow-x: auto; }
.page-content .rl-km-note, .page-content .rl-km-hint, .page-content .rl-km-wait { margin: .6em 0 0; font-size: .85rem; color: var(--muted); }
@media (max-width: 760px) { .page-content .rl-km-body { grid-template-columns: minmax(0, 1fr); } }

/* ---------------- Circuiti interattivi ---------------- */
.page-content .rl-circ-in { display: flex; flex-wrap: wrap; gap: .45em; margin-bottom: .8em; }
.page-content .rl-sw {
    padding: .35em .85em;
    font: 600 .92rem var(--font-mono);
    color: var(--ink-soft);
    background: #fff;
    border: 2px solid var(--line-strong);
    border-radius: 10px;
    cursor: pointer;
}
.page-content .rl-sw b { color: var(--rl-off); }
.page-content .rl-sw.is-1 { border-color: var(--rl-on); background: #fff5f5; }
.page-content .rl-sw.is-1 b { color: var(--rl-on); }
.page-content .rl-sw:focus-visible { outline: 3px solid var(--acc-line); outline-offset: 2px; }
.page-content .rl-circ-fig { overflow-x: auto; }
.page-content .rl-circ-fig svg { display: block; width: 100%; height: auto; font-family: var(--font-sans); }
.page-content .rl-circ svg .rl-on { stroke: var(--rl-on); }
.page-content .rl-circ svg .rl-off { stroke: var(--rl-off); }
.page-content .rl-circ svg circle.rl-on, .page-content .rl-circ svg .rl-dot.rl-on { fill: var(--rl-on); }
.page-content .rl-circ svg circle.rl-off, .page-content .rl-circ svg .rl-dot.rl-off { fill: var(--rl-off); }
.page-content .rl-circ svg text.rl-on { fill: var(--rl-on); stroke: none; }
.page-content .rl-circ svg text.rl-off { fill: var(--rl-off); stroke: none; }
.page-content .rl-circ svg [data-sig] { transition: stroke .15s ease, fill .15s ease; }
.page-content .rl-circ svg .rl-clic { cursor: pointer; }
.page-content .rl-circ-stato { margin: .7em 0 0; font: .95rem var(--font-mono); color: var(--ink); }
.page-content .rl-warn { color: #b42318; }
.page-content .rl-circ-tab { margin-top: .8em; }
.page-content table.rl-tt { width: auto; font: .88rem var(--font-mono); }
.page-content table.rl-tt td, .page-content table.rl-tt th { padding: .25em .7em; text-align: center; }
.page-content table.rl-tt .rl-tt-out { background: var(--acc-soft); font-weight: 700; }
.page-content table.rl-tt tr.is-cur td { background: #fef3c7; }
.page-content table.rl-tt tr.is-cur td.rl-tt-out { background: #fde68a; }

/* simboli delle porte negli schemi statici */
.page-content .rl-porta { fill: #fff; stroke: #334155; stroke-width: 2; }
.page-content .rl-filo { fill: none; stroke: #475569; stroke-width: 2; }

/* ---------------- Cronogrammi ---------------- */
.page-content .rl-crono-fig { overflow-x: auto; }
.page-content .rl-crono-fig svg { display: block; width: 100%; min-width: 560px; height: auto; font-family: var(--font-sans); }
.page-content .rl-cr-grid { stroke: #e5e7eb; stroke-width: 1; }
.page-content .rl-cr-edge { stroke: var(--acc); stroke-width: 1.4; stroke-dasharray: 4 3; }
.page-content .rl-cr-bad { fill: #fee2e2; }
.page-content .rl-cr-unk { fill: #e2e8f0; }
.page-content .rl-cr-wave { fill: none; stroke-width: 2.4; stroke-linejoin: round; }
.page-content .rl-cr-wave.is-in { stroke: #2563eb; }
.page-content .rl-cr-wave.is-out { stroke: var(--rl-on); }
.page-content .rl-cr-hit { fill: transparent; cursor: pointer; }
.page-content .rl-cr-hit:hover { fill: rgba(37, 99, 235, .08); }
.page-content .rl-cr-hit:focus { outline: none; }
.page-content .rl-cr-hit:focus-visible { fill: rgba(37, 99, 235, .15); }
.page-content .rl-cr-lab { font: 700 14px var(--font-mono); fill: #1e3a8a; }
.page-content .rl-cr-lab.is-out { fill: #991b1b; }
.page-content .rl-cr-t { font: 10px var(--font-mono); fill: #94a3b8; }

/* ---------------- Automi ---------------- */
.page-content .rl-fsm-fig { overflow-x: auto; }
.page-content .rl-fsm-fig svg { display: block; width: 100%; max-width: 760px; margin: 0 auto; height: auto; font-family: var(--font-sans); }
.page-content .rl-fsm-st { fill: #fff; stroke: #475569; stroke-width: 2; }
.page-content .rl-fsm-st.is-on { fill: var(--acc-soft); stroke: var(--acc); stroke-width: 3; }
.page-content .rl-fsm-st2 { fill: none; stroke: #94a3b8; stroke-width: 1; }
.page-content .rl-fsm-st2.is-on { stroke: var(--acc); }
.page-content .rl-fsm-nome { font: 700 14px var(--font-sans); fill: var(--ink); }
.page-content .rl-fsm-nome.is-on { fill: var(--acc-ink); }
.page-content .rl-fsm-z { font: 600 12px var(--font-mono); fill: var(--muted); }
.page-content .rl-fsm-z.is-on { fill: var(--acc-ink); }
.page-content .rl-fsm-arc { fill: none; stroke: #94a3b8; stroke-width: 1.6; }
.page-content .rl-fsm-arc.is-on { stroke: var(--acc); stroke-width: 2.6; }
.page-content .rl-fsm-head.is-n { fill: #94a3b8; }
.page-content .rl-fsm-head.is-a { fill: var(--acc); }
.page-content .rl-fsm-lab { font: 600 11.5px var(--font-mono); fill: #475569; paint-order: stroke; stroke: #fff; stroke-width: 3px; }
.page-content .rl-fsm-lab.is-on { fill: var(--acc-ink); }
.page-content .rl-fsm-ctl { margin-top: .6em; }
.page-content .rl-fsm-t td, .page-content .rl-fsm-t th { padding: .3em .6em; font-size: .86rem; }
.page-content .rl-fsm-t tr.is-cur td { background: var(--acc-soft); }
.page-content .rl-fsm-t tr.is-err td { background: #fff1f1; color: #b42318; }
.page-content .rl-muted { color: var(--muted); font-size: .86rem; }

/* ---------------- Sommatore e flag ---------------- */
.page-content table.rl-addtab { border-collapse: collapse; margin: .4em 0 .8em; font: 600 1.05rem var(--font-mono); }
.page-content table.rl-addtab th { padding: .25em .8em .25em 0; font: 600 .76rem var(--font-sans); color: var(--muted); text-align: right; white-space: nowrap; }
.page-content table.rl-addtab td { width: 1.6em; padding: .2em 0; text-align: center; }
.page-content table.rl-addtab tr.is-carry td { font-size: .78rem; color: #b45309; }
.page-content table.rl-addtab tr.is-carry td.is-out { color: #fff; background: #b45309; border-radius: 6px; }
.page-content table.rl-addtab tr.is-res td { border-top: 2px solid var(--ink); color: var(--acc-ink); }
.page-content table.rl-addtab td.is-op { color: var(--muted); }
.page-content .rl-flags { display: flex; flex-wrap: wrap; gap: .4em; margin: .4em 0; }
.page-content .rl-flag { display: inline-flex; flex-direction: column; padding: .3em .65em; font: .82rem var(--font-mono); color: var(--muted); background: #fff; border: 1px solid var(--line); border-radius: 8px; }
.page-content .rl-flag b { color: var(--ink-soft); }
.page-content .rl-flag small { font: .68rem var(--font-sans); }
.page-content .rl-flag.is-1 { background: #fff1f2; border-color: #fda4af; }
.page-content .rl-flag.is-1 b { color: #be123c; }
.page-content .rl-somma-int { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: .6em; margin-top: .6em; }
.page-content .rl-somma-int > div { padding: .6em .8em; background: #fff; border: 1px solid var(--line); border-radius: 10px; }
.page-content .rl-somma-int b { display: block; margin: .1em 0; font: 700 1.05rem var(--font-mono); color: var(--ink); }
.page-content .rl-somma-int span:last-child { font-size: .85rem; color: var(--muted); }

/* ---------------- Simulatore x86 ---------------- */
.page-content .rl-cpu-body { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 1em; align-items: start; }
@media (max-width: 1000px) { .page-content .rl-cpu-body { grid-template-columns: minmax(0, 1fr); } }
.page-content .rl-ed { position: relative; max-height: 460px; overflow: auto; background: var(--rl-code); border-radius: 12px; }
.page-content .rl-ed-hl,
.page-content .rl-ed-ta {
    margin: 0;
    padding: .9em 1em;
    font: .84rem/1.6 var(--font-mono);
    letter-spacing: 0;
    white-space: pre;
    tab-size: 4;
    border: 0;
    box-sizing: border-box;
    width: 100%;
    font-variant-ligatures: none;
}
.page-content .rl-ed-hl { position: absolute; inset: 0; min-height: 100%; overflow: hidden; color: #dbe4f0; background: transparent; pointer-events: none; }
.page-content .rl-ed-ta { position: relative; display: block; overflow: hidden; resize: none; color: transparent; background: transparent; caret-color: #fff; outline: none; }
.page-content .rl-ed-ta::selection { background: rgba(138, 180, 255, .3); color: transparent; }
.page-content .rl-ln { display: inline-block; min-width: 100%; }
.page-content .rl-ln.is-cur { background: rgba(250, 204, 21, .2); box-shadow: inset 3px 0 0 #facc15; }
.page-content .rl-ln.is-err { background: rgba(239, 68, 68, .25); box-shadow: inset 3px 0 0 #ef4444; }
.page-content .rl-cpu-bar { display: flex; flex-wrap: wrap; gap: .4em; margin-top: .6em; }
.page-content .rl-cpu-bar .ap-btn { padding: .42em .85em; font-size: .82rem; }
.page-content .rl-cpu-msg { margin: .6em 0 0; padding: .5em .75em; font-size: .88rem; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: 8px; }
.page-content .rl-cpu-msg.is-err { color: #7f1d1d; background: #fff1f1; border-color: #fecaca; }
.page-content .rl-cpu-msg.is-ok { color: #14532d; background: #f0fdf4; border-color: #bbf7d0; }
.page-content .rl-cpu-msg.is-wait { color: #78350f; background: #fffbeb; border-color: #fde68a; }
.page-content .rl-cpu-sez { margin-bottom: .8em; }
.page-content .rl-cpu-h { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .4em; margin-bottom: .35em; font-size: .74rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.page-content .rl-cpu-h .ap-seg { margin: 0; text-transform: none; letter-spacing: 0; }
.page-content .rl-cpu-h .ap-seg button { padding: .25em .55em; font-size: .72rem; }
.page-content .rl-regs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; }
.page-content .rl-reg { display: flex; justify-content: space-between; gap: .5em; padding: .3em .6em; font-size: .86rem; background: #fff; border: 1px solid var(--line); border-radius: 7px; }
.page-content .rl-reg b { font: 700 .8rem var(--font-mono); color: #0369a1; }
.page-content .rl-reg.is-ch { background: #fef9c3; border-color: #facc15; }
.page-content table.rl-mem td, .page-content table.rl-mem th { padding: .25em .5em; font-size: .8rem; }
.page-content table.rl-mem tr.is-ch td, .page-content table.rl-mem tr.is-ch th { background: #fef9c3; }
.page-content table.rl-mem tr.is-top td { background: var(--acc-soft); }
.page-content .rl-mem-v { white-space: pre-wrap; word-break: break-all; }
.page-content .rl-cpu-term { margin-top: .8em; overflow: hidden; background: #0b1322; border-radius: 12px; }
.page-content .rl-cpu-termbar { display: flex; flex-wrap: wrap; align-items: center; gap: .6em; padding: .4em .7em; font: 700 .7rem var(--font-sans); letter-spacing: .06em; text-transform: uppercase; color: #a3b1c6; background: #0e182a; }
.page-content .rl-cpu-in { flex: 1 1 220px; min-width: 0; padding: .3em .6em; font: .82rem var(--font-mono); color: #e2e8f0; background: #16223a; border: 1px solid #2a3852; border-radius: 6px; }
.page-content .rl-cpu-in:focus { outline: none; border-color: #facc15; }
.page-content .rl-cpu-out { min-height: 3.2em; max-height: 220px; margin: 0; padding: .7em .9em; overflow: auto; font: .86rem/1.5 var(--font-mono); color: #e2e8f0; white-space: pre-wrap; background: transparent; border-radius: 0; }

/* ---------------- Schemi statici: un po' d'aria ---------------- */
.page-content .rl-nota { margin: .9em 0 0; font-size: .92rem; line-height: 1.6; color: var(--text); }

@media print {
    .page-content .rl-cpu-bar, .page-content .rl-fsm-ctl, .page-content .rl-circ-in { display: none !important; }
}

/* display a sette segmenti */
.page-content .rl-circ svg .rl-seg { fill: #1e293b; stroke: none; }
.page-content .rl-circ svg .rl-seg.rl-on { fill: #f43f5e; stroke: none; }
.page-content .rl-circ svg .rl-seg.rl-off { fill: #1e293b; stroke: none; }

/* ---------------- Simulatore di reti sequenziali sincronizzate ---------------- */
.page-content .rl-rss-bar { display: flex; flex-wrap: wrap; align-items: center; gap: .6em; margin-bottom: .7em; }
.page-content .rl-rss-bar .ap-seg { margin: 0; }
.page-content .rl-rss .rl-ed { max-height: 380px; }
.page-content .rl-rss-att { display: flex; flex-wrap: wrap; gap: .5em; margin: .8em 0 .2em; }
.page-content .rl-rss-att label { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .4em; padding: .4em .7em; font-size: .85rem; color: var(--text); background: #fff; border: 1px solid var(--line); border-radius: 9px; }
.page-content .rl-rss-att label b { margin-right: .15em; color: var(--ink); }
.page-content .rl-rss-att input { width: 3.4em; padding: .2em .35em; font: .85rem var(--font-mono); color: var(--ink); background: #fff; border: 1px solid var(--line-strong); border-radius: 6px; }
.page-content .rl-rss-att input.is-lista { width: 8em; }
.page-content .rl-rss-att input:focus-visible { outline: 3px solid var(--acc-line); outline-offset: 1px; }
.page-content .rl-rss-fig { margin-top: .5em; overflow-x: auto; background: #fff; border: 1px solid var(--line); border-radius: 12px; }
.page-content .rl-rss-fig svg { display: block; max-width: none; font-family: var(--font-mono); }
.page-content .rl-rss-sel { fill: #fef3c7; }
.page-content .rl-rss-col { fill: transparent; cursor: pointer; }
.page-content .rl-rss-col:hover { fill: rgba(250, 204, 21, .14); }
.page-content .rl-rss-edge { stroke: #fda4af; stroke-width: 1; stroke-dasharray: 3 3; }
.page-content .rl-rss-k { font: 10px var(--font-mono); fill: #94a3b8; text-anchor: middle; pointer-events: none; }
.page-content .rl-rss-k.is-sel { font-weight: 700; fill: #92400e; }
.page-content .rl-rss-lab { font: 700 12.5px var(--font-mono); fill: var(--ink); }
.page-content .rl-rss-lab.is-in { fill: #1e40af; }
.page-content .rl-rss-lab.is-out { fill: #9f1239; }
.page-content .rl-rss-lab.is-ck { font-weight: 600; fill: #64748b; }
.page-content .rl-rss-w { fill: none; stroke: #334155; stroke-width: 2.2; stroke-linejoin: round; pointer-events: none; }
.page-content .rl-rss-w.is-in { stroke: #2563eb; }
.page-content .rl-rss-w.is-out { stroke: var(--rl-on); }
.page-content .rl-rss-w.is-ck { stroke: #94a3b8; stroke-width: 1.5; }
.page-content .rl-rss-bus { fill: #fff; stroke: #64748b; stroke-width: 1.4; pointer-events: none; }
.page-content .rl-rss-bus.is-in { fill: #eff6ff; stroke: #2563eb; }
.page-content .rl-rss-bus.is-out { fill: #fff1f2; stroke: var(--rl-on); }
.page-content .rl-rss-bus.is-st { fill: var(--acc-soft); stroke: var(--acc); }
.page-content .rl-rss-bus.is-unk { fill: #e2e8f0; stroke: #cbd5e1; }
.page-content .rl-rss-fig .rl-cr-unk { pointer-events: none; }
.page-content .rl-rss-v { font: 600 11.5px var(--font-mono); fill: var(--ink); text-anchor: middle; pointer-events: none; }
.page-content .rl-rss-v.is-ana { font-size: 10px; fill: #6d28d9; }
.page-content .rl-rss-ana { fill: none; stroke: #7c3aed; stroke-width: 2.2; stroke-linejoin: round; pointer-events: none; }
.page-content .rl-rss-hit { fill: transparent; cursor: pointer; }
.page-content .rl-rss-hit:hover { fill: rgba(37, 99, 235, .12); }
.page-content .rl-rss-hit:focus { outline: none; }
.page-content .rl-rss-hit:focus-visible { fill: rgba(37, 99, 235, .2); }
.page-content .rl-rss-info { margin-top: .7em; padding: .65em .9em; font-size: .9rem; background: #fff; border: 1px solid var(--line); border-radius: 10px; }
.page-content .rl-rss-info p { margin: 0; }
.page-content .rl-rss-info ul { margin: .4em 0 0; padding-left: 1.2em; }
.page-content .rl-rss-info li { margin: .15em 0; }
.page-content .rl-rss-info code, .page-content .rl-ed-hl, .page-content .rl-ed-ta, .page-content pre.rl-code { font-variant-ligatures: none; }
.page-content[data-corso="rl"] code { font-variant-ligatures: none; }

/* ---------------- Numeri in base β ---------------- */
.page-content .rl-cr .ap-row { align-items: flex-end; }
.page-content .rl-cr .ap-row input.ap-input { min-width: 0; width: 9em; }
.page-content .rl-cr .ap-row input[type="number"] { width: 5em; }
.page-content .rl-cr-cin { display: inline-flex; align-items: center; gap: .3em; padding-bottom: .5em; font-size: .86rem; }
.page-content .rl-cr-out { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr)); gap: .6em; margin-top: .8em; }
.page-content .rl-cr-out > .ap-scroll, .page-content .rl-cr-out > p { grid-column: 1 / -1; margin: 0; }
.page-content .rl-cr-card { display: flex; flex-direction: column; gap: .25em; padding: .65em .85em; background: #fff; border: 1px solid var(--line); border-radius: 10px; }
.page-content .rl-cr-card > b { font: 700 1.05rem var(--font-mono); color: var(--ink); }
.page-content .rl-cr-card > span:not(.ap-label) { font-size: .86rem; color: var(--muted); line-height: 1.5; }
.page-content .rl-cr-card.is-acc { background: var(--acc-soft); border-color: var(--acc-line); }
.page-content .rl-cr-card.is-bad { background: #fff6f6; border-color: #fecaca; }
.page-content .rl-cr-cifre { display: inline-flex; gap: 2px; vertical-align: middle; }
.page-content .rl-cr-cifre > span { display: inline-block; min-width: 1.25em; padding: .05em .2em; font: 700 .95rem var(--font-mono); text-align: center; color: var(--ink); background: #f1f5f9; border-radius: 4px; }
.page-content .rl-cr-cifre > span.is-msd { background: #fef3c7; }
.page-content .rl-cr-cifre.is-acc > span { background: #fff; box-shadow: inset 0 0 0 1px var(--acc-line); }
.page-content .rl-cr-cifre.is-acc > span.is-msd { background: #fef3c7; }

/* ---------------- Traccia del μ-programma ---------------- */
.page-content table.rl-traccia { width: auto; min-width: 100%; border-collapse: collapse; font: .78rem var(--font-mono); }
.page-content table.rl-traccia th, .page-content table.rl-traccia td { padding: .3em .5em; text-align: center; white-space: nowrap; border-bottom: 1px solid var(--line); }
.page-content table.rl-traccia th { font: 700 .72rem var(--font-mono); color: var(--muted); background: #f7f7f9; }
.page-content table.rl-traccia td:nth-child(2) { font-weight: 700; color: #6d28d9; text-align: left; }
.page-content table.rl-traccia td.is-ch { background: #fef3c7; font-weight: 700; }
.page-content table.rl-traccia .is-mu { text-align: left; }
.page-content table.rl-traccia td.is-mu code { font-size: .74rem; background: none; padding: 0; color: var(--ink-soft); }
.page-content table.rl-traccia tr.is-fase td { padding: .45em .6em; font: 700 .74rem var(--font-sans); letter-spacing: .03em; text-align: left; text-transform: uppercase; color: var(--acc-ink); background: var(--acc-soft); }

/* ---------------- Esercizi con soluzione a scomparsa ---------------- */
.page-content .rl-esercizio { margin: 1.4em 0; padding: .9em 1.1em; background: #fff; border: 1px solid var(--line); border-left: 4px solid var(--acc); border-radius: 12px; }
.page-content .rl-esercizio > p:first-child { margin-top: 0; }
.page-content .rl-esercizio details { margin-top: .6em; }
.page-content .rl-esercizio summary { cursor: pointer; font-weight: 700; color: var(--acc-ink); list-style: none; }
.page-content .rl-esercizio summary::-webkit-details-marker { display: none; }
.page-content .rl-esercizio summary::before { content: '▸'; display: inline-block; margin-right: .45em; transition: transform .15s ease; }
.page-content .rl-esercizio details[open] summary::before { transform: rotate(90deg); }
.page-content .rl-esercizio details[open] summary { margin-bottom: .4em; }

/* ---------------- Esercizi svolti e passaggi algebrici ---------------- */
.page-content .rl-svolto { margin: 1.6em 0; padding: 1em 1.2em 1.1em; background: #fff; border: 1px solid var(--line); border-top: 4px solid var(--acc); border-radius: 14px; }
.page-content .rl-svolto > :last-child { margin-bottom: 0; }
.page-content .rl-svolto-tit { margin: 0 0 .7em; font-size: 1.04rem; font-weight: 700; color: var(--ink); }
.page-content .rl-svolto-tit span { display: inline-block; margin-right: .6em; padding: .18em .65em; font: 700 .7rem var(--font-sans); letter-spacing: .06em; text-transform: uppercase; color: var(--acc-ink); background: var(--acc-soft); border: 1px solid var(--acc-line); border-radius: 999px; vertical-align: .14em; }
.page-content .rl-svolto > .ap-fig, .page-content .rl-svolto > [data-rl] { margin-left: -.5em; margin-right: -.5em; }
.page-content .rl-deriv { margin: 1em 0; padding: .35em 1.1em; background: #fbfbfc; border: 1px solid var(--line); border-radius: 12px; overflow-x: auto; }
.page-content .rl-deriv-r { display: grid; grid-template-columns: minmax(max-content, 1fr) minmax(190px, 36%); gap: .15em 1.6em; align-items: baseline; padding: .45em 0; border-bottom: 1px dashed var(--line); }
.page-content .rl-deriv-r:last-child { border-bottom: 0; }
.page-content .rl-deriv-e { font: 1.04rem/1.8 var(--font-sans); color: var(--ink); white-space: nowrap; }
.page-content .rl-deriv-p { font-size: .84rem; line-height: 1.45; color: var(--acc-ink); }
.page-content .rl-deriv-r.is-fine .rl-deriv-e { font-weight: 700; }
.page-content .rl-lett.rl-neg + .rl-lett, .page-content .rl-lett + .rl-lett.rl-neg { margin-left: .18em; }
.page-content table.rl-tab-alg td.is-e { white-space: nowrap; }
.page-content table.rl-tab16 td.is-nome { font-family: var(--font-sans); text-align: left; white-space: nowrap; }
@media (max-width: 700px) {
    .page-content .rl-svolto { padding: .9em .9em 1em; }
    .page-content .rl-deriv { padding: .3em .8em; }
    .page-content .rl-deriv-r { grid-template-columns: minmax(0, 1fr); gap: .05em; }
}

/* ---------------- Dimostrazioni a scomparsa ---------------- */
.page-content details.rl-dim { margin: .8em 0 1.2em; padding: .55em 1em; background: #fbfbfc; border: 1px dashed var(--line-strong); border-radius: 12px; }
.page-content details.rl-dim > summary { cursor: pointer; font-weight: 700; font-size: .92rem; color: var(--acc-ink); list-style: none; }
.page-content details.rl-dim > summary::-webkit-details-marker { display: none; }
.page-content details.rl-dim > summary::before { content: '▸'; display: inline-block; margin-right: .45em; transition: transform .15s ease; }
.page-content details.rl-dim[open] > summary::before { transform: rotate(90deg); }
.page-content details.rl-dim[open] > summary { margin-bottom: .4em; }
.page-content details.rl-dim > p { font-size: .95rem; }

/* ---------------- Algoritmi a mano, passo per passo ---------------- */
.page-content table.rl-alg-tab td { font-family: var(--font-mono); font-size: .86rem; white-space: nowrap; }
.page-content table.rl-alg-tab td.is-out { font-weight: 700; color: var(--acc-ink); }
.page-content .ap-scheda table.rl-addtab { margin: .4em 0; }
.page-content .ap-lato table.rl-verita th, .page-content .ap-lato table.rl-verita td { padding: .22em .55em; }
.page-content table.rl-addtab { width: auto; min-width: 0; }
.page-content .ap-lato table.rl-verita, .page-content .ap-scheda table { min-width: 0; }
.page-content table.rl-riepilogo { font-size: .86rem; }
.page-content table.rl-riepilogo td { vertical-align: top; }
.page-content table.rl-riepilogo td:first-child { min-width: 9em; }
.page-content .rl-svolto table.rl-verita { min-width: 0; }
.page-content .rl-svolto table.rl-verita td, .page-content .rl-svolto table.rl-verita th { padding: .25em .6em; }
