*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#f5f4f0;--bg2:#eceae5;--bg3:#e2e0da;
  --border:#d4d1ca;--border2:#b8b4ab;
  --text:#1c1a16;--text2:#5a5650;--text3:#9a9590;
  --accent:#1a6b3a;--accent2:#145a2f;--accent-dim:#e6f4eb;
  --red:#c0392b;--red-dim:#fdf0ee;
  --amber:#9a5a0a;--amber-dim:#fdf5e6;
  --blue:#1a4f8a;--blue-dim:#edf3fb;
  --green:#1a6b3a;--green-dim:#e6f4eb;
  --mono:'IBM Plex Mono',monospace;
  --serif:'Source Serif 4',Georgia,serif;
    --card-radius: 8px;
    --card-border: 1px solid #dadce0;
    --card-bg: #ffffff;
    --card-bg-alt: #f8f9fa;
    --code-font: "Fira Code", "JetBrains Mono", Menlo, Monaco, Consolas, monospace;
    --in-label-color: #188038;
    --out-label-color: #7F7F7F;  
}
html{scroll-behavior:smooth}
body{ background-image: url('img/sfondo.jpg');color:var(--text);font-family:var(--serif);font-size:16px;line-height:1.7}
nav{position:sticky;top:0;z-index:100;background:rgba(245,244,240,.95);backdrop-filter:blur(14px);border-bottom:1px solid var(--border);padding:0 40px;height:56px;display:flex;align-items:center;justify-content:space-between}
.nav-logo{font-family:var(--mono);font-weight:600;font-size:15px;color:var(--text);letter-spacing:.06em;text-decoration:none}
.nav-logo span{color:var(--accent)}
.nav-links{display:flex;gap:4px;list-style:none}
.nav-links a{font-family:var(--mono);font-size:12px;color:var(--text2);text-decoration:none;padding:6px 12px;border-radius:4px;letter-spacing:.04em;transition:color .2s,background .2s}
.nav-links a:hover{color:var(--text);background:var(--bg3)}
.nav-links a.active{color:var(--accent)}
.nav-cta{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--bg);background:var(--accent);padding:7px 18px;border-radius:4px;text-decoration:none;transition:background .2s}
.nav-cta:hover{background:var(--accent2)}
.page-wrap{max-width:1100px;margin:0 auto;padding:60px 40px 100px;display:grid;grid-template-columns:220px 1fr;gap:64px;align-items:start}
.sidebar{position:sticky;top:80px}
.sidebar-label{font-family:var(--mono);font-size:10px;color:var(--text3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.sidebar nav{position:static;background:none;border:none;padding:0;height:auto;display:block;backdrop-filter:none}
.sidebar-nav{list-style:none;display:flex;flex-direction:column;gap:2px}
.sidebar-nav a{font-family:var(--mono);font-size:12px;color:var(--text3);text-decoration:none;padding:7px 10px;border-radius:4px;display:block;transition:color .2s,background .2s;border-left:2px solid transparent}
.sidebar-nav a:hover{color:var(--text);background:#fff;border-left-color:var(--border2)}
.sidebar-nav a.active{color:var(--accent);background:var(--accent-dim);border-left-color:var(--accent)}
.sidebar-nav .sub{padding-left:20px;font-size:11px}
.sidebar-progress{margin-top:28px;padding-top:20px;border-top:1px solid var(--border)}
.prog-label{font-family:var(--mono);font-size:10px;color:var(--text3);letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px}
.prog-bar{height:3px;background:var(--border);border-radius:2px;overflow:hidden}
.prog-fill{height:100%;width:0%;background:var(--accent);border-radius:2px;transition:width .4s}
.prog-pct{font-family:var(--mono);font-size:11px;color:var(--text2);margin-top:6px}
.sidebar-modules{margin-top:28px;padding-top:20px;border-top:1px solid var(--border)}
.mod-link{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11px;color:var(--text3);text-decoration:none;padding:7px 0;transition:color .2s}
.mod-link:hover{color:var(--text2)}.mod-link.cur{color:var(--accent)}
.mod-num{width:20px;height:20px;border-radius:50%;background:#fff;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:9px;flex-shrink:0}
.mod-link.cur .mod-num{background:var(--accent-dim);border-color:var(--accent);color:var(--accent)}
.content{min-width:0}
.breadcrumb{font-family:var(--mono);font-size:11px;color:var(--text3);margin-bottom:12px}
.breadcrumb a{color:var(--text3);text-decoration:none}.breadcrumb a:hover{color:var(--text2)}
.breadcrumb span{margin:0 6px}
.page-header{margin-bottom:48px;padding-bottom:32px;border-bottom:1px solid var(--border)}
.page-eyebrow{font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px}
.page-title{font-family:var(--serif);font-size:clamp(28px,3.5vw,44px);font-weight:300;color:var(--text);letter-spacing:-.025em;line-height:1.15;margin-bottom:16px}
.page-intro{font-size:17px;color:var(--text2);line-height:1.85;max-width:600px}
.page-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}
.pill{font-family:var(--mono);font-size:10px;letter-spacing:.06em;padding:4px 10px;border-radius:3px;font-weight:500}
.pa{background:var(--accent-dim);color:var(--accent)}.pn{background:var(--bg3);color:var(--text3);border:1px solid var(--border)}
.pb{background:var(--blue-dim);color:var(--blue)}.pg{background:var(--green-dim);color:var(--green)}
.pam{background:var(--amber-dim);color:var(--amber)}.pr2{background:var(--red-dim);color:var(--red)}
.section{margin-bottom:64px}
.section-anchor{display:block;padding-top:20px;margin-top:-20px}
h2.s-title{font-family:var(--mono);font-size:19px;font-weight:500;color:var(--text);letter-spacing:-.01em;margin-bottom:8px;display:flex;align-items:center;gap:12px}
h2.s-title::before{content:attr(data-n);font-size:11px;color:var(--text3);background:#fff;border:1px solid var(--border);padding:2px 7px;border-radius:3px}
h3.sub-title{font-family:var(--mono);font-size:15px;font-weight:500;color:var(--text);margin:28px 0 12px}
p.body{font-size:16px;color:var(--text2);line-height:1.85;margin-bottom:16px}
.divider{height:1px;background:var(--border);margin-bottom:32px}
.callout{border-left:3px solid var(--cl-color,var(--border2));background:var(--cl-bg,var(--bg2));border-radius:0 6px 6px 0;padding:14px 18px;margin:20px 0}
.callout-label{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--cl-color,var(--text3));margin-bottom:6px}
.callout p{font-size:14px;color:var(--text2);line-height:1.7;margin:0}
.callout.info{--cl-color:var(--blue);--cl-bg:var(--blue-dim)}
.callout.warn{--cl-color:var(--amber);--cl-bg:var(--amber-dim)}
.callout.danger{--cl-color:var(--red);--cl-bg:var(--red-dim)}
.callout.tip{--cl-color:var(--accent);--cl-bg:var(--accent-dim)}
.cblock{background:#1e2128;border:1px solid #2c3040;border-radius:8px;overflow:hidden;margin:24px 0;box-shadow:0 4px 20px rgba(0,0,0,.1)}
.cbar{background:#272c38;border-bottom:1px solid #2c3040;padding:10px 16px;display:flex;justify-content:space-between;align-items:center}
.cfname{font-family:var(--mono);font-size:11px;color:#666}
.clang2{font-family:var(--mono);font-size:10px;background:rgba(168,216,110,.12);color:#a8d86e;padding:2px 8px;border-radius:3px;letter-spacing:.06em}
.cbody{padding:20px;font-family:var(--mono);font-size:12.5px;line-height:2;overflow-x:auto;color:#cdd6f4}
pre{margin:0}
.kw{color:#7eb8f0}.fn{color:#6ee2f8}.str{color:var(--accent)}.num{color:var(--amber)}
.cmt{color:var(--text3);font-style:italic}.vr{color:#e8d5a0}.ov{color:var(--green)}
.tbl-wrap{overflow-x:auto;margin:20px 0}
table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:12px}
thead th{padding:10px 14px;text-align:left;color:var(--text3);font-weight:500;letter-spacing:.06em;text-transform:uppercase;font-size:10px;border-bottom:1px solid var(--border2)}
tbody td{padding:10px 14px;color:var(--text2);border-bottom:1px solid var(--border);vertical-align:top}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover td{background:var(--bg2)}
.td-label{color:var(--text);font-weight:500}
.badge{display:inline-block;padding:2px 8px;border-radius:3px;font-size:10px;font-weight:500}
.badge-g{background:var(--green-dim);color:var(--green)}
.badge-r{background:var(--red-dim);color:var(--red)}
.badge-a{background:var(--amber-dim);color:var(--amber)}
.cards2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0}
.card{background:#fff;border:1px solid var(--border);border-radius:6px;padding:18px 20px}
.card-title{font-family:var(--mono);font-size:13px;font-weight:500;color:var(--text);margin-bottom:8px;display:flex;align-items:center;gap:8px}
.card p{font-size:13px;color:var(--text2);line-height:1.65}
.checklist{list-style:none;display:flex;flex-direction:column;gap:8px;margin:24px 0}
.checklist li{font-family:var(--mono);font-size:12px;color:var(--text2);display:flex;align-items:flex-start;gap:10px;padding:10px 14px;background:#fff;border:1px solid var(--border);border-radius:5px;line-height:1.6}
.checklist li .ico{flex-shrink:0;font-size:13px}
.checklist li.crit{border-left:2px solid var(--red)}
.checklist li.norm{border-left:2px solid var(--border2)}
.quiz{background:#fff;border:1px solid var(--border);border-radius:8px;padding:28px;margin:32px 0;box-shadow:0 2px 12px rgba(0,0,0,.05)}
.quiz-label{font-family:var(--mono);font-size:10px;color:var(--text3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px}
.quiz-q{font-family:var(--mono);font-size:14px;color:var(--text);margin-bottom:18px}
.quiz-opts{display:flex;flex-direction:column;gap:8px}
.quiz-opt{background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:10px 14px;font-family:var(--mono);font-size:12px;color:var(--text2);cursor:pointer;transition:border-color .2s,background .2s;display:flex;align-items:center;gap:10px}
.quiz-opt:hover{border-color:var(--border2);background:var(--bg2);color:var(--text)}
.quiz-opt.correct{border-color:var(--accent);background:var(--accent-dim);color:var(--accent)}
.quiz-opt.wrong{border-color:var(--red);background:var(--red-dim);color:var(--red)}
.quiz-opt.dimmed{opacity:.4;pointer-events:none}
.quiz-letter{width:20px;height:20px;border-radius:3px;background:var(--bg3);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--text3);flex-shrink:0}
.quiz-feedback{display:none;margin-top:14px;font-family:var(--mono);font-size:12px;line-height:1.6;padding:12px 14px;border-radius:5px}
.quiz-feedback.show{display:block}
.quiz-feedback.ok{background:var(--accent-dim);color:var(--accent);border:1px solid rgba(26,107,58,.25)}
.quiz-feedback.ko{background:var(--red-dim);color:var(--red);border:1px solid rgba(240,80,80,.2)}
.exercise{border:1px solid var(--border2);border-radius:8px;overflow:hidden;margin:32px 0}
.ex-header{background:var(--bg2);border-bottom:1px solid var(--border);padding:14px 20px;display:flex;align-items:center;gap:10px}
.ex-badge{font-family:var(--mono);font-size:10px;background:var(--amber-dim);color:var(--amber);padding:3px 9px;border-radius:3px;letter-spacing:.06em;font-weight:500}
.ex-title{font-family:var(--mono);font-size:13px;color:var(--text)}
.ex-body{padding:20px 24px}
.ex-body p{font-size:14px;color:var(--text2);line-height:1.7;margin-bottom:12px}
.ex-body ul{list-style:none;display:flex;flex-direction:column;gap:6px}
.ex-body ul li{font-family:var(--mono);font-size:12px;color:var(--text2);display:flex;gap:8px}
.ex-body ul li::before{content:'▸';color:var(--amber);flex-shrink:0}
.completion{background:var(--accent-dim);border:1px solid rgba(26,107,58,.2);border-radius:10px;padding:36px 40px;text-align:center;margin:48px 0}
.completion .comp-ico{font-size:52px;margin-bottom:16px}
.completion h3{font-family:var(--mono);font-size:20px;color:var(--accent);margin-bottom:12px}
.completion p{font-size:15px;color:var(--text2);line-height:1.8;max-width:560px;margin:0 auto}
.completion a{display:inline-block;margin-top:24px;font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.08em;color:var(--bg);background:var(--accent);padding:12px 28px;border-radius:4px;text-decoration:none;transition:background .2s}
.completion a:hover{background:var(--accent2)}
.page-nav{display:flex;justify-content:space-between;align-items:center;padding:28px 0;margin-top:48px;border-top:1px solid var(--border)}
.page-nav a{font-family:var(--mono);font-size:12px;color:var(--text3);text-decoration:none;display:flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--border);border-radius:5px;transition:color .2s,border-color .2s}
.page-nav a:hover{color:var(--text);border-color:var(--border2)}
.page-nav .next-btn{color:var(--accent);border-color:rgba(26,107,58,.25);background:var(--accent-dim)}
.page-nav .next-btn:hover{border-color:var(--accent)}
.pnav-label{font-size:10px;color:var(--text3);letter-spacing:.08em;text-transform:uppercase;display:block;margin-bottom:2px}
footer{border-top:1px solid var(--border);background:#fff;padding:36px 40px 28px}
.ft-bottom{max-width:1100px;margin:0 auto;display:flex;justify-content:space-between}
.ft-bottom p{font-family:var(--mono);font-size:11px;color:var(--text3)}
  .formula{background:#fff;border:1px solid var(--border);box-shadow:0 1px 4px rgba(0,0,0,.05);border-radius:6px;padding:14px 20px;margin:20px 0;font-family:var(--mono);font-size:13.5px;color:var(--text);overflow-x:auto}
  .formula .lbl{font-size:10px;color:var(--text3);letter-spacing:.1em;text-transform:uppercase;display:block;margin-bottom:8px}
  .formula .eq{color:var(--text)}.formula .var{color:var(--amber)}.formula .op{color:var(--text2)}
  .cell {
    margin: 12px 0;
    position: relative;
  }
  .signals{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
  .signal{border-radius:6px;padding:12px 14px}
  .signal-buy{background:var(--green-dim);border:1px solid rgba(64,208,128,.2)}
  .signal-sell{background:var(--red-dim);border:1px solid rgba(240,80,80,.2)}
  .signal-title{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.06em;margin-bottom:6px}
  .signal-buy .signal-title{color:var(--green)}.signal-sell .signal-title{color:var(--red)}
  .signal p{font-size:13px;color:var(--text2);line-height:1.6}
  .cardIn,
  .cardOut {
    border-radius: var(--card-radius);
    border: var(--card-border);
    background: var(--card-bg);
    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.15);
    padding: 8px 12px 10px 12px;
    display: flex;
    gap: 8px;
    position: relative;
  }

  .cardIn {
    border-left: 4px solid var(--in-label-color);
  }

  .cardOut {
    border-left: 4px solid var(--out-label-color);
    background: var(--card-bg-alt);
  }

  .cell-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #5f6368;
    min-width: 52px;
    padding-top: 4px;
  }

  .cell-label span {
    display: block;
    font-weight: 600;
  }

  .cell-label .in {
    color: var(--in-label-color);
  }

  .cell-label .out {
    color: var(--out-label-color);
  }

  .cell-body {
    flex: 1;
    position: relative;
  }

  .code-block {
    font-family: var(--code-font);
    font-size: 13px;
    line-height: 1.4;
    white-space: pre;
    overflow: auto;
    max-width: 600px;
    padding: 6px 8px;
    border-radius: 6px;
    background: #f5f5f5;
  }

  .output-block {
    font-family: var(--code-font);
    font-size: 13px;
    line-height: 1.4;
    white-space: pre;
    overflow: auto;
    max-width: 600px;
    padding: 4px 2px;
    color: #202124;
  }

  /* Pulsante copia */
  .copy-btn {
    position: absolute;
    top: 6px;
    right: 6px;
    background: #e8eaed;
    border: 1px solid #dadce0;
    border-radius: 4px;
    padding: 2px 6px;
    font-size: 11px;
    cursor: pointer;
    color: #444;
    transition: background 0.2s;
  }

  .copy-btn:hover {
    background: #dadce0;
  }
@media(max-width:860px){.page-wrap{grid-template-columns:1fr;gap:40px;padding:40px 24px 60px}.sidebar{display:none}nav{padding:0 20px}.nav-links{display:none}.cards2{grid-template-columns:1fr}}