---
title: Corso di Violino
date: 2014-10-06
modified: "2026-09-10 09:55:52"
author: amministratore2
url: "https://www.scuoladimusicacluster.it/corsi/corso-di-violino.html?lang=*"
language: "*"
category: Corsi
---

# Corso di Violino

![Dettaglio della cassa di un violino](https://www.scuoladimusicacluster.it/images/corsi/violino_corsi.jpg)

## CORSO DI VIOLINO

CLASSICO  |  JAZZ  |  COUNTRY

PRENOTA UN OPEN DAY

### CORSO DI VIOLINO

Il corso accompagna l'allievo nell’acquisizione delle basi tecniche, musicali e metodologiche necessarie per affrontare lo studio della chitarra con struttura e consapevolezza.

Attraverso un percorso progressivo che integra postura, impostazione dello strumento e dell'arco, tecnica, intonazione, articolazione, interpretazione, improvvisazione ed ear training, lo studente sviluppa le competenze necessarie per comprendere, eseguire e rielaborare il linguaggio musicale con il violino, costruendo un'espressività personale e una solida maturità musicale.

Il corso di violino si svolge **settimanalmente** con lezioni individuali di 30 minuti, 45 minuti oppure 60 minuti, nell'orario personalizzato concordato con la segreteria al momento dell'iscrizione.

La durata della lezione individuale dipende dal livello dell'allievo (Initial, Base, Intermedio, Avanzato).

Il corso di violino prevede la frequenza parallela di **uno o più corsi ****complementari-collettivi **divisi per età e livello.

I corsi complementari sono collettivi e dipendono dal perscorso scelto (Tradizionale, Preaccademico, Accademico).

**DURATA: **30 | 45 | 60 minuti a settimana

**GENERE: **Classico | Jazz | Country

**LIVELLO:** Initial | Base | Intermedio | Avanzato

-
[CORSI PER BAMBINI](https://www.scuoladimusicacluster.it/index.php?option=com_content&view=article&id=449&catid=2)

-
[CORSI PER RAGAZZI](https://www.scuoladimusicacluster.it/index.php?option=com_content&view=article&id=446&catid=2)

-
[CORSI PER ADULTI](https://www.scuoladimusicacluster.it/index.php?option=com_content&view=article&id=451&catid=2)

### PROGRAMMA DI VIOLINO

- #### Corso di Violino Classico
**Lezioni di Violino: livello base**

  - Impostazione sullo strumento
  - Padronanza nell’utilizzo dell’archetto
  - Studio delle diteggiature in prima posizione
  - Colpi d’arco:
  - Detachè
  - Staccato
  - Scale e arpeggi maggiori e minori fino a due ottave
  - Comprensione e interpretazione di brani semplici
  - Studio di altri brani a scelta secondo la capacità dell’allievo
  - Studio ed esecuzione di brani scelti in accordo con il docente, finalizzati all’applicazione delle tecniche apprese.
**Lezioni di Violino: livello intermedio**

  - Studio delle diteggiature fino alla terza posizione
  - Studio specifico del suono su tutte le ottave
  - Utilizzo del vibrato come effetto stilistico
  - Approfondimento nei colpi d’arco:
  - Balzato
  - Picchiettato
  - Saltellato
  - Scale e arpeggi maggiori e minori
Introduzione allo studio delle scale per terze, seste e ottave
  - Comprensione e interpretazione di brani più avanzati
  - Studio di brani a scelta secondo la capacità dell’allievo
  - Studio ed esecuzione di brani scelti in accordo con il docente, finalizzati all’applicazione delle tecniche apprese.**
**
**Lezioni di Violino: livello avanzato**

  - Estensione su tutte le ottave
  - Studio delle diteggiature in tutte le posizioni
  - Espressività musicale:
  - Fraseggio
  - Respiro
  - Vibrato
  - Dinamiche
  - Sviluppo del suono e cura dei diversi timbri
  - Scale e arpeggi maggiori e minori
  - Studio delle scale per terze, seste, ottave e decime
  - Comprensione ed interpretazione di brani importanti del repertorio violinistico
  - Studio di brani a scelta secondo la capacità dell’allievo
  - Studio ed esecuzione di brani scelti in accordo con il docente, finalizzati all’applicazione delle tecniche apprese.

- #### Corso di Violino Moderno
**Prerequisiti: Livello intermedio (5° grado)**

  - Buona impostazione sullo strumento della mano destra e sinistra
  - Buona padronanza dell’utilizzo dell’archetto
  - Buona conoscenza di teoria e solfeggio
  - Buona conoscenza del concetto generale di scala e accordo, armonia e melodia
  - Capacità di lettura, comprensione e interpretazione di brani di livello intermedio
**Approfondimenti tecnici**

  - Approfondimenti sulla tecnica dello strumento
  - Sviluppo delle tecniche dell’utilizzo dell’archetto
  - Utilizzo del vibrato come effetto stilistico
  - Studio degli accenti e introduzione alle “ghost notes”
  - Approfondimento sull’uso delle corde doppie e sugli armonici
  - Introduzione all’ear training e primi studi per sviluppare la capacità di trascrizione di melodie e assoli
  - Approfondimento su effettistica e amplificazione
**Approfondimenti teorici**

  - Approfondimento teorico su scale e arpeggi
  - Comprensione della notazione anglosassone e capacità di lettura degli accordi siglati
  - Approfondimento del concetto di ritmo e applicazione in contesti musicali differenti
  - Capacità di espressione e comprensione della dinamica
**Approfondimenti armonici**

  - Approfondimento del concetto di accordi e scale
  - Sviluppo dell’analisi armonica di brani e composizioni La “Dominante” e il “II - V7 – I”
  - Approfondimento e utilizzo della scala pentatonica, blues, diminuita ed esatonale Introduzione alle scale modali e loro utilizzo
  - Introduzione al concetto di armonizzazione
**L'improvvisazione**

  - Sviluppo del concetto di improvvisazione e analisi della forma
  - Approfondimento dell’improvvisazione su un accordo e su un giro armonico
  - Sviluppo della lettura e dell’interpretazione corretta di brani appartenenti a diversi stili musicali
  - Sviluppo dell’utilizzo dell’orecchio e delle tecniche di trascrizione di soli e composizioni
**Il violino nel Jazz**

  - Introduzione al genere e approccio stilistico
  - Il “time” e lo swing: esercizi tecnici per l’utilizzo dell’archetto
  - Primo approccio al Blues, all’Anatole e agli Standard Jazz
  - Approfondimento sullo stile di Stéphane Grappelli e di Joe Venuti
**Il violino nella musica tradizionale e folk**

  - Introduzione al genere e approccio stilistico
  - Sviluppo delle tecniche stilistiche: il “Chop” e lo “Slide”
  - Approfondimento dell’uso delle doppie corde
  - Studio e interpretazione di brani appartenenti allo stile musicale
**Il violino nella musica etnica**

  - Il violino nel Tango, nella musica Kletzmer, nella musica Gipsy-Tzigana e nella musica Araba
  - Individuazione delle scale tipiche utilizzate nei differenti generi
  - Ascolto, studio ed interpretazione di brani appartenenti ai differenti stili musicali
  - Sviluppo della capacità di suonare in gruppo con altre persone
**Il violino nella musica pop-moderna**

  - Introduzione al genere e approccio stilistico
  - Approfondimento sull’amplificazione del violino a seconda dei differenti contesti musicali
  - Approfondimento sull’utilizzo di pedaliere multi effetto

### UNA SCUOLAPER LA MUSICA

A Cluster troverai:

- Una **community** musicale di centinaia di allievi
- **Percorsi** formativi personalizzati
- Possibilità di **esibirsi **dal vivo 
- Un **ambiente** serio e sereno

### INSEGNANTI DI VIOLINO

#### Martino Pellegrini

classico | jazz | country

[Scopri di più](https://www.scuoladimusicacluster.it/index.php?option=com_content&view=article&id=180&catid=23)

### PRENOTAUN OPEN DAY

Gli Open Day Cluster ti offrono l’opportunità di visitare la scuola, esplorare gli spazi e orientarti nella scelta del percorso musicale più giusto per te.

**Ti aspettiamo! **

TORNA ALL'INIZIO

### DOMANDE FREQUENTI

### PRENOTAUN OPEN DAY

Gli Open Day Cluster ti offrono l’opportunità di visitare la scuola, esplorare gli spazi e orientarti nella scelta del percorso musicale più giusto per te.

**Ti aspettiamo! **

TORNA ALL'INIZIO

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n \n \u00d7\n\n Caricamento\u2026\n\n \n \n \n\n\n\n const modal = document.getElementById('course-modal');\n const frame = document.getElementById('course-frame');\n const loading = document.getElementById('course-modal-loading');\n const closeBtn = modal.querySelector('.course-modal__close');\n const backdrop = modal.querySelector('.course-modal__backdrop');\n\n function openCourseModal(url) {\n modal.classList.add('is-open');\n modal.setAttribute('aria-hidden', 'false');\n document.body.classList.add('modal-open');\n\n loading.style.display = 'grid';\n frame.style.visibility = 'hidden';\n frame.src = url;\n }\n\n function closeCourseModal() {\n modal.classList.remove('is-open');\n modal.setAttribute('aria-hidden', 'true');\n document.body.classList.remove('modal-open');\n frame.src = '';\n }\n\n document.querySelectorAll('.open-modal').forEach(link => {\n link.addEventListener('click', function(e) {\n e.preventDefault();\n const url = this.dataset.url || this.getAttribute('href');\n openCourseModal(url);\n });\n });\n\n frame.addEventListener('load', function() {\n loading.style.display = 'none';\n frame.style.visibility = 'visible';\n });\n\n closeBtn.addEventListener('click', closeCourseModal);\n backdrop.addEventListener('click', closeCourseModal);\n\n document.addEventListener('keydown', function(e) {\n if (e.key === 'Escape' && modal.classList.contains('is-open')) {\n closeCourseModal();\n }\n });\n","css":".mappa-wrap {\n position: relative;\n width: 100%;\n max-width: 1400px;\n}\n\n.mappa-wrap img {\n display: block;\n width: 100%;\n height: auto;\n}\n\n.mappa-overlay {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n}\n\n.mappa-overlay rect {\n fill: rgba(255,255,255,0);\n pointer-events: all;\n}\n\n.course-modal {\n position: fixed;\n inset: 0;\n z-index: 9999;\n display: none;\n}\n\n.course-modal.is-open {\n display: block;\n}\n\n.course-modal__backdrop {\n position: absolute;\n inset: 0;\n background: rgba(0,0,0,.72);\n}\n\n.course-modal__dialog {\n position: relative;\n width: min(1200px, 92vw);\n height: min(85vh, 900px);\n margin: 4vh auto 0;\n background: #111;\n border-radius: 18px;\n overflow: hidden;\n}\n\n.course-modal__close {\n position: absolute;\n top: 10px;\n right: 14px;\n z-index: 3;\n width: 42px;\n height: 42px;\n border: 0;\n border-radius: 999px;\n background: rgba(0,0,0,.55);\n color: #fff;\n font-size: 28px;\n cursor: pointer;\n}\n\n.course-modal__loading {\n position: absolute;\n inset: 0;\n z-index: 1;\n display: grid;\n place-items: center;\n color: #fff;\n background: #111;\n}\n\n.course-modal__frame {\n width: 100%;\n height: 100%;\n border: 0;\n display: block;\n background: #fff;\n position: relative;\n z-index: 2;\n}\n\nbody.modal-open {\n overflow: hidden;\n}\n\n\n\n.mappa-overlay rect{\n fill:rgba(255,255,255,0);\n pointer-events:all;\n transition:all .25s ease;\n}\n\n.mappa-overlay a:hover rect{\n\n stroke:white;\n stroke-width:3;\n\n filter:\n drop-shadow(0 0 4px rgba(255,255,255,.7))\n drop-shadow(0 0 12px rgba(255,255,255,.6))\n drop-shadow(0 0 24px rgba(255,255,255,.35));\n}"}},{"type":"html","props":{"content":"\n\n\n #cluster-corsi-wizard{\n --bg:#0b0b0d;\n --card:#141418;\n --card-2:#101114;\n --text:#f2f2f2;\n --muted:#b9b9b9;\n --accent:#ef7c33;\n --line:#2a2a33;\n --soft:#17181d;\n --shadow:0 16px 40px rgba(0,0,0,.28);\n font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;\n color:var(--text);\n }\n\n #cluster-corsi-wizard .wrap{\n max-width:1020px;\n margin:0 auto;\n padding:18px;\n background:\n radial-gradient(900px 420px at 15% 10%, rgba(239,124,51,.15), transparent 60%),\n radial-gradient(700px 380px at 90% 0%, rgba(60,160,255,.10), transparent 55%),\n var(--bg);\n border-radius:18px;\n border:1px solid var(--line);\n box-shadow:var(--shadow);\n }\n\n #cluster-corsi-wizard .top{\n display:flex;\n justify-content:space-between;\n align-items:flex-start;\n gap:16px;\n margin-bottom:18px;\n }\n\n #cluster-corsi-wizard h1{\n margin:0 0 6px;\n font-size:24px;\n line-height:1.08;\n font-weight:900;\n }\n\n #cluster-corsi-wizard .intro{\n margin:0;\n color:var(--muted);\n font-size:14px;\n line-height:1.5;\n max-width:700px;\n }\n\n #cluster-corsi-wizard .step-chip{\n display:inline-flex;\n align-items:center;\n justify-content:center;\n min-width:78px;\n padding:8px 12px;\n border-radius:999px;\n border:1px solid var(--line);\n background:#0f0f13;\n color:var(--muted);\n font-size:12px;\n font-weight:800;\n }\n\n #cluster-corsi-wizard .progress{\n height:8px;\n background:#0f0f13;\n border:1px solid var(--line);\n border-radius:999px;\n overflow:hidden;\n margin-bottom:18px;\n }\n\n #cluster-corsi-wizard .progress > span{\n display:block;\n height:100%;\n background:linear-gradient(90deg, rgba(239,124,51,.9), rgba(239,124,51,.45));\n transition:width .25s ease;\n }\n\n #cluster-corsi-wizard .card{\n background:linear-gradient(180deg, rgba(255,255,255,.04), transparent 45%), var(--card);\n border:1px solid var(--line);\n border-radius:18px;\n padding:18px;\n }\n\n #cluster-corsi-wizard .eyebrow{\n font-size:12px;\n text-transform:uppercase;\n letter-spacing:.08em;\n color:var(--muted);\n font-weight:800;\n margin-bottom:6px;\n }\n\n #cluster-corsi-wizard .question{\n margin:0 0 14px;\n font-size:26px;\n line-height:1.1;\n font-weight:900;\n }\n\n #cluster-corsi-wizard .step-note-strong{\n margin:0 0 16px;\n color:#fff;\n font-size:15px;\n line-height:1.5;\n font-weight:600;\n }\n\n #cluster-corsi-wizard .choices{\n display:grid;\n gap:12px;\n }\n\n #cluster-corsi-wizard .goal-grid{\n grid-template-columns:1fr 1fr;\n }\n\n @media (max-width:740px){\n #cluster-corsi-wizard .goal-grid{grid-template-columns:1fr}\n }\n\n #cluster-corsi-wizard .choice,\n #cluster-corsi-wizard .check{\n border:1px solid var(--line);\n border-radius:16px;\n background:var(--card-2);\n padding:16px;\n cursor:pointer;\n transition:border-color .16s ease, transform .08s ease;\n }\n\n #cluster-corsi-wizard .choice:hover,\n #cluster-corsi-wizard .check:hover{\n transform:translateY(-1px);\n border-color:rgba(239,124,51,.55);\n }\n\n #cluster-corsi-wizard .choice.active,\n #cluster-corsi-wizard .check.active{\n border-color:rgba(239,124,51,.82);\n box-shadow:0 0 0 2px rgba(239,124,51,.14) inset;\n }\n\n #cluster-corsi-wizard .choice-title{\n font-size:18px;\n font-weight:900;\n margin-bottom:6px;\n }\n\n #cluster-corsi-wizard .choice-meta{\n color:var(--muted);\n font-size:13px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .check{\n display:flex;\n gap:12px;\n align-items:flex-start;\n }\n\n #cluster-corsi-wizard .check input{\n margin-top:3px;\n accent-color:var(--accent);\n }\n\n #cluster-corsi-wizard .check b{\n display:block;\n font-size:15px;\n margin-bottom:4px;\n }\n\n #cluster-corsi-wizard .small{\n color:var(--muted);\n font-size:13px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .actions{\n display:flex;\n justify-content:space-between;\n gap:12px;\n margin-top:18px;\n flex-wrap:wrap;\n }\n\n #cluster-corsi-wizard .btn{\n border:1px solid var(--line);\n background:#0f0f13;\n color:var(--text);\n padding:12px 16px;\n border-radius:999px;\n cursor:pointer;\n font-weight:800;\n font-size:14px;\n }\n\n #cluster-corsi-wizard .btn.primary{\n background:var(--accent);\n color:#111;\n border-color:rgba(239,124,51,.9);\n }\n\n #cluster-corsi-wizard .btn.ghost{background:transparent}\n #cluster-corsi-wizard .btn[disabled]{opacity:.4;cursor:not-allowed}\n\n #cluster-corsi-wizard .goal-block{\n margin-bottom:18px;\n border:1px solid var(--line);\n border-radius:18px;\n background:linear-gradient(180deg, rgba(255,255,255,.03), transparent 45%), var(--card-2);\n padding:16px;\n }\n\n #cluster-corsi-wizard .goal-block:last-child{margin-bottom:0}\n\n #cluster-corsi-wizard .goal-headline{\n font-size:22px;\n line-height:1.15;\n font-weight:900;\n margin:0 0 10px;\n }\n\n #cluster-corsi-wizard .goal-disclaimer{\n margin:0 0 14px;\n padding:14px 16px;\n border-radius:14px;\n background:var(--soft);\n border:1px solid rgba(239,124,51,.22);\n color:#e8e8e8;\n font-size:15px;\n line-height:1.55;\n }\n\n #cluster-corsi-wizard .panel{\n border:1px solid var(--line);\n border-radius:16px;\n background:#111217;\n padding:14px;\n }\n\n #cluster-corsi-wizard .panel + .panel{margin-top:14px}\n\n #cluster-corsi-wizard .panel h3{\n margin:0 0 10px;\n font-size:12px;\n text-transform:uppercase;\n letter-spacing:.08em;\n color:var(--muted);\n }\n\n #cluster-corsi-wizard .course-list{\n display:grid;\n gap:10px;\n }\n\n #cluster-corsi-wizard .course{\n display:flex;\n justify-content:space-between;\n gap:12px;\n align-items:flex-start;\n border:1px solid var(--line);\n border-radius:14px;\n background:#0f0f13;\n padding:12px;\n }\n\n #cluster-corsi-wizard .course.teorici{border-left:4px solid #4ea978}\n #cluster-corsi-wizard .course.pratici{border-left:4px solid #d3a438}\n #cluster-corsi-wizard .course.culturali{border-left:4px solid #a33a52}\n\n #cluster-corsi-wizard .check.teorici{border-left:4px solid #4ea978}\n #cluster-corsi-wizard .check.pratici{border-left:4px solid #d3a438}\n #cluster-corsi-wizard .check.culturali{border-left:4px solid #a33a52}\n\n #cluster-corsi-wizard .course-title{\n font-size:15px;\n font-weight:900;\n margin-bottom:4px;\n }\n\n #cluster-corsi-wizard .course-note{\n color:#fff;\n font-size:12px;\n line-height:1.45;\n margin-bottom:6px;\n }\n\n #cluster-corsi-wizard .course-desc{\n color:var(--muted);\n font-size:12px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .badge{\n padding:5px 8px;\n border-radius:999px;\n border:1px solid var(--line);\n background:#15151b;\n font-size:11px;\n font-weight:900;\n white-space:nowrap;\n }\n\n #cluster-corsi-wizard .slot-list{\n display:grid;\n gap:8px;\n margin-top:10px;\n }\n\n #cluster-corsi-wizard .slot{\n border:1px solid rgba(255,255,255,.05);\n border-radius:12px;\n background:#15161a;\n padding:10px 12px;\n }\n\n #cluster-corsi-wizard .slot-top{\n display:flex;\n justify-content:space-between;\n gap:12px;\n align-items:flex-start;\n margin-bottom:4px;\n }\n\n #cluster-corsi-wizard .slot-time{\n font-size:13px;\n font-weight:800;\n }\n\n #cluster-corsi-wizard .slot-meta{\n color:var(--muted);\n font-size:12px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .mini-badges{\n display:flex;\n flex-wrap:wrap;\n gap:6px;\n margin-top:6px;\n }\n\n #cluster-corsi-wizard .mini-badge{\n padding:4px 7px;\n border-radius:999px;\n border:1px solid var(--line);\n background:#121318;\n font-size:10px;\n font-weight:900;\n color:var(--muted);\n }\n\n #cluster-corsi-wizard .age-field{\n display:grid;\n gap:10px;\n max-width:320px;\n }\n\n #cluster-corsi-wizard .age-input{\n width:100%;\n border:1px solid var(--line);\n border-radius:14px;\n background:var(--card-2);\n color:var(--text);\n padding:14px 16px;\n font-size:18px;\n font-weight:800;\n outline:none;\n }\n\n #cluster-corsi-wizard .age-input:focus{\n border-color:rgba(239,124,51,.82);\n box-shadow:0 0 0 2px rgba(239,124,51,.14) inset;\n }\n\n #cluster-corsi-wizard .celebration{\n padding:14px 16px;\n border-radius:14px;\n background:#151d17;\n border:1px solid rgba(65,209,123,.22);\n color:#e8f7ee;\n font-size:14px;\n line-height:1.55;\n }\n\n #cluster-corsi-wizard .summary-grid{\n display:grid;\n grid-template-columns:repeat(4,1fr);\n gap:12px;\n margin-top:18px;\n }\n\n @media (max-width:920px){\n #cluster-corsi-wizard .summary-grid{grid-template-columns:1fr 1fr}\n }\n\n @media (max-width:560px){\n #cluster-corsi-wizard .summary-grid{grid-template-columns:1fr}\n }\n\n #cluster-corsi-wizard .summary-card{\n border:1px solid var(--line);\n border-radius:16px;\n background:#0c0d12;\n padding:14px 16px;\n }\n\n #cluster-corsi-wizard .summary-label{\n color:var(--muted);\n font-size:12px;\n text-transform:uppercase;\n letter-spacing:.08em;\n margin-bottom:8px;\n }\n\n #cluster-corsi-wizard .summary-value{\n font-size:15px;\n font-weight:800;\n line-height:1.35;\n color:#fff;\n }\n\n\n\n(function(){\n const mount = document.getElementById('cluster-corsi-wizard');\n if(!mount) return;\n\n const scheduleData = {\n \"Teoria 1\": [\n {day:\"Marted\u00ec\", time:\"16:00 - 16:55\", teacher:\"Giuliano Dottori\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"1\", label:\"Teoria\"},\n {day:\"Marted\u00ec\", time:\"20:00 - 20:55\", teacher:\"Paco Martucci\", age:\"Adulti\", mode:\"presenza\", level:\"1\", label:\"Teoria\"},\n {day:\"Mercoled\u00ec\", time:\"16:00 - 16:55\", teacher:\"Giuliano Dottori\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"1\", label:\"Teoria\"},\n {day:\"Gioved\u00ec\", time:\"18:00 - 18:55\", teacher:\"Antonello Fiamma\", age:\"Ragazzi\", mode:\"presenza\", level:\"1\", label:\"Teoria\"},\n {day:\"Luned\u00ec\", time:\"20:00 - 20:55\", teacher:\"Giuliano Dottori\", age:\"Ragazzi\/Adulti\", mode:\"presenza\", level:\"1\", label:\"Teoria\"}\n ],\n \"Teoria 2\": [\n {day:\"Luned\u00ec\", time:\"17:00 - 17:55\", teacher:\"Alberto Meloni\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"2\", label:\"Teoria\"},\n {day:\"Marted\u00ec\", time:\"18:00 - 18:55\", teacher:\"Massimiliano Teora\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"2\", label:\"Teoria\"},\n {day:\"Marted\u00ec\", time:\"21:00 - 21:55\", teacher:\"Antonello Fiamma\", age:\"Adulti\", mode:\"presenza\", level:\"2\", label:\"Teoria\"},\n {day:\"Gioved\u00ec\", time:\"17:00 - 17:55\", teacher:\"Antonello Fiamma\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"2\", label:\"Teoria\"},\n {day:\"Gioved\u00ec\", time:\"21:00 - 21:55\", teacher:\"Giacinto Livia\", age:\"Ragazzi\/Adulti\", mode:\"presenza\", level:\"2\", label:\"Teoria\"}\n ],\n \"Teoria 3\": [\n {day:\"Luned\u00ec\", time:\"21:00 - 21:55\", teacher:\"Antonello Fiamma\", age:\"Adulti\", mode:\"presenza\", level:\"3\", label:\"Teoria\"},\n {day:\"Marted\u00ec\", time:\"17:00 - 17:55\", teacher:\"Giuliano Dottori\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"3\", label:\"Teoria\"},\n {day:\"Mercoled\u00ec\", time:\"17:00 - 17:55\", teacher:\"Antonello Fiamma\", age:\"Ragazzi\", mode:\"presenza\", level:\"3\", label:\"Teoria\"},\n {day:\"Mercoled\u00ec\", time:\"19:00 - 19:55\", teacher:\"Antonello Fiamma\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"3 in 1\", label:\"Teoria\"},\n {day:\"Gioved\u00ec\", time:\"20:00 - 20:55\", teacher:\"Giacinto Livia\", age:\"Ragazzi\/Adulti\", mode:\"presenza\", level:\"3\", label:\"Teoria\"},\n {day:\"Venerd\u00ec\", time:\"16:00 - 16:55\", teacher:\"Alberto Meloni\", age:\"Ragazzi\", mode:\"presenza\", level:\"3\", label:\"Teoria\"}\n \n ],\n \"Armonia 1\": [\n {day:\"Gioved\u00ec\", time:\"20:00 - 20:55\", teacher:\"Andrea Rapisarda\", age:\"Ragazzi\", mode:\"presenza\", level:\"1\", label:\"Armonia\"},\n {day:\"Luned\u00ec\", time:\"19:00 - 19:55\", teacher:\"Andrea Rapisarda\", age:\"Open\", mode:\"online\", level:\"1\", label:\"Armonia (online)\"}\n ],\n \"Armonia 2\": [\n {day:\"Gioved\u00ec\", time:\"19:00 - 19:55\", teacher:\"Andrea Rapisarda\", age:\"Ragazzi\", mode:\"presenza\", level:\"2\", label:\"Armonia\"}\n ],\n \"Armonia Applicata\": [\n {day:\"Gioved\u00ec\", time:\"19:00 - 19:55\", teacher:\"Massimo Dall'Omo\", age:\"Open\", mode:\"presenza\", level:\"Open\", label:\"Laboratorio di Armonia Applicata\"},\n {day:\"Gioved\u00ec\", time:\"20:00 - 20:55\", teacher:\"Massimo Dall'Omo\", age:\"Open\", mode:\"presenza\", level:\"Open\", label:\"Laboratorio di Armonia Applicata\"}\n ],\n \"Arrangiamento\": [\n {day:\"Marted\u00ec\", time:\"20:00 - 20:55\", teacher:\"Giuliano Dottori\", age:\"Open\", mode:\"presenza\", level:\"Open\", label:\"Arrangiamento\"}\n ],\n \"TRPM 1\": [\n {day:\"Luned\u00ec\", time:\"18:00 - 18:55\", teacher:\"Sergio Rao\", age:\"Ragazzi\", mode:\"presenza\", level:\"1\", label:\"TRPM\"},\n {day:\"Marted\u00ec\", time:\"16:00 - 16:55\", teacher:\"Natalija Gashi\", age:\"Ragazzi\", mode:\"presenza\", level:\"1\", label:\"TRPM\"}\n ],\n \"TRPM 2\": [\n {day:\"Luned\u00ec\", time:\"19:00 - 19:55\", teacher:\"Sergio Rao\", age:\"Ragazzi\", mode:\"presenza\", level:\"2\", label:\"TRPM\"},\n {day:\"Marted\u00ec\", time:\"17:00 - 17:55\", teacher:\"Natalija Gashi\", age:\"Ragazzi\", mode:\"presenza\", level:\"2\", label:\"TRPM\"}\n ],\n \"Videoscrittura e trascrizioni\": [\n {day:\"Gioved\u00ec\", time:\"19:00 - 19:55\", teacher:\"Antonello Fiamma\", age:\"Open\", mode:\"presenza\", level:\"Open\", label:\"Videoscrittura e Trascrizioni\"}\n ],\n \"Musica d\u2019insieme\": [\n {day:\"Luned\u00ec\", time:\"18:00 - 18:55\", teacher:\"Giuseppe Panagia\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Initial\", label:\"Musica d'insieme\"},\n {day:\"Marted\u00ec\", time:\"15:00 - 15:55\", teacher:\"Antonello Fiamma\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Intermedio\", label:\"Musica d'insieme\"},\n {day:\"Marted\u00ec\", time:\"16:00 - 16:55\", teacher:\"Paco Martucci\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Initial\/Base\", label:\"Musica d'insieme\"},\n {day:\"Marted\u00ec\", time:\"17:00 - 17:55\", teacher:\"Antonello Fiamma\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Base\", label:\"Musica d'insieme\"},\n {day:\"Marted\u00ec\", time:\"18:00 - 18:55\", teacher:\"Antonello Fiamma\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Intermedio\", label:\"Musica d'insieme\"},\n {day:\"Marted\u00ec\", time:\"19:00 - 19:55\", teacher:\"Antonello Fiamma\", age:\"Ragazzi\", mode:\"presenza\", level:\"Avanzato\", label:\"Musica d'insieme\"},\n {day:\"Marted\u00ec\", time:\"20:00 - 20:55\", teacher:\"Antonello Fiamma\", age:\"Ragazzi\", mode:\"presenza\", level:\"Int\/Av\", label:\"Musica d'insieme\"},\n {day:\"Mercoled\u00ec\", time:\"17:00 - 17:55\", teacher:\"Giuliano Dottori\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Base\", label:\"Musica d'insieme\"},\n {day:\"Mercoled\u00ec\", time:\"18:00 - 18:55\", teacher:\"Giuliano Dottori\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Base\", label:\"Musica d'insieme\"},\n {day:\"Mercoled\u00ec\", time:\"19:00 - 19:55\", teacher:\"Giuliano Dottori\", age:\"Ragazzi\", mode:\"presenza\", level:\"Int\/Av\", label:\"Musica d'insieme\"},\n {day:\"Mercoled\u00ec\", time:\"20:00 - 20:55\", teacher:\"Giuliano Dottori\", age:\"Ragazzi\", mode:\"presenza\", level:\"Int\/Av\", label:\"Musica d'insieme\"},\n {day:\"Gioved\u00ec\", time:\"16:00 - 16:55\", teacher:\"Felice Del Vecchio\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Base\", label:\"Musica d'insieme\"},\n {day:\"Gioved\u00ec\", time:\"17:00 - 17:55\", teacher:\"Felice Del Vecchio\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Base\", label:\"Musica d'insieme\"},\n {day:\"Gioved\u00ec\", time:\"18:00 - 18:55\", teacher:\"Felice Del Vecchio\", age:\"Teen\/Ragazzi\", mode:\"presenza\", level:\"Initial\", label:\"Musica d'insieme\"},\n {day:\"Gioved\u00ec\", time:\"19:00 - 19:55\", teacher:\"Felice Del Vecchio\", age:\"Ragazzi\", mode:\"presenza\", level:\"Int\/Av\", label:\"Musica d'insieme\"},\n {day:\"Gioved\u00ec\", time:\"20:00 - 20:55\", teacher:\"Felice Del Vecchio\", age:\"Ragazzi\", mode:\"presenza\", level:\"Base\/Int\", label:\"Musica d'insieme\"},\n {day:\"Gioved\u00ec\", time:\"20:00 - 20:55\", teacher:\"Raffaele Trapasso\", age:\"Adulti\", mode:\"presenza\", level:\"Int\/Av\", label:\"Musica d'insieme\"}\n ],\n \"Musica d\u2019insieme Fiati\": [\n {day:\"Luned\u00ec\", time:\"20:00 - 20:55\", teacher:\"Valentino Finoli\", age:\"Adulti\", mode:\"presenza\", level:\"Base\/Int\", label:\"Musica d'insieme Fiati\"}\n],\n\n\"Tecniche d\u2019improvvisazione\": [\n {day:\"Luned\u00ec\", time:\"19:00 - 19:55\", teacher:\"Attilio Zanchi\", age:\"Open\", mode:\"presenza\", level:\"2\", label:\"Tecniche d'improvvisazione\"},\n {day:\"Luned\u00ec\", time:\"20:00 - 20:55\", teacher:\"Attilio Zanchi\", age:\"Open\", mode:\"presenza\", level:\"1\", label:\"Tecniche d'improvvisazione\"}\n],\n\n \"Coro\": [\n {day:\"Luned\u00ec\", time:\"17:00 - 17:55\", teacher:\"Sergio Rao\", age:\"10-14\", mode:\"presenza\", level:\"Open\", label:\"Coro Pop Teen\"},\n {day:\"Gioved\u00ec\", time:\"17:00 - 17:55\", teacher:\"Alberto Meloni\", age:\"10-13\", mode:\"presenza\", level:\"Open\", label:\"Coro Pop Teen\"},\n {day:\"Gioved\u00ec\", time:\"18:00 - 18:55\", teacher:\"Alberto Meloni\", age:\"13-16\", mode:\"presenza\", level:\"Open\", label:\"Coro Pop Teen\"},\n {day:\"Venerd\u00ec\", time:\"17:00 - 17:55\", teacher:\"Alberto Meloni\", age:\"10-13\", mode:\"presenza\", level:\"Open\", label:\"Coro Pop Teen\"},\n {day:\"Venerd\u00ec\", time:\"18:00 - 18:55\", teacher:\"Alberto Meloni\", age:\"13-16\", mode:\"presenza\", level:\"Open\", label:\"Coro Pop Teen\"},\n {day:\"Marted\u00ec\", time:\"20:00 - 20:55\", teacher:\"Paola Dell'Erba\", age:\"Ragazzi\", mode:\"presenza\", level:\"Intermedio\", label:\"Coro Pop\"},\n {day:\"Gioved\u00ec\", time:\"20:00 - 20:55\", teacher:\"Alberto Meloni\", age:\"Adulti\", mode:\"presenza\", level:\"Initial\", label:\"Coro Pop\"},\n {day:\"Gioved\u00ec\", time:\"21:00 - 22:15\", teacher:\"Alberto Meloni\", age:\"Adulti\", mode:\"presenza\", level:\"Base\/Int\", label:\"Coro Pop\"},\n {day:\"Luned\u00ec\", time:\"19:00 - 19:55\", teacher:\"Alberto Meloni\", age:\"Ragazzi\", mode:\"presenza\", level:\"Base\/Int\", label:\"Coro Pop\"},\n {day:\"Luned\u00ec\", time:\"19:45 - 21:00\", teacher:\"Vicky Schaetzinger\", age:\"Adulti\", mode:\"presenza\", level:\"Intermedio\", label:\"Coro Pop\"},\n {day:\"Luned\u00ec\", time:\"20:00 - 20:55\", teacher:\"Paola Dell'Erba\", age:\"Adulti\", mode:\"presenza\", level:\"Initial\", label:\"Coro Pop\"},\n {day:\"Luned\u00ec\", time:\"21:00 - 22:15\", teacher:\"Paola Dell'Erba\", age:\"Adulti\", mode:\"presenza\", level:\"Base\/Int\", label:\"Coro Pop\"},\n {day:\"Marted\u00ec\", time:\"21:00 - 22:15\", teacher:\"Alberto Meloni\", age:\"Adulti\", mode:\"presenza\", level:\"Base\/Int\", label:\"Coro Gospel\"},\n {day:\"Mercoled\u00ec\", time:\"20:00 - 21:00\", teacher:\"Piero Basilico\", age:\"Adulti\", mode:\"presenza\", level:\"Base\/Int\", label:\"Coro Gospel\"},\n {day:\"Mercoled\u00ec\", time:\"21:00 - 22:15\", teacher:\"Piero Basilico\", age:\"Adulti\", mode:\"presenza\", level:\"Avanzato\", label:\"Coro Gospel\"},\n {day:\"Mercoled\u00ec\", time:\"19:00 - 19:55\", teacher:\"Piero Basilico\", age:\"Ragazzi\", mode:\"presenza\", level:\"Base\", label:\"Coro Contemporary Gospel\"},\n {day:\"Marted\u00ec\", time:\"19:45 - 21:00\", teacher:\"Cantisani\/Meloni\", age:\"Adulti\", mode:\"presenza\", level:\"Base\", label:\"Coro Musical\"},\n {day:\"Gioved\u00ec\", time:\"21:15 - 22:15\", teacher:\"Cantisani\/Del Vecchio\", age:\"Adulti\", mode:\"presenza\", level:\"Base\/Int\", label:\"Coro Swing\"}\n ],\n \"Chitarra d\u2019accompagnamento\": [\n {day:\"Mercoled\u00ec\", time:\"18:00 - 18:55\", teacher:\"Antonello Fiamma\", age:\"over 14\", mode:\"presenza\", level:\"1\", label:\"Chitarra d'accompagnamento\"},\n {day:\"Mercoled\u00ec\", time:\"20:00 - 20:55\", teacher:\"Giuseppe Panagia\", age:\"over 14\", mode:\"presenza\", level:\"2\", label:\"Chitarra d'accompagnamento\"},\n {day:\"Sabato\", time:\"11:00 - 11:55\", teacher:\"Giuseppe Panagia\", age:\"over 14\", mode:\"presenza\", level:\"1\", label:\"Chitarra d'accompagnamento\"}\n ],\n \"Pianoforte d\u2019accompagnamento\": [\n {day:\"Gioved\u00ec\", time:\"16:00 - 16:30\", teacher:\"Massimiliano Teora\", age:\"Teen\/Ragazzi\", mode:\"online\", level:\"Open\", label:\"Pf d'accomp. (online)\"}\n ],\n \"Songwriting 1\": [\n {day:\"Venerd\u00ec\", time:\"18:00 - 18:55\", teacher:\"Felice Del Vecchio\", age:\"Ragazzi\", mode:\"presenza\", level:\"1\", label:\"Songwriting\"}\n ],\n \"Songwriting 2\": [\n {day:\"Venerd\u00ec\", time:\"19:00 - 19:55\", teacher:\"Felice Del Vecchio\", age:\"Ragazzi\", mode:\"presenza\", level:\"2\", label:\"Songwriting\"}\n ],\n \"Songwriting 3\": [\n {day:\"Venerd\u00ec\", time:\"20:00 - 20:55\", teacher:\"Felice Del Vecchio\", age:\"Ragazzi\", mode:\"presenza\", level:\"3\", label:\"Songwriting\"}\n ],\n \"Easy Home Recording\": [\n {day:\"Marted\u00ec\", time:\"19:00 - 19:55\", teacher:\"Paco Martucci\", age:\"Open\", mode:\"presenza\", level:\"Open\", label:\"Easy Home Recording\"}\n ],\n \"Music Production\": [\n {day:\"Marted\u00ec\", time:\"18:00 - 18:55\", teacher:\"Giuliano Dottori\", age:\"Open\", mode:\"presenza\", level:\"Open\", label:\"Music Production\"}\n ],\n \"Storia della musica pop-rock\": [\n {day:\"Marted\u00ec\", time:\"19:00 - 19:55\", teacher:\"Giuliano Dottori\", age:\"Open\", mode:\"presenza\", level:\"Open\", label:\"Storia della Musica Ind. Pop\"},\n {day:\"Luned\u00ec\", time:\"21:00 - 21:55\", teacher:\"Giuliano Dottori\", age:\"Open\", mode:\"presenza\", level:\"Open\", label:\"Storia della Musica Ind. Pop\"},\n {day:\"Marted\u00ec\", time:\"21:00 - 21:55\", teacher:\"Giuliano Dottori\", age:\"Open\", mode:\"online\", level:\"Open\", label:\"Storia della Musica Ind. Pop (online)\"},\n {day:\"Luned\u00ec\", time:\"19:00 - 19:55\", teacher:\"Giuliano Dottori\", age:\"Open\", mode:\"online\", level:\"Open\", label:\"Storia della Musica Ind. Pop (online)\"}\n ],\n \"Storia della musica classica\": [\n {day:\"Gioved\u00ec\", time:\"19:30 - 20:25\", teacher:\"Emanuele Delucchi\", age:\"Open\", mode:\"online\", level:\"Open\", label:\"Storia della Musica Ind. Classico (online)\"},\n {day:\"Luned\u00ec\", time:\"19:00 - 19:55\", teacher:\"Emanuele Delucchi\", age:\"Open\", mode:\"online\", level:\"Open\", label:\"Storia della Musica Ind. Classico (online)\"}\n ],\n \"Storia della musica jazz\": [\n {day:\"Gioved\u00ec\", time:\"19:00 - 19:55\", teacher:\"Alberto Dipace\", age:\"Open\", mode:\"presenza\", level:\"Open\", label:\"Storia della Musica Ind. Contemporary Jazz\"}\n ],\n \"Teoria | Ear training\": [\n {day:\"Mercoled\u00ec\", time:\"19:30 - 20:00\", teacher:\"Gabriele Cento\", age:\"Open\", mode:\"online\", level:\"1\", label:\"Teoria | Ear training (online)\"},\n {day:\"Mercoled\u00ec\", time:\"20:30 - 21:00\", teacher:\"Gabriele Cento\", age:\"Open\", mode:\"online\", level:\"2\", label:\"Teoria | Ear training (online)\"}\n],\n\n\"Teoria | Lettura e ritmica\": [\n {day:\"Mercoled\u00ec\", time:\"19:00 - 19:30\", teacher:\"Gabriele Cento\", age:\"Open\", mode:\"online\", level:\"1\", label:\"Teoria | Lettura e ritmica (online)\"}\n],\n\n\"Teoria | Scale e accordi\": [\n {day:\"Mercoled\u00ec\", time:\"20:00 - 20:30\", teacher:\"Gabriele Cento\", age:\"Open\", mode:\"online\", level:\"1\", label:\"Teoria | Scale e accordi (online)\"},\n {day:\"Mercoled\u00ec\", time:\"21:00 - 21:30\", teacher:\"Gabriele Cento\", age:\"Open\", mode:\"online\", level:\"2\", label:\"Teoria | Scale e accordi (online)\"}\n],\n \"Teoria Coro 1\": [\n {day:\"Luned\u00ec\", time:\"17:00 - 17:55\", teacher:\"Paola Dell'Erba\", age:\"7-9\", mode:\"presenza\", level:\"1\", label:\"Teoria - Coro\"},\n {day:\"Marted\u00ec\", time:\"17:00 - 17:55\", teacher:\"Paola Dell'Erba\", age:\"7-9\", mode:\"presenza\", level:\"1\", label:\"Teoria - Coro\"},\n {day:\"Mercoled\u00ec\", time:\"18:00 - 18:55\", teacher:\"Milena Paris\", age:\"8-10\", mode:\"presenza\", level:\"1\", label:\"Teoria - Coro\"},\n {day:\"Gioved\u00ec\", time:\"17:00 - 17:55\", teacher:\"Giacinto Livia\", age:\"6-7\", mode:\"presenza\", level:\"1\", label:\"Teoria - Coro\"},\n {day:\"Venerd\u00ec\", time:\"17:00 - 17:55\", teacher:\"Giacinto Livia\", age:\"6-7\", mode:\"presenza\", level:\"1\", label:\"Teoria - Coro\"}\n ],\n \"Teoria Coro 2\": [\n {day:\"Luned\u00ec\", time:\"18:00 - 18:55\", teacher:\"Paola Dell'Erba\", age:\"8-10\", mode:\"presenza\", level:\"2\", label:\"Teoria - Coro\"},\n {day:\"Marted\u00ec\", time:\"18:00 - 18:55\", teacher:\"Paola Dell'Erba\", age:\"8-10\", mode:\"presenza\", level:\"2\", label:\"Teoria - Coro\"},\n {day:\"Mercoled\u00ec\", time:\"17:00 - 17:55\", teacher:\"Milena Paris\", age:\"8-10\", mode:\"presenza\", level:\"2\", label:\"Teoria - Coro\"},\n {day:\"Gioved\u00ec\", time:\"18:00 - 18:55\", teacher:\"Giacinto Livia\", age:\"8-10\", mode:\"presenza\", level:\"2\", label:\"Teoria - Coro\"},\n {day:\"Venerd\u00ec\", time:\"18:00 - 18:55\", teacher:\"Giacinto Livia\", age:\"8-10\", mode:\"presenza\", level:\"2\", label:\"Teoria - Coro\"}\n ]\n };\n\n const goals = {\n gruppo:{title:'Fare musica insieme',meta:'Cantare e suonare in un contesto collettivo.'},\n teoria:{title:'Capire la teoria musicale',meta:'Rafforzare teoria, armonia e comprensione musicale.'},\n scrittura:{title:'Scrivere canzoni e arrangiare',meta:'Sviluppare idee musicali e capacit\u00e0 di scrittura.'},\n produzione:{title:'Registrare e produrre',meta:'Lavorare su produzione musicale e home recording.'},\n cultura:{title:'Ampliare la cultura musicale',meta:'Conoscere meglio storie e linguaggi musicali.'},\n accompagnamento:{title:'Conoscere un altro strumento',meta:'Imparare le basi di accompagnamento su chitarra o pianoforte.'}\n };\n\n const courses = [\n {id:'teoria1',title:'Teoria 1',area:'teorici',access:'OPEN',prereq:[],goals:['teoria']},\n {id:'teoria2',title:'Teoria 2',area:'teorici',access:'TEST',prereq:['teoria1'],goals:['teoria']},\n {id:'teoria3',title:'Teoria 3',area:'teorici',access:'TEST',prereq:['teoria2'],goals:['teoria','scrittura','produzione']},\n\n {id:'arm1',title:'Armonia 1',area:'teorici',access:'TEST',prereq:['teoria3'],goals:['teoria','scrittura']},\n {id:'arm2',title:'Armonia 2',area:'teorici',access:'TEST',prereq:['arm1'],goals:['teoria','scrittura']},\n {id:'arm_app',title:'Armonia Applicata',area:'teorici',access:'TEST',prereq:['arm1'],goals:['scrittura']},\n {id:'arr',title:'Arrangiamento',area:'teorici',access:'TEST',prereq:['arm1'],goals:['scrittura']},\n\n {id:'trpm1',title:'TRPM 1',area:'teorici',access:'TEST',prereq:['teoria3'],goals:['teoria']},\n {id:'trpm2',title:'TRPM 2',area:'teorici',access:'TEST',prereq:['trpm1'],goals:['teoria']},\n\n {id:'video_trasc',title:'Videoscrittura e trascrizioni',area:'pratici',access:'TEST',prereq:['teoria3'],goals:['produzione'],note:'Riservato al Percorso Accademico'},\n {id:'mdi',title:'Musica d\u2019insieme',area:'pratici',access:'TEST',prereq:['teoria1'],goals:['gruppo'],note:'Qui trovi tutti i corsi di musica d\u2019insieme disponibili per la tua fascia d\u2019et\u00e0. L\u2019accesso avviene in base ad abilit\u00e0 e competenze, su segnalazione dell\u2019insegnante. Per conoscere il livello pi\u00f9 adatto a te puoi confrontarti con la segreteria.'},\n {id:'mdi_fiati',title:'Musica d\u2019insieme Fiati',area:'pratici',access:'TEST',prereq:['teoria1'],goals:['gruppo'],note:'Qui trovi tutti i corsi di musica d\u2019insieme disponibili per la tua fascia d\u2019et\u00e0. L\u2019accesso avviene in base ad abilit\u00e0 e competenze, su segnalazione dell\u2019insegnante. Per conoscere il livello pi\u00f9 adatto a te puoi confrontarti con la segreteria.'},\n {id:'improv',title:'Tecniche d\u2019improvvisazione',area:'pratici',access:'TEST',prereq:['teoria1'],goals:['gruppo']},\n {id:'coro',title:'Coro',area:'pratici',access:'OPEN',prereq:[],goals:['gruppo'],note:'Qui trovi i cori disponibili per la tua fascia d\u2019et\u00e0. Per orientarti tra i diversi livelli e capire quale gruppo \u00e8 pi\u00f9 adatto a te, puoi confrontarti con la segreteria.'},\n\n {id:'chit_acc',title:'Chitarra d\u2019accompagnamento',area:'pratici',access:'OPEN',prereq:[],goals:['accompagnamento']},\n {id:'pf_acc',title:'Pianoforte d\u2019accompagnamento',area:'pratici',access:'OPEN',prereq:[],goals:['accompagnamento']},\n\n {id:'sw1',title:'Songwriting 1',area:'pratici',access:'TEST',prereq:['teoria2'],goals:['scrittura']},\n {id:'sw2',title:'Songwriting 2',area:'pratici',access:'TEST',prereq:['sw1'],goals:['scrittura']},\n {id:'sw3',title:'Songwriting 3',area:'pratici',access:'TEST',prereq:['sw2'],goals:['scrittura']},\n\n {id:'ehr',title:'Easy Home Recording',area:'pratici',access:'TEST',prereq:['teoria3'],goals:['produzione'],note:'Riservato al Percorso Accademico'},\n {id:'mp',title:'Music Production',area:'pratici',access:'TEST',prereq:['teoria3'],goals:['produzione'],note:'Riservato al Percorso Accademico'},\n\n {id:'stor_pop',title:'Storia della musica pop-rock',area:'culturali',access:'OPEN',prereq:[],goals:['cultura']},\n {id:'stor_cla',title:'Storia della musica classica',area:'culturali',access:'OPEN',prereq:[],goals:['cultura']},\n {id:'stor_jazz',title:'Storia della musica jazz',area:'culturali',access:'OPEN',prereq:[],goals:['cultura']},\n\n {id:'ear_training',title:'Teoria | Ear training',area:'teorici',access:'OPEN',prereq:[],goals:['teoria']},\n {id:'lettura_ritmica',title:'Teoria | Lettura e ritmica',area:'teorici',access:'OPEN',prereq:[],goals:['teoria']},\n {id:'scale_accordi',title:'Teoria | Scale e accordi',area:'teorici',access:'OPEN',prereq:[],goals:['teoria']}\n ];\n\n const childrenCourses = [\n {id:'teoria_coro_1',title:'Teoria Coro 1',area:'teorici',access:'OPEN',desc:'Corso dedicato ai bambini.'},\n {id:'teoria_coro_2',title:'Teoria Coro 2',area:'teorici',access:'OPEN',desc:'Corso dedicato ai bambini.'}\n ];\n\n const state = {\n step:1,\n age:null,\n ageBand:null,\n unknownTheory:false,\n goals:new Set(),\n theoryLevel:null,\n completed:new Set()\n };\n\n function ageToBand(age){\n if(age < 6) return 'under6';\n if(age < 10) return 'bambino';\n if(age = 2) state.completed.add('teoria2');\n if(state.theoryLevel >= 3) state.completed.add('teoria3');\n }\n\n function isOpenCourse(c){\n return c.access === 'OPEN';\n }\n\n function unlocked(){\n const base = courses.filter(c=>c.prereq.every(p=>state.completed.has(p)) && !state.completed.has(c.id));\n if(state.unknownTheory) return base.filter(isOpenCourse);\n return base;\n }\n\n function selectableCourses(){\n return courses.filter(c=>{\n if(['teoria1','teoria2','teoria3'].includes(c.id)) return false;\n if(state.unknownTheory && !isOpenCourse(c)) return false;\n return c.prereq.every(p=>state.completed.has(p));\n });\n }\n\n function normalize(value){\n return String(value || '').trim().toLowerCase();\n }\n\n function expandLevel(level){\n const map = {\n 'Int\/Av':'Intermedio\/Avanzato',\n 'Base\/Int':'Base\/Intermedio',\n 'Initial\/Base':'Initial\/Base'\n };\n return map[level] || level;\n }\n\n function slotMatchesAge(slotAge, selectedAgeBand){\n const age = normalize(slotAge);\n if(age === 'open') return true;\n\n const map = {\n bambino: ['6-7','7-9','8-10'],\n teen: ['10-13','10-14','13-16','teen\/ragazzi','over 14'],\n ragazzi: ['ragazzi','teen\/ragazzi','ragazzi\/adulti','over 14'],\n ragazzi_adulti: ['ragazzi','ragazzi\/adulti','adulti','over 14'],\n adulti: ['adulti','ragazzi\/adulti','over 14']\n };\n\n return (map[selectedAgeBand] || []).includes(age);\n }\n\n function humanMode(mode){\n return mode === 'online' ? 'Online' : 'In presenza';\n }\n\n function getGenreLabel(slot){\n const label = String(slot.label || '');\n if(!label.toLowerCase().includes('coro')) return '';\n return label.replace(\/^Coro\\s*\/i, '').trim();\n }\n\n function formatSlotTitle(courseTitle, slot){\n const extras = [];\n if(normalize(courseTitle) === 'coro'){\n const genre = getGenreLabel(slot);\n if(genre) extras.push(genre);\n }\n if(slot.level && slot.level !== 'Open'){\n extras.push(`Livello ${expandLevel(slot.level)}`);\n }\n return extras.join(' \u00b7 ');\n }\n\n function getCourseSlots(courseTitle){\n const raw = scheduleData[courseTitle] || [];\n const dayOrder = ['Luned\u00ec','Marted\u00ec','Mercoled\u00ec','Gioved\u00ec','Venerd\u00ec','Sabato','Domenica'];\n\n return raw\n .filter(slot => state.ageBand ? slotMatchesAge(slot.age, state.ageBand) : true)\n .sort((a,b)=>{\n const dA = dayOrder.indexOf(String(a.day).trim());\n const dB = dayOrder.indexOf(String(b.day).trim());\n if(dA !== dB) return dA - dB;\n return String(a.time).localeCompare(String(b.time), 'it');\n });\n }\n\n function courseHasSlots(courseTitle){\n return getCourseSlots(courseTitle).length > 0;\n }\n\n function renderSlots(courseTitle){\n const slots = getCourseSlots(courseTitle);\n if(!slots.length) return '';\n return `\n \n ${slots.map(slot => `\n \n \n ${String(slot.day).trim()} \u00b7 ${slot.time}\n ${humanMode(slot.mode)}\n \n Ins. ${slot.teacher}\n \n ${slot.age}\n ${formatSlotTitle(courseTitle, slot) ? `${formatSlotTitle(courseTitle, slot)}` : ''}\n \n \n `).join('')}\n \n `;\n }\n\n function isTheoryMonographic(courseId){\n return ['ear_training','lettura_ritmica','scale_accordi'].includes(courseId);\n }\n\n function nextTheoryCourse(){\n if(state.unknownTheory) return null;\n if(!state.completed.has('teoria1')) return courses.find(c=>c.id==='teoria1');\n if(!state.completed.has('teoria2')) return courses.find(c=>c.id==='teoria2');\n if(!state.completed.has('teoria3')) return courses.find(c=>c.id==='teoria3');\n return null;\n }\n\n function nextTheoryForGroup(){\n if(state.unknownTheory) return null;\n if(!state.completed.has('teoria1')) return courses.find(c=>c.id==='teoria1');\n return null;\n }\n\n function getPrimaryRecommendation(goalId){\n if(state.unknownTheory){\n if(goalId === 'teoria') return courses.find(c=>c.id==='teoria1');\n if(goalId === 'gruppo' && !state.completed.has('teoria1')) return courses.find(c=>c.id==='teoria1');\n return null;\n }\n\n if(goalId === 'scrittura' || goalId === 'produzione'){\n return nextTheoryCourse();\n }\n\n if(goalId === 'teoria'){\n const nextTheory = nextTheoryCourse();\n if(nextTheory) return nextTheory;\n return courses.find(c=>c.id==='arm1') || courses.find(c=>c.id==='trpm1') || null;\n }\n\n if(goalId === 'gruppo'){\n const nextForGroup = nextTheoryForGroup();\n if(nextForGroup) return nextForGroup;\n return null;\n }\n\n if(goalId === 'accompagnamento') return null;\n if(goalId === 'cultura') return null;\n return null;\n }\n\n function getGoalDestinationIds(goalId){\n if(goalId === 'gruppo') return ['mdi','mdi_fiati','improv','coro'];\n if(goalId === 'scrittura') return ['sw1','sw2','sw3','arm1','arm2','arm_app','arr'];\n if(goalId === 'produzione') return ['ehr','mp','video_trasc'];\n if(goalId === 'teoria') return ['teoria1','teoria2','teoria3','trpm1','trpm2','arm1','arm2','ear_training','lettura_ritmica','scale_accordi'];\n if(goalId === 'cultura') return ['stor_pop','stor_cla','stor_jazz'];\n if(goalId === 'accompagnamento') return ['chit_acc','pf_acc'];\n return [];\n }\n\n function getGoalDisclaimer(goalId, primary){\n if(state.unknownTheory && !['cultura','accompagnamento'].includes(goalId)){\n return 'Hai indicato di non conoscere il tuo livello di teoria. Qui sotto trovi i corsi ad accesso libero. Per capire se puoi accedere anche ai corsi di teoria di livello superiore, puoi svolgere un test in segreteria.';\n }\n\n if(goalId === 'gruppo' && primary && primary.id === 'teoria1'){\n return 'Se il tuo obiettivo \u00e8 fare musica insieme, Teoria 1 \u00e8 il primo passaggio utile per costruire le basi necessarie e arrivare poi anche a Musica d\u2019insieme.';\n }\n\n if(['scrittura','produzione'].includes(goalId) && primary && ['teoria1','teoria2','teoria3'].includes(primary.id)){\n return 'Per arrivare davvero a questo obiettivo \u00e8 fondamentale costruire una base teorica solida. Questo \u00e8 il prossimo passo consigliato per te.';\n }\n\n if(goalId === 'teoria' && primary && ['teoria1','teoria2','teoria3'].includes(primary.id)){\n return 'Il modo migliore per costruire davvero competenze teoriche \u00e8 partire dai corsi di teoria in presenza. Le monografie online restano disponibili come approfondimenti.';\n }\n\n if(goalId === 'accompagnamento'){\n return 'Qui trovi i corsi che ti permettono di conoscere un altro strumento in una logica complementare al tuo percorso principale.';\n }\n\n return '';\n }\n\n function goalHasAllCompleted(goalId){\n const relevantIds = getGoalDestinationIds(goalId);\n const relevantCourses = courses.filter(c=>relevantIds.includes(c.id));\n const slotAvailable = relevantCourses.filter(c=>courseHasSlots(c.title));\n if(!slotAvailable.length) return false;\n return slotAvailable.every(c=>state.completed.has(c.id));\n }\n\n function card(c, desc){\n return `\n \n \n ${c.title}\n ${c.note ? `${c.note}` : ''}\n ${desc || ''}\n ${renderSlots(c.title)}\n \n ${c.access}\n \n `;\n }\n\n function childrenCard(c){\n return `\n \n \n ${c.title}\n ${c.desc}\n ${renderSlots(c.title)}\n \n ${c.access}\n \n `;\n }\n\n function step1(){\n return `\n \n Step 1\n Quanti anni hai?\n \n \n Useremo l\u2019et\u00e0 solo per proporti i corsi pi\u00f9 adatti alla tua fascia.\n \n \n \n 0 ? '' : 'disabled'}>Continua\n \n \n `;\n }\n\n function step2(){\n const cards = Object.entries(goals).map(([id,g])=>`\n \n ${g.title}\n ${g.meta}\n \n `).join('');\n\n return `\n \n Step 2\n Cosa vorresti sviluppare oltre al tuo strumento?\n Puoi selezionare pi\u00f9 obiettivi.\n ${cards}\n \n Indietro\n Continua\n \n \n `;\n }\n\n function step3(){\n const options = [\n {value:'unknown', label:'Non conosco il mio livello di teoria'},\n {value:'0', label:'Non ho mai studiato teoria'},\n {value:'1', label:'Teoria 1'},\n {value:'2', label:'Teoria 2'},\n {value:'3', label:'Teoria 3'}\n ];\n\n const opts = options.map(opt=>{\n const active =\n (opt.value === 'unknown' && state.unknownTheory) ||\n (opt.value !== 'unknown' && !state.unknownTheory && String(state.theoryLevel) === opt.value);\n\n return `\n \n ${opt.label}\n \n `;\n }).join('');\n\n return `\n \n Step 3\n Qual \u00e8 il tuo livello di teoria?\n Per conoscere il tuo livello di teoria secondo i parametri Cluster puoi svolgere un test in segreteria\n ${opts}\n \n Indietro\n Continua\n \n \n `;\n }\n\n function step4(){\n const items = selectableCourses();\n\n return `\n \n Step 4\n Hai gi\u00e0 frequentato qualcuno di questi corsi?\n \n ${items.map(c=>`\n \n \n ${c.title}\n \n `).join('')}\n \n \n Indietro\n Vedi il risultato\n \n \n `;\n }\n\n function resultUnder6(){\n const yearsMissing = 6 - state.age;\n return `\n \n Risultato\n Per iniziare bisogna aspettare ancora un po\u2019\n \n A Cluster i corsi di musica per bambini partono dai 6 anni in su. Ti aspettiamo fra ${yearsMissing} ${yearsMissing === 1 ? 'anno' : 'anni'}.\n \n \n Indietro\n Ricomincia\n \n \n `;\n }\n\n function resultChildren(){\n return `\n \n Risultato\n Ecco i corsi consigliati per te\n \n Corsi disponibili per questa fascia d\u2019et\u00e0\n ${childrenCourses.map(c=>childrenCard(c)).join('')}\n \n ${renderSummary()}\n \n Indietro\n Ricomincia\n \n \n `;\n }\n\n function renderGoalSection(goalId){\n const allUnlocked = unlocked();\n const primary = getPrimaryRecommendation(goalId);\n const destinationIds = new Set(getGoalDestinationIds(goalId));\n\n let immediateCourses = allUnlocked.filter(c=>{\n if(primary && c.id === primary.id) return false;\n return destinationIds.has(c.id);\n }).filter(c=>courseHasSlots(c.title));\n\n const filteredPrimary = primary && courseHasSlots(primary.title) ? primary : null;\n const disclaimer = getGoalDisclaimer(goalId, filteredPrimary);\n\n if(goalHasAllCompleted(goalId)){\n return `\n \n Corsi per raggiungere il tuo obiettivo di ${goals[goalId].title}\n Hai completato tutti i corsi disponibili in linea con questo obiettivo. Complimenti, \u00e8 un bellissimo traguardo.\n \n `;\n }\n\n if(goalId === 'accompagnamento'){\n immediateCourses = allUnlocked.filter(c=>['chit_acc','pf_acc'].includes(c.id)).filter(c=>courseHasSlots(c.title));\n }\n\n const hasAnything = filteredPrimary || immediateCourses.length;\n if(!hasAnything) return '';\n\n const showPrimary = (goalId !== 'accompagnamento') && !!filteredPrimary;\n const showPanelTitle = !['gruppo'].includes(goalId);\n\n return `\n \n Corsi per raggiungere il tuo obiettivo di ${goals[goalId].title}\n ${disclaimer ? `${disclaimer}` : ''}\n\n ${\n showPrimary ? `\n \n Passo consigliato adesso\n \n ${card(filteredPrimary, 'Questo \u00e8 il passo che ti consigliamo di fare adesso.')}\n \n \n ` : ''\n }\n\n ${\n immediateCourses.length ? `\n \n ${showPanelTitle ? `Altri corsi che puoi frequentare` : ''}\n \n ${immediateCourses.map(c=>card(c)).join('')}\n \n \n ` : ''\n }\n \n `;\n }\n\n function renderOtherCourses(){\n const allUnlocked = unlocked();\n const selectedGoals = [...state.goals];\n const primaryIds = new Set(selectedGoals.map(goalId => getPrimaryRecommendation(goalId)?.id).filter(Boolean));\n const destinationIds = new Set(selectedGoals.flatMap(goalId => getGoalDestinationIds(goalId)));\n\n let otherCourses = allUnlocked.filter(c=>{\n if(primaryIds.has(c.id)) return false;\n if(destinationIds.has(c.id)) return false;\n if(!courseHasSlots(c.title)) return false;\n return true;\n });\n\n if(!otherCourses.length) return '';\n\n return `\n \n Altri corsi disponibili\n \n ${otherCourses.map(c=>{\n let desc = '';\n if(isTheoryMonographic(c.id)){\n desc = 'Approfondimento monografico utile per esplorare aspetti specifici della teoria musicale.';\n }\n if(['chit_acc','pf_acc'].includes(c.id)){\n desc = 'Corso complementare utile per conoscere le basi di un altro strumento.';\n }\n return card(c, desc);\n }).join('')}\n \n \n `;\n }\n\n function theorySummaryLabel(){\n if(state.unknownTheory) return 'Non conosco il mio livello di teoria';\n if(state.theoryLevel === 0) return 'Non ho mai studiato teoria';\n if(state.theoryLevel === 1) return 'Teoria 1';\n if(state.theoryLevel === 2) return 'Teoria 2';\n if(state.theoryLevel === 3) return 'Teoria 3';\n return '\u2014';\n }\n\n function renderSummary(){\n const goalsLabel = [...state.goals].map(g=>goals[g].title).join(', ') || '\u2014';\n const completedCount = state.completed.size;\n\n return `\n \n \n Et\u00e0\n ${state.age ?? '\u2014'} anni\n \n \n Obiettivi\n ${goalsLabel}\n \n \n Teoria\n ${theorySummaryLabel()}\n \n \n Corsi gi\u00e0 frequentati\n ${completedCount ? completedCount : 'Nessuno'}\n \n \n `;\n }\n\n function resultStandard(){\n const selectedGoals = [...state.goals];\n const goalSections = selectedGoals.map(goalId => renderGoalSection(goalId)).filter(Boolean).join('');\n\n return `\n \n Risultato\n Ecco i corsi consigliati per te\n \n ${goalSections || 'In questo momento non risultano corsi disponibili per le scelte fatte.'}\n \n ${renderOtherCourses()}\n ${renderSummary()}\n \n Indietro\n Ricomincia\n \n \n `;\n }\n\n function currentTotalSteps(){\n if(state.ageBand === 'under6') return 2;\n if(state.ageBand === 'bambino') return 2;\n return 5;\n }\n\n function currentDisplayStep(){\n if(state.ageBand === 'under6') return state.step === 5 ? 2 : 1;\n if(state.ageBand === 'bambino') return state.step === 5 ? 2 : 1;\n return state.step;\n }\n\n function render(){\n let inner = '';\n if(state.step === 1) inner = step1();\n else if(state.step === 2) inner = step2();\n else if(state.step === 3) inner = step3();\n else if(state.step === 4) inner = step4();\n else {\n if(state.ageBand === 'under6') inner = resultUnder6();\n else if(state.ageBand === 'bambino') inner = resultChildren();\n else inner = resultStandard();\n }\n\n const totalSteps = currentTotalSteps();\n const displayStep = currentDisplayStep();\n const progress = (displayStep \/ totalSteps) * 100;\n\n mount.innerHTML = `\n \n \n \n Orientamento corsi complementari\n Questo questionario \u00e8 progettato per accompagnarti nella scelta dei corsi complementari pi\u00f9 utili per te.\n \n Step ${displayStep}\/${totalSteps}\n \n \n ${inner}\n \n `;\n\n bind();\n }\n\n function bind(){\n const ageInput = mount.querySelector('[data-age-input]');\n if(ageInput){\n ageInput.addEventListener('input', e=>{\n const raw = e.target.value.trim();\n const value = raw === '' ? null : Number(raw);\n\n if(Number.isInteger(value) && value > 0){\n state.age = value;\n state.ageBand = ageToBand(value);\n } else {\n state.age = null;\n state.ageBand = null;\n }\n\n const nextBtn = mount.querySelector('[data-next]');\n if(nextBtn){\n nextBtn.disabled = !(Number.isInteger(state.age) && state.age > 0);\n }\n });\n }\n\n mount.querySelectorAll('[data-goal]').forEach(el=>{\n el.onclick = ()=>{\n const goalId = el.dataset.goal;\n if(state.goals.has(goalId)) state.goals.delete(goalId);\n else state.goals.add(goalId);\n render();\n };\n });\n\n mount.querySelectorAll('[data-theory]').forEach(el=>{\n el.onclick = ()=>{\n const value = el.dataset.theory;\n if(value === 'unknown'){\n state.unknownTheory = true;\n state.theoryLevel = null;\n } else {\n state.unknownTheory = false;\n state.theoryLevel = Number(value);\n }\n seedTheory();\n render();\n };\n });\n\n mount.querySelectorAll('[data-course]').forEach(el=>{\n el.onchange = e=>{\n const id = e.target.dataset.course;\n if(e.target.checked) state.completed.add(id);\n else state.completed.delete(id);\n seedTheory();\n render();\n };\n });\n\n const next = mount.querySelector('[data-next]');\n if(next){\n next.onclick = ()=>{\n if(state.step === 1 && (state.ageBand === 'bambino' || state.ageBand === 'under6')) state.step = 5;\n else state.step++;\n render();\n };\n }\n\n const back = mount.querySelector('[data-back]');\n if(back){\n back.onclick = ()=>{\n if((state.ageBand === 'bambino' || state.ageBand === 'under6') && state.step === 5) state.step = 1;\n else state.step--;\n render();\n };\n }\n\n const reset = mount.querySelector('[data-reset]');\n if(reset){\n reset.onclick = ()=>{\n state.step = 1;\n state.age = null;\n state.ageBand = null;\n state.unknownTheory = false;\n state.goals = new Set();\n state.theoryLevel = null;\n state.completed = new Set();\n render();\n };\n }\n }\n\n render();\n})();\n","css":" #cluster-corsi-wizard{\n --bg:#0b0b0d;\n --card:#141418;\n --card-2:#101114;\n --text:#f2f2f2;\n --muted:#b9b9b9;\n --accent:#ef7c33;\n --line:#2a2a33;\n --soft:#17181d;\n --shadow:0 16px 40px rgba(0,0,0,.28);\n font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;\n color:var(--text);\n }\n\n #cluster-corsi-wizard .wrap{\n max-width:1020px;\n margin:0 auto;\n padding:18px;\n background:\n radial-gradient(900px 420px at 15% 10%, rgba(239,124,51,.15), transparent 60%),\n radial-gradient(700px 380px at 90% 0%, rgba(60,160,255,.10), transparent 55%),\n var(--bg);\n border-radius:18px;\n border:1px solid var(--line);\n box-shadow:var(--shadow);\n }\n\n #cluster-corsi-wizard .top{\n display:flex;\n justify-content:space-between;\n align-items:flex-start;\n gap:16px;\n margin-bottom:18px;\n }\n\n #cluster-corsi-wizard h1{\n margin:0 0 6px;\n font-size:24px;\n line-height:1.08;\n font-weight:900;\n }\n\n #cluster-corsi-wizard .intro{\n margin:0;\n color:var(--muted);\n font-size:14px;\n line-height:1.5;\n max-width:700px;\n }\n\n #cluster-corsi-wizard .step-chip{\n display:inline-flex;\n align-items:center;\n justify-content:center;\n min-width:78px;\n padding:8px 12px;\n border-radius:999px;\n border:1px solid var(--line);\n background:#0f0f13;\n color:var(--muted);\n font-size:12px;\n font-weight:800;\n }\n\n #cluster-corsi-wizard .progress{\n height:8px;\n background:#0f0f13;\n border:1px solid var(--line);\n border-radius:999px;\n overflow:hidden;\n margin-bottom:18px;\n }\n\n #cluster-corsi-wizard .progress > span{\n display:block;\n height:100%;\n background:linear-gradient(90deg, rgba(239,124,51,.9), rgba(239,124,51,.45));\n transition:width .25s ease;\n }\n\n #cluster-corsi-wizard .card{\n background:linear-gradient(180deg, rgba(255,255,255,.04), transparent 45%), var(--card);\n border:1px solid var(--line);\n border-radius:18px;\n padding:18px;\n }\n\n #cluster-corsi-wizard .eyebrow{\n font-size:12px;\n text-transform:uppercase;\n letter-spacing:.08em;\n color:var(--muted);\n font-weight:800;\n margin-bottom:6px;\n }\n\n #cluster-corsi-wizard .question{\n margin:0 0 14px;\n font-size:26px;\n line-height:1.1;\n font-weight:900;\n }\n\n #cluster-corsi-wizard .step-note-strong{\n margin:0 0 16px;\n color:#fff;\n font-size:15px;\n line-height:1.5;\n font-weight:600;\n }\n\n #cluster-corsi-wizard .choices{\n display:grid;\n gap:12px;\n }\n\n #cluster-corsi-wizard .goal-grid{\n grid-template-columns:1fr 1fr;\n }\n\n @media (max-width:740px){\n #cluster-corsi-wizard .goal-grid{grid-template-columns:1fr}\n }\n\n #cluster-corsi-wizard .choice,\n #cluster-corsi-wizard .check{\n border:1px solid var(--line);\n border-radius:16px;\n background:var(--card-2);\n padding:16px;\n cursor:pointer;\n transition:border-color .16s ease, transform .08s ease;\n }\n\n #cluster-corsi-wizard .choice:hover,\n #cluster-corsi-wizard .check:hover{\n transform:translateY(-1px);\n border-color:rgba(239,124,51,.55);\n }\n\n #cluster-corsi-wizard .choice.active,\n #cluster-corsi-wizard .check.active{\n border-color:rgba(239,124,51,.82);\n box-shadow:0 0 0 2px rgba(239,124,51,.14) inset;\n }\n\n #cluster-corsi-wizard .choice-title{\n font-size:18px;\n font-weight:900;\n margin-bottom:6px;\n }\n\n #cluster-corsi-wizard .choice-meta{\n color:var(--muted);\n font-size:13px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .check{\n display:flex;\n gap:12px;\n align-items:flex-start;\n }\n\n #cluster-corsi-wizard .check input{\n margin-top:3px;\n accent-color:var(--accent);\n }\n\n #cluster-corsi-wizard .check b{\n display:block;\n font-size:15px;\n margin-bottom:4px;\n }\n\n #cluster-corsi-wizard .small{\n color:var(--muted);\n font-size:13px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .actions{\n display:flex;\n justify-content:space-between;\n gap:12px;\n margin-top:18px;\n flex-wrap:wrap;\n }\n\n #cluster-corsi-wizard .btn{\n border:1px solid var(--line);\n background:#0f0f13;\n color:var(--text);\n padding:12px 16px;\n border-radius:999px;\n cursor:pointer;\n font-weight:800;\n font-size:14px;\n }\n\n #cluster-corsi-wizard .btn.primary{\n background:var(--accent);\n color:#111;\n border-color:rgba(239,124,51,.9);\n }\n\n #cluster-corsi-wizard .btn.ghost{background:transparent}\n #cluster-corsi-wizard .btn[disabled]{opacity:.4;cursor:not-allowed}\n\n #cluster-corsi-wizard .goal-block{\n margin-bottom:18px;\n border:1px solid var(--line);\n border-radius:18px;\n background:linear-gradient(180deg, rgba(255,255,255,.03), transparent 45%), var(--card-2);\n padding:16px;\n }\n\n #cluster-corsi-wizard .goal-block:last-child{margin-bottom:0}\n\n #cluster-corsi-wizard .goal-headline{\n font-size:22px;\n line-height:1.15;\n font-weight:900;\n margin:0 0 10px;\n }\n\n #cluster-corsi-wizard .goal-disclaimer{\n margin:0 0 14px;\n padding:14px 16px;\n border-radius:14px;\n background:var(--soft);\n border:1px solid rgba(239,124,51,.22);\n color:#e8e8e8;\n font-size:15px;\n line-height:1.55;\n }\n\n #cluster-corsi-wizard .panel{\n border:1px solid var(--line);\n border-radius:16px;\n background:#111217;\n padding:14px;\n }\n\n #cluster-corsi-wizard .panel + .panel{margin-top:14px}\n\n #cluster-corsi-wizard .panel h3{\n margin:0 0 10px;\n font-size:12px;\n text-transform:uppercase;\n letter-spacing:.08em;\n color:var(--muted);\n }\n\n #cluster-corsi-wizard .course-list{\n display:grid;\n gap:10px;\n }\n\n #cluster-corsi-wizard .course{\n display:flex;\n justify-content:space-between;\n gap:12px;\n align-items:flex-start;\n border:1px solid var(--line);\n border-radius:14px;\n background:#0f0f13;\n padding:12px;\n }\n\n #cluster-corsi-wizard .course.teorici{border-left:4px solid #4ea978}\n #cluster-corsi-wizard .course.pratici{border-left:4px solid #d3a438}\n #cluster-corsi-wizard .course.culturali{border-left:4px solid #a33a52}\n\n #cluster-corsi-wizard .check.teorici{border-left:4px solid #4ea978}\n #cluster-corsi-wizard .check.pratici{border-left:4px solid #d3a438}\n #cluster-corsi-wizard .check.culturali{border-left:4px solid #a33a52}\n\n #cluster-corsi-wizard .course-title{\n font-size:15px;\n font-weight:900;\n margin-bottom:4px;\n }\n\n #cluster-corsi-wizard .course-note{\n color:#fff;\n font-size:12px;\n line-height:1.45;\n margin-bottom:6px;\n }\n\n #cluster-corsi-wizard .course-desc{\n color:var(--muted);\n font-size:12px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .badge{\n padding:5px 8px;\n border-radius:999px;\n border:1px solid var(--line);\n background:#15151b;\n font-size:11px;\n font-weight:900;\n white-space:nowrap;\n }\n\n #cluster-corsi-wizard .slot-list{\n display:grid;\n gap:8px;\n margin-top:10px;\n }\n\n #cluster-corsi-wizard .slot{\n border:1px solid rgba(255,255,255,.05);\n border-radius:12px;\n background:#15161a;\n padding:10px 12px;\n }\n\n #cluster-corsi-wizard .slot-top{\n display:flex;\n justify-content:space-between;\n gap:12px;\n align-items:flex-start;\n margin-bottom:4px;\n }\n\n #cluster-corsi-wizard .slot-time{\n font-size:13px;\n font-weight:800;\n }\n\n #cluster-corsi-wizard .slot-meta{\n color:var(--muted);\n font-size:12px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .mini-badges{\n display:flex;\n flex-wrap:wrap;\n gap:6px;\n margin-top:6px;\n }\n\n #cluster-corsi-wizard .mini-badge{\n padding:4px 7px;\n border-radius:999px;\n border:1px solid var(--line);\n background:#121318;\n font-size:10px;\n font-weight:900;\n color:var(--muted);\n }\n\n #cluster-corsi-wizard .age-field{\n display:grid;\n gap:10px;\n max-width:320px;\n }\n\n #cluster-corsi-wizard .age-input{\n width:100%;\n border:1px solid var(--line);\n border-radius:14px;\n background:var(--card-2);\n color:var(--text);\n padding:14px 16px;\n font-size:18px;\n font-weight:800;\n outline:none;\n }\n\n #cluster-corsi-wizard .age-input:focus{\n border-color:rgba(239,124,51,.82);\n box-shadow:0 0 0 2px rgba(239,124,51,.14) inset;\n }\n\n #cluster-corsi-wizard .celebration{\n padding:14px 16px;\n border-radius:14px;\n background:#151d17;\n border:1px solid rgba(65,209,123,.22);\n color:#e8f7ee;\n font-size:14px;\n line-height:1.55;\n }\n\n #cluster-corsi-wizard .summary-grid{\n display:grid;\n grid-template-columns:repeat(4,1fr);\n gap:12px;\n margin-top:18px;\n }\n\n @media (max-width:920px){\n #cluster-corsi-wizard .summary-grid{grid-template-columns:1fr 1fr}\n }\n\n @media (max-width:560px){\n #cluster-corsi-wizard .summary-grid{grid-template-columns:1fr}\n }\n\n #cluster-corsi-wizard .summary-card{\n border:1px solid var(--line);\n border-radius:16px;\n background:#0c0d12;\n padding:14px 16px;\n }\n\n #cluster-corsi-wizard .summary-label{\n color:var(--muted);\n font-size:12px;\n text-transform:uppercase;\n letter-spacing:.08em;\n margin-bottom:8px;\n }\n\n #cluster-corsi-wizard .summary-value{\n font-size:15px;\n font-weight:800;\n line-height:1.35;\n color:#fff;\n }\n\n\/* sicurezza layout *\/\n#cluster-corsi-wizard,\n#cluster-corsi-wizard *{\n box-sizing:border-box;\n min-width:0;\n}\n\n\/* evita che testi lunghi facciano sbordare *\/\n#cluster-corsi-wizard .course-title,\n#cluster-corsi-wizard .course-desc,\n#cluster-corsi-wizard .course-note,\n#cluster-corsi-wizard .goal-headline,\n#cluster-corsi-wizard .summary-value,\n#cluster-corsi-wizard .slot-time,\n#cluster-corsi-wizard .slot-meta,\n#cluster-corsi-wizard .intro,\n#cluster-corsi-wizard .question{\n overflow-wrap:anywhere;\n}\n\n@media (max-width: 640px){\n\n #cluster-corsi-wizard .wrap{\n padding:14px;\n border-radius:16px;\n }\n\n #cluster-corsi-wizard .top{\n flex-direction:column;\n align-items:stretch;\n gap:10px;\n }\n\n #cluster-corsi-wizard .step-chip{\n align-self:flex-start;\n }\n\n #cluster-corsi-wizard h1{\n font-size:22px;\n line-height:1.1;\n }\n\n #cluster-corsi-wizard .intro{\n font-size:13px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .card{\n padding:14px;\n border-radius:16px;\n padding-bottom:90px;\n }\n\n #cluster-corsi-wizard .question{\n font-size:20px;\n line-height:1.2;\n margin-bottom:12px;\n }\n\n #cluster-corsi-wizard .step-note-strong{\n font-size:14px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .choice,\n #cluster-corsi-wizard .check,\n #cluster-corsi-wizard .goal-block,\n #cluster-corsi-wizard .panel,\n #cluster-corsi-wizard .summary-card{\n padding:12px;\n border-radius:14px;\n }\n\n #cluster-corsi-wizard .choice-title{\n font-size:16px;\n line-height:1.2;\n }\n\n #cluster-corsi-wizard .choice-meta{\n font-size:13px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .goal-headline{\n font-size:18px;\n line-height:1.2;\n }\n\n #cluster-corsi-wizard .goal-disclaimer{\n padding:12px 14px;\n font-size:14px;\n line-height:1.5;\n }\n\n \/* fix principale per le card corso *\/\n #cluster-corsi-wizard .course{\n flex-direction:column;\n align-items:flex-start;\n gap:10px;\n }\n\n #cluster-corsi-wizard .course > div:first-child{\n width:100%;\n min-width:0;\n }\n\n #cluster-corsi-wizard .badge{\n align-self:flex-start;\n white-space:normal;\n max-width:100%;\n }\n\n #cluster-corsi-wizard .course-title{\n font-size:15px;\n line-height:1.25;\n }\n\n #cluster-corsi-wizard .course-note,\n #cluster-corsi-wizard .course-desc{\n font-size:12px;\n line-height:1.45;\n }\n\n \/* fix per i singoli slot orario *\/\n #cluster-corsi-wizard .slot{\n padding:10px;\n }\n\n #cluster-corsi-wizard .slot-top{\n flex-direction:column;\n align-items:flex-start;\n gap:6px;\n }\n\n #cluster-corsi-wizard .slot-time{\n font-size:13px;\n line-height:1.35;\n }\n\n #cluster-corsi-wizard .slot-meta{\n font-size:12px;\n line-height:1.45;\n }\n\n #cluster-corsi-wizard .mini-badges{\n gap:5px;\n }\n\n #cluster-corsi-wizard .mini-badge{\n font-size:10px;\n line-height:1.2;\n }\n\n #cluster-corsi-wizard .age-field{\n max-width:none;\n }\n\n #cluster-corsi-wizard .age-input{\n font-size:16px;\n padding:13px 14px;\n }\n\n #cluster-corsi-wizard .celebration{\n padding:12px 14px;\n font-size:14px;\n line-height:1.5;\n }\n\n #cluster-corsi-wizard .summary-label{\n font-size:11px;\n }\n\n #cluster-corsi-wizard .summary-value{\n font-size:14px;\n line-height:1.35;\n }\n\n #cluster-corsi-wizard .actions{\n flex-direction:column;\n align-items:stretch;\n }\n\n #cluster-corsi-wizard .btn{\n width:100%;\n text-align:center;\n justify-content:center;\n }\n}"}}]}]}],"name":"MAPPA COMPLEMENTARI"},{"type":"section","props":{"css":".el-section{\nbackground-color:#010202;\n}","height":"pixels","id":"openday","image_position":"top-left","image_size":"height-1-1","media_focal_point":"top-left","media_overlay_gradient":"linear-gradient(90deg, rgba(1,2,2,0) 0%, rgba(1,2,2,1) 45%);","padding":"none","padding_remove_bottom":false,"padding_remove_top":false,"preserve_color":false,"status":"disabled","style":"default","title_breakpoint":"xl","title_position":"top-left","title_rotation":"left","vertical_align":"middle","width":""},"children":[{"type":"row","props":{"column_gap":"collapse","layout":"1-2,1-2","margin_remove_bottom":true,"margin_remove_top":true,"row_gap":"collapse"},"children":[{"type":"column","props":{"css":".el-column{\n\tbackground: linear-gradient(90deg,rgba(255, 255, 255, 0) 48%, rgba(0, 0, 0, 1) 57%);\n}","image_position":"center-center","image_size":"cover","position_sticky_breakpoint":"m","vertical_align":"middle","width_medium":"1-2"},"children":[{"type":"image","props":{"image":"images\/contatti\/img-top-festivita.jpg","image_svg_color":"emphasis","margin":"default","text_align":"right"}}]},{"type":"column","props":{"css":".uk-tile{\n background-color: #010202;\n}\n","image_position":"center-center","image_size":"cover","padding":"small","position_sticky_breakpoint":"m","style":"tile-secondary","vertical_align":"middle","width_medium":"1-2"},"children":[{"type":"headline","props":{"content":"PRENOTA UNOPEN DAY","title_element":"h1"}},{"type":"text","props":{"column_breakpoint":"m","content":"Gli Open Day di Cluster ti offrono l\u2019opportunit\u00e0 di visitare la scuola, esplorare gli spazi e scoprire da vicino la proposta didattica.\nIn un\u2019ora e mezza potrai orientarti tra i percorsi disponibili e iniziare con consapevolezza la tua esperienza musicale.","margin":"default","maxwidth":"xlarge","text_align":"left"}},{"type":"module","props":{"block_align":"center","css":".uk-card-default {color: black !important;}\n\nh4 {color: black !important;}\n\n","menu_image_align":"center","menu_image_margin":true,"menu_style":"default","menu_type":"nav","module":"338","type":"mod_yootheme_builder"}}]}]}],"name":"PRENOTA UN OPEN DAY"},{"type":"section","props":{"id":"openday","image_position":"center-center","style":"secondary","title_breakpoint":"xl","title_position":"top-left","title_rotation":"left","vertical_align":"middle","width":"default"},"children":[{"type":"row","props":{"layout":"1-2,1-2"},"children":[{"type":"column","props":{"image_position":"center-center","position_sticky_breakpoint":"m","width_medium":"1-2"},"children":[{"type":"image","props":{"image":"images\/SEDE\/sede 3.jpg","image_svg_color":"emphasis","margin":"default"}}]},{"type":"column","props":{"image_position":"center-center","position_sticky_breakpoint":"m","vertical_align":"middle","width_medium":"1-2"},"children":[{"type":"headline","props":{"content":"PRENOTAUN OPEN DAY","text_align":"left","text_align_breakpoint":"s","text_align_fallback":"center","title_element":"h2","title_style":"h1"}},{"type":"text","props":{"column_breakpoint":"m","content":"Gli Open Day Cluster ti offrono l\u2019opportunit\u00e0 di visitare la scuola, esplorare gli spazi e orientarti nella scelta del percorso musicale pi\u00f9 giusto per te.\nTi aspettiamo! ","margin":"default","maxwidth":"xlarge","text_align":"left","text_align_breakpoint":"s","text_align_fallback":"center"}}]}]},{"type":"row","children":[{"type":"column","props":{"image_position":"center-center","position_sticky_breakpoint":"m"},"children":[{"type":"module","props":{"block_align":"center","css":".uk-card-default {color: black !important;}\n\nh4 {color: black !important;}\n\n","menu_image_align":"center","menu_image_margin":true,"menu_style":"default","menu_type":"nav","module":"338","type":"mod_yootheme_builder"}},{"type":"button","props":{"block_align":"center","fullwidth":true,"grid_column_gap":"small","grid_row_gap":"small","margin":"medium","maxwidth":"medium"},"children":[{"type":"button_item","props":{"button_style":"default","content":"TORNA ALL'INIZIO","dialog_layout":"modal","dialog_offcanvas_flip":true,"icon_align":"left","link":"#start"}}]}]}],"props":{"width":"xsmall"}}],"name":"OPEN DAY PRENOTA - deluxe"},{"type":"section","props":{"image_position":"center-center","style":"default","title_breakpoint":"xl","title_position":"top-left","title_rotation":"left","vertical_align":"middle","width":"default"},"children":[{"type":"row","children":[{"type":"column","props":{"image_position":"center-center","position_sticky_breakpoint":"m"},"children":[{"type":"module","props":{"menu_image_align":"center","menu_image_margin":true,"menu_style":"default","menu_type":"nav","module":"383","type":"mod_yootheme_builder"}}]}]}],"name":"social proof"},{"type":"section","props":{"image_position":"center-center","style":"muted","title_breakpoint":"xl","title_position":"top-left","title_rotation":"left","vertical_align":"middle","width":"default"},"children":[{"type":"row","children":[{"type":"column","props":{"image_position":"center-center","position_sticky_breakpoint":"m"},"children":[{"type":"text","props":{"column_breakpoint":"m","content":"DOMANDE FREQUENTI","margin":"default"}}]}]}],"name":"TIT FAQ"},{"type":"section","props":{"image_position":"center-center","style":"default","title_breakpoint":"xl","title_position":"top-left","title_rotation":"left","vertical_align":"middle","width":"default"},"children":[{"type":"row","children":[{"type":"column","props":{"image_position":"center-center","position_sticky_breakpoint":"m"},"children":[{"type":"module","props":{"menu_image_align":"center","menu_image_margin":true,"menu_style":"default","menu_type":"nav","module":"381","type":"mod_yootheme_builder"}}]}]}]},{"type":"section","props":{"id":"openday","image_position":"center-center","style":"secondary","title_breakpoint":"xl","title_position":"top-left","title_rotation":"left","vertical_align":"middle","width":"default"},"children":[{"type":"row","props":{"layout":"1-2,1-2"},"children":[{"type":"column","props":{"image_position":"center-center","position_sticky_breakpoint":"m","width_medium":"1-2"},"children":[{"type":"image","props":{"image":"images\/SEDE\/sede 3.jpg","image_svg_color":"emphasis","margin":"default"}}]},{"type":"column","props":{"image_position":"center-center","position_sticky_breakpoint":"m","vertical_align":"middle","width_medium":"1-2"},"children":[{"type":"headline","props":{"content":"PRENOTAUN OPEN DAY","text_align":"left","text_align_breakpoint":"s","text_align_fallback":"center","title_element":"h2","title_style":"h1"}},{"type":"text","props":{"column_breakpoint":"m","content":"Gli Open Day Cluster ti offrono l\u2019opportunit\u00e0 di visitare la scuola, esplorare gli spazi e orientarti nella scelta del percorso musicale pi\u00f9 giusto per te.\nTi aspettiamo! ","margin":"default","maxwidth":"xlarge","text_align":"left","text_align_breakpoint":"s","text_align_fallback":"center"}}]}]},{"type":"row","children":[{"type":"column","props":{"image_position":"center-center","position_sticky_breakpoint":"m"},"children":[{"type":"module","props":{"block_align":"center","css":".uk-card-default {color: black !important;}\n\nh4 {color: black !important;}\n\n","menu_image_align":"center","menu_image_margin":true,"menu_style":"default","menu_type":"nav","module":"338","type":"mod_yootheme_builder"}},{"type":"button","props":{"block_align":"center","fullwidth":true,"grid_column_gap":"small","grid_row_gap":"small","margin":"medium","maxwidth":"medium"},"children":[{"type":"button_item","props":{"button_style":"default","content":"TORNA ALL'INIZIO","dialog_layout":"modal","dialog_offcanvas_flip":true,"icon_align":"left","link":"#start"}}]}]}],"props":{"width":"xsmall"}}],"name":"OPEN DAY PRENOTA - deluxe"}],"version":"4.5.32"} -->
