<style>
/* Stili CSS Ottimizzati per fp-english (Mobile First) */
.fp-article-wrapper { font-family: 'Segoe UI', system-ui, sans-serif; color: #334155; line-height: 1.6; max-width: 800px; margin: 0 auto; padding: 0 10px; box-sizing: border-box; overflow-x: hidden; }
.fp-article-wrapper * { box-sizing: border-box; }
.fp-main-title { color: #1e3a8a; font-size: 1.6rem; text-align: center; margin-bottom: 15px; text-transform: uppercase; letter-spacing: 0.5px; line-height: 1.3; }
.fp-toc { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 12px; padding: 15px; margin-bottom: 25px; }
.fp-toc h3 { margin-top: 0; color: #1e3a8a; font-size: 1.1rem; }
.fp-toc ul { list-style: none; padding-left: 0; margin: 0; }
.fp-toc li { margin-bottom: 8px; font-size: 0.95rem; }
.fp-toc a { color: #0d9488; text-decoration: none; font-weight: 500; transition: color 0.2s; }
.fp-toc a:hover { color: #1e3a8a; text-decoration: underline; }
.fp-box { padding: 15px; border-radius: 12px; margin-bottom: 20px; }
.fp-box h2 { font-size: 1.3rem; margin-top: 0; color: #1e3a8a; line-height: 1.3; }
.fp-box h3 { color: #1e3a8a; font-size: 1.1rem; margin-top: 15px; border-bottom: 2px solid #e2e8f0; padding-bottom: 5px; line-height: 1.3; }
.fp-box-obiettivo { background-color: #f0f9ff; border-left: 4px solid #0284c7; }
.fp-box-regola { background-color: #f0fdf4; border-left: 4px solid #16a34a; }
.fp-box-warning { background-color: #fff7ed; border-left: 4px solid #ea580c; }
.fp-box-pro { background-color: #f0fdfa; border-left: 4px solid #0d9488; }
/* Tabelle responsive */
.fp-table-wrapper { width: 100%; overflow-x: auto; margin-bottom: 15px; border-radius: 8px; box-shadow: 0 2px 5px rgba(0,0,0,0.05); }
.fp-table { width: 100%; border-collapse: collapse; background: white; min-width: 300px; font-size: 0.9rem; }
.fp-table th { background-color: #1e3a8a; color: white; padding: 10px; text-align: left; }
.fp-table td { padding: 10px; border-bottom: 1px solid #e2e8f0; }
.fp-table tr:last-child td { border-bottom: none; }
.fp-list { padding-left: 20px; margin: 10px 0; font-size: 0.95rem; }
.fp-list li { margin-bottom: 8px; }
/* Stili Esercizio Gap Fill & Translation */
.fp-quiz-section { background: #f0f9ff; padding: 20px; border-radius: 12px; border: 2px solid #0d9488; margin-top: 30px; }
.fp-q-row { margin-bottom: 15px; border-bottom: 1px solid #e2e8f0; padding-bottom: 15px; }
.fp-q-row:last-child { border-bottom: none; margin-bottom: 0; }
.fp-q-text { margin-bottom: 8px; font-weight: 500; color: #1e293b; line-height: 1.8; font-size: 1rem; }
.fp-input-inline { display: inline-block !important; width: 160px !important; height: 32px !important; padding: 2px 5px !important; margin: 0 3px !important; border: 2px solid #cbd5e1 !important; border-radius: 6px !important; font-size: 0.95rem !important; text-align: center !important; font-weight: bold !important; outline: none !important; transition: border-color 0.2s !important; vertical-align: middle !important; background: white !important; color: #1e3a8a !important; }
.fp-input-inline:focus { border-color: #0d9488 !important; box-shadow: 0 0 0 2px rgba(13,148,136,0.2) !important; }
.fp-input-block { display: block; width: 100%; padding: 10px; margin-top: 8px; border: 2px solid #cbd5e1; border-radius: 6px; font-size: 0.95rem; outline: none; transition: border-color 0.2s; color: #1e3a8a; font-weight: 500; box-sizing: border-box; background: white; }
.fp-input-block:focus { border-color: #0d9488; }
.fp-feedback { margin-top: 8px; padding: 10px; border-radius: 6px; display: none; font-weight: bold; font-size: 0.90rem; line-height: 1.4; }
.fp-feedback span.explanation { display: block; font-weight: normal; font-size: 0.85rem; margin-top: 4px; color: inherit; opacity: 0.9; }
/* Bottoni in flex */
.fp-btn-container { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 20px; }
.fp-btn { flex: 1; min-width: 140px; border: none; padding: 12px 15px; border-radius: 8px; cursor: pointer; font-weight: bold; font-size: 0.95rem; text-align: center; transition: transform 0.1s, opacity 0.2s; }
.fp-btn:active { transform: scale(0.98); }
.fp-btn-check { background: #0d9488; color: white; }
.fp-btn-check:hover { background: #0f766e; }
.fp-btn-show { background: #1e3a8a; color: white; }
.fp-btn-show:hover { background: #1e40af; }
/* Dashboard Punteggio e Gatto */
.fp-score-board { margin-top: 25px; padding: 20px; border-radius: 12px; display: none; text-align: center; border: 3px solid transparent; }
.fp-score-board h3 { margin: 10px 0; font-size: 1.5rem; text-transform: uppercase; }
.fp-score-board p { font-size: 1.0rem; margin: 0; font-weight: bold; line-height: 1.5; }
.fp-cat-video { width: 100%; max-width: 150px; height: 150px; object-fit: contain; margin: 0 auto; display: block; image-rendering: pixelated; border-radius: 8px; background: rgba(255,255,255,0.5); }
/* --- STILI ESERCIZIO: SENTENCE BUILDER (Riordino) --- */
.fp-reorder-section { background: #f8fafc; padding: 20px; border-radius: 12px; border: 2px solid #3b82f6; margin-top: 30px; }
.fp-reorder-row { margin-bottom: 20px; background: white; padding: 15px; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
.fp-reorder-hint { font-weight: 500; color: #1e293b; margin-bottom: 12px; font-size: 0.95rem; display: block; border-bottom: 1px solid #e2e8f0; padding-bottom: 5px; }
.fp-dropzone { min-height: 52px; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 10px; margin-bottom: 12px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; transition: border-color 0.3s, background-color 0.3s; }
.fp-dropzone.correct { border-color: #22c55e; background-color: #f0fdf4; border-style: solid; }
.fp-dropzone.incorrect { border-color: #ef4444; background-color: #fef2f2; border-style: solid; }
.fp-word-bank { min-height: 52px; padding: 10px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; background: #f1f5f9; border-radius: 8px; border: 1px solid #e2e8f0; }
.fp-word-chip { background: #0284c7; color: white; padding: 8px 14px; border-radius: 20px; font-weight: bold; font-size: 0.95rem; cursor: pointer; user-select: none; box-shadow: 0 3px 0 #0369a1; transition: transform 0.1s, box-shadow 0.1s; -webkit-tap-highlight-color: transparent; }
.fp-word-chip:active { transform: translateY(3px); box-shadow: 0 0 0 #0369a1; }
</style>
<div class="fp-article-wrapper">
<h1 class="fp-main-title">Advanced Prepositions & Collocations (C1/C2)</h1>
<!-- INDICE INTERATTIVO -->
<div class="fp-toc">
<h3>📌 Indice della Lezione</h3>
<ul>
<li><a href="#obiettivo">🎯 Obiettivo della lezione (C1/C2)</a></li>
<li><a href="#collocations">🌟 Advanced Fixed Collocations</a></li>
<li><a href="#prepositions">⏱️ Prepositional Phrases (Accademic & Formal)</a></li>
<li><a href="#nuances">🔗 Preposizioni dipendenti (Verb/Adj + Prep)</a></li>
<li><a href="#errori">🚫 Errori comuni da evitare</a></li>
<li><a href="#esercizi">🎮 1. Gap Fill & Translation Exercises</a></li>
<li><a href="#reorder">🧩 2. Extra: Sentence Builder</a></li>
</ul>
</div>
<!-- OBIETTIVO -->
<div id="obiettivo" class="fp-box fp-box-obiettivo">
<h2>🎯 Obiettivo della lezione (C1/C2)</h2>
<p>A livello C1/C2, la padronanza delle preposizioni non riguarda più solo il movimento (es. *in, at, on*), ma la gestione di **collocazioni fisse** e **frasi preposizionali formali** che danno tono e autorevolezza alla tua produzione scritta e orale. 🚀</p>
</div>
<!-- FIXED COLLOCATIONS -->
<div id="collocations" class="fp-box fp-box-pro">
<h2>🌟 Advanced Fixed Collocations</h2>
<p>Le collocazioni sono combinazioni naturali di parole che i madrelingua usano quasi esclusivamente insieme. Sbagliare la preposizione o il verbo in una collocazione rende il linguaggio innaturale.</p>
<div class="fp-table-wrapper">
<table class="fp-table">
<thead>
<tr>
<th>Collocazione</th>
<th>Significato</th>
<th>Esempio</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>In accordance with</strong></td>
<td>In conformità a</td>
<td><em>The company acted <strong>in accordance with</strong> the law.</em></td>
</tr>
<tr>
<td><strong>Adverse to / Averse to</strong></td>
<td>Contrario a / Avverso a</td>
<td><em>He is <strong>averse to</strong> taking risks.</em></td>
</tr>
<tr>
<td><strong>To be detrimental to</strong></td>
<td>Essere dannoso per</td>
<td><em>Stress is <strong>detrimental to</strong> health.</em></td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- PREPOSITIONAL PHRASES -->
<div id="prepositions" class="fp-box fp-box-pro">
<h2>⏱️ Prepositional Phrases (Formal)</h2>
<p>Queste espressioni sostituiscono spesso congiunzioni semplici o verbi comuni per elevare il registro:</p>
<ul class="fp-list">
<li><strong>With a view to + -ing:</strong> Con l'obiettivo di (es. *I'm saving money <strong>with a view to buying</strong> a house*).</li>
<li><strong>On the grounds that:</strong> Sulla base del fatto che (es. *He resigned <strong>on the grounds that</strong> he wasn't supported*).</li>
<li><strong>In view of / In light of:</strong> In considerazione di (es. *<strong>In light of</strong> recent events, the meeting was cancelled*).</li>
</ul>
</div>
<!-- PREPOSITIONAL DEPENDENCIES -->
<div id="nuances" class="fp-box fp-box-regola">
<h2>🔗 Preposizioni dipendenti (Verb/Adj + Prep)</h2>
<p>Memorizzare queste dipendenze è vitale per il *Use of English (Part 2)*:</p>
<ul class="fp-list">
<li><strong>Sympathetic to:</strong> (Sostenitore di/solidale con) - <em>He is <strong>sympathetic to</strong> the cause.</em></li>
<li><strong>Subject to:</strong> (Soggetto a/condizionato da) - <em>The plan is <strong>subject to</strong> approval.</em></li>
<li><strong>Conducive to:</strong> (Favorevole a) - <em>A quiet environment is <strong>conducive to</strong> study.</em></li>
</ul>
</div>
<!-- ERRORI COMUNI -->
<div id="errori" class="fp-box fp-box-warning">
<h2>🚫 Errori comuni da evitare</h2>
<div class="fp-table-wrapper">
<table class="fp-table">
<thead>
<tr>
<th>Errore C1/C2 ❌</th>
<th>Corretto ✅</th>
</tr>
</thead>
<tbody>
<tr><td>With a view to buy.</td><td>With a view to <strong>buying</strong>. (Dopo 'to' in questa struttura si usa il gerundio!)</td></tr>
<tr><td>Interested on the topic.</td><td>Interested <strong>in</strong> the topic. (Preposizione fissa con 'interested'!)</td></tr>
<tr><td>Based on the fact that he said...</td><td>On the <strong>grounds</strong> that he said... ('Based on' non introduce clausole, 'On the grounds that' sì!)</td></tr>
</tbody>
</table>
</div>
</div>
<!-- ESERCIZIO 1: GAP FILL -->
<div id="esercizi" class="fp-quiz-section">
<h2 style="color: #1e3a8a; margin-top: 0; text-align: center; font-size:1.4rem;">1. Gap Fill & Translation (C1/C2)</h2>
<p style="font-size: 0.95rem; color: #475569; text-align: center; margin-bottom: 20px;">
Completa le frasi inserendo la preposizione o l'espressione corretta.
</p>
<div id="fp-quiz-list"></div>
<div class="fp-btn-container">
<button class="fp-btn fp-btn-check" onclick="validateQuiz()">Check Answers ✅</button>
<button class="fp-btn fp-btn-show" onclick="showSolutions()">Show Solutions 💡</button>
</div>
<div id="fp-final-score" class="fp-score-board">
<video id="fp-cat-reaction-vid" class="fp-cat-video" autoplay loop muted playsinline></video>
<h3 id="fp-score-text"></h3>
<p id="fp-score-msg"></p>
</div>
</div>
<!-- ESERCIZIO 2: SENTENCE BUILDER -->
<div id="reorder" class="fp-reorder-section">
<h2 style="color: #1e40af; margin-top: 0; text-align: center; font-size:1.4rem;">2. Extra: Sentence Builder 🧩</h2>
<p style="font-size: 0.95rem; color: #475569; text-align: center; margin-bottom: 20px;">
Riordina le parole per formare le espressioni corrette!
</p>
<div id="fp-reorder-list"></div>
<div class="fp-btn-container">
<button class="fp-btn fp-btn-check" onclick="validateReorder()">Verify Sentences ✅</button>
<button class="fp-btn fp-btn-show" onclick="showReorderSolutions()">Show Solutions 💡</button>
</div>
<div id="fp-reorder-score" class="fp-score-board" style="margin-top:20px; border: 2px solid transparent;">
<video id="fp-cat-reorder-vid" class="fp-cat-video" autoplay loop muted playsinline></video>
<h3 id="fp-reorder-text"></h3>
<p id="fp-reorder-msg"></p>
</div>
</div>
</div>
<!-- SCRIPT ESERCIZI PROTETTI -->
<script>
(function() {
let solutionsShown = false;
let reorderSolutionsShown = false;
// --- DATI ESERCIZIO 1 ---
const quizData = [
{ type: 'gap', text: "1. The decision was made ________ (accordance) with company policy.", ans: ['in accordance'], ctx: "Collocazione: 'in accordance with'." },
{ type: 'gap', text: "2. He is averse ________ (do) any extra work after hours.", ans: ['to doing'], ctx: "Averse to + gerundio." },
{ type: 'gap', text: "3. This environment is highly conducive ________ (study).", ans: ['to study', 'to studying'], ctx: "Conducive to + sostantivo/gerundio." },
{ type: 'gap', text: "4. ________ (view) to improving results, we hired a consultant.", ans: ['with a view'], ctx: "Struttura: 'with a view to'." },
{ type: 'gap', text: "5. The contract is ________ (subject) to final approval.", ans: ['subject'], ctx: "Dipendenza: 'subject to'." },
{ type: 'trans', text: "6. L'ho fatto con l'obiettivo di imparare.", ans: ['i did it with a view to learning'], ctx: "Traduzione: 'with a view to learning'." },
{ type: 'trans', text: "7. È stato licenziato sulla base del fatto che era inadeguato.", ans: ['he was fired on the grounds that he was inadequate'], ctx: "Traduzione: 'on the grounds that'." }
];
// --- DATI ESERCIZIO 2 ---
const reorderData = [
{ hint: "Non sono contrario ad aiutare.", correct: ["I", "am", "not", "averse", "to", "helping."] },
{ hint: "In considerazione dei fatti, abbiamo deciso di agire.", correct: ["In", "light", "of", "the", "facts,", "we", "decided", "to", "act."] },
{ hint: "Ha agito in accordo con gli ordini ricevuti.", correct: ["He", "acted", "in", "accordance", "with", "the", "orders", "received."] },
{ hint: "Il fumo è dannoso per la salute.", correct: ["Smoking", "is", "detrimental", "to", "health."] },
{ hint: "L'ha fatto con l'obiettivo di guadagnare denaro.", correct: ["He", "did", "it", "with", "a", "view", "to", "earning", "money."] }
];
const catVideos = {
static: "https://fpenglish.top/wp-content/uploads/2026/07/Prof-Meow-Meow-FP-ENGLISH-.TOP-STATIC.webm",
happy: "https://fpenglish.top/wp-content/uploads/2026/07/Prof-Meow-Meow-FP-ENGLISH-.TOP-HAPPY.webm",
angry: "https://fpenglish.top/wp-content/uploads/2026/07/Prof-Meow-Meow-FP-ENGLISH-.TOP-ANGRY.webm",
shocked: "https://fpenglish.top/wp-content/uploads/2026/07/Prof-Meow-Meow-FP-ENGLISH-.TOP-SHOCKED.webm",
ecstatic: "https://fpenglish.top/wp-content/uploads/2026/07/Prof-Meow-Meow-FP-ENGLISH-.TOP-ECSTATIC.webm"
};
// --- LOGICA ESERCIZI ---
function initQuiz() {
const container = document.getElementById('fp-quiz-list');
if (!container) return;
let htmlBuilder = "";
quizData.forEach((item, index) => {
if(item.type === 'gap') {
let formattedText = item.text.replace('________', `<input type="text" id="q${index}" class="fp-input-inline" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false">`);
htmlBuilder += `<div class="fp-q-row">${formattedText}</div>`;
} else {
htmlBuilder += `<div class="fp-q-row" style="background:rgba(255,255,255,0.6); padding:15px; border-radius:8px;"><span class="fp-q-text" style="display:block; color:#0f766e; font-size:0.9rem;"><strong>Traduci:</strong> ${item.text}</span><input type="text" id="q${index}" class="fp-input-block" placeholder="Scrivi in inglese..." autocomplete="off"><div id="fb${index}" class="fp-feedback"></div></div>`;
}
});
container.innerHTML = htmlBuilder;
}
function initReorder() {
const container = document.getElementById('fp-reorder-list');
if (!container) return;
let htmlBuilder = "";
reorderData.forEach((item, index) => {
let scrambled = [...item.correct].sort(() => Math.random() - 0.5);
let chipsHtml = scrambled.map(w => `<div class="fp-word-chip" onclick="window.toggleChip(this, ${index})">${w}</div>`).join('');
htmlBuilder += `<div class="fp-reorder-row"><span class="fp-reorder-hint">🇬🇧 Traduci: <em>${item.hint}</em></span><div id="dropzone-${index}" class="fp-dropzone"></div><div id="bank-${index}" class="fp-word-bank">${chipsHtml}</div><div id="fb-reorder-${index}" class="fp-feedback"></div></div>`;
});
container.innerHTML = htmlBuilder;
}
window.toggleChip = function(chipElem, qIndex) {
const dropzone = document.getElementById(`dropzone-${qIndex}`);
const bank = document.getElementById(`bank-${qIndex}`);
if (chipElem.parentElement === bank) dropzone.appendChild(chipElem);
else bank.appendChild(chipElem);
};
window.validateQuiz = function() {
let score = 0;
quizData.forEach((item, index) => {
let input = document.getElementById(`q${index}`);
if(item.ans.includes(input.value.toLowerCase().trim())) score++;
});
const scoreArea = document.getElementById('fp-final-score');
scoreArea.style.display = 'block';
scoreArea.innerHTML = `<h3>SCORE: ${score}/${quizData.length}</h3>`;
};
window.showSolutions = function() {
quizData.forEach((item, index) => { document.getElementById(`q${index}`).value = item.ans[0]; });
};
window.validateReorder = function() {
let score = 0;
reorderData.forEach((item, index) => {
const dropzone = document.getElementById(`dropzone-${index}`);
const userWords = Array.from(dropzone.children).map(c => c.innerText);
if(userWords.join(" ") === item.correct.join(" ")) score++;
});
const scoreArea = document.getElementById('fp-reorder-score');
scoreArea.style.display = 'block';
scoreArea.innerHTML = `<h3>SCORE: ${score}/${reorderData.length}</h3>`;
};
window.showReorderSolutions = function() {
reorderData.forEach((item, index) => {
const dropzone = document.getElementById(`dropzone-${index}`);
const bank = document.getElementById(`bank-${index}`);
dropzone.innerHTML = '';
item.correct.forEach(word => dropzone.innerHTML += `<div class="fp-word-chip" style="pointer-events:none;">${word}</div>`);
});
};
initQuiz(); initReorder();
})();
</script>