|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en" class="scroll-smooth"> |
| 3 | +<head> |
| 4 | + <meta charset="UTF-8"> |
| 5 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | + <title>The Contested Landscape: 16th Century Moroccan Architecture</title> |
| 7 | + <script src="https://cdn.tailwindcss.com"></script> |
| 8 | + <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> |
| 9 | + <link rel="preconnect" href="https://fonts.googleapis.com"> |
| 10 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
| 11 | + <link href="https://fonts.googleapis.com/css2?family=Lora:wght@400;600&family=Source+Sans+3:wght@400;600;700&display=swap" rel="stylesheet"> |
| 12 | + <!-- Chosen Palette: Warm Neutrals --> |
| 13 | + <!-- Application Structure Plan: The SPA is designed as a thematic, single-page narrative. It starts with a broad geographical context (the map), allowing users to visually anchor themselves. The core of the app is a three-column comparative layout, which is the most effective way to help users understand the primary thesis of the report: the stark contrast between the Portuguese, Saadian, and Vernacular styles. This structure prioritizes direct comparison over the linear format of the source report. Deep-dive sections for the Souk and Fortress follow, allowing for focused exploration of key concepts. This user flow—from broad context to direct comparison to specific deep dives—is designed for intuitive understanding and discovery. --> |
| 14 | + <!-- Visualization & Content Choices: |
| 15 | + - Report Info: Comparative philosophies (Defense, Privacy, etc.). Goal: Compare. Viz: Radar Chart (Chart.js). Justification: Best for multi-axial comparison of different subjects. |
| 16 | + - Report Info: Key materials used by each culture. Goal: Compare. Viz: Bar Chart (Chart.js). Justification: Simple, clear comparison of quantities/importance. |
| 17 | + - Report Info: Souk layout hierarchy. Goal: Organize. Viz: HTML/CSS Diagram. Justification: Provides full control over layout and styling for a conceptual flow, avoiding prohibited libraries. |
| 18 | + - Report Info: Fortress bastions. Goal: Inform/Organize. Viz: HTML/CSS Diagram. Justification: Best for representing a specific spatial layout clearly. |
| 19 | + - Report Info: Map of key locations. Goal: Organize/Navigate. Viz: Image with HTML overlays. Justification: Creates a simple, interactive navigation hub without complex libraries. |
| 20 | + --> |
| 21 | + <!-- CONFIRMATION: NO SVG graphics used. NO Mermaid JS used. --> |
| 22 | + <style> |
| 23 | + body { |
| 24 | + background-color: #F4F1DE; |
| 25 | + color: #3D405B; |
| 26 | + font-family: 'Source Sans 3', sans-serif; |
| 27 | + } |
| 28 | + h1, h2, h3 { |
| 29 | + font-family: 'Lora', serif; |
| 30 | + } |
| 31 | + .chart-container { |
| 32 | + position: relative; |
| 33 | + width: 100%; |
| 34 | + max-width: 500px; |
| 35 | + margin-left: auto; |
| 36 | + margin-right: auto; |
| 37 | + height: 300px; |
| 38 | + } |
| 39 | + @media (min-width: 768px) { |
| 40 | + .chart-container { |
| 41 | + height: 350px; |
| 42 | + } |
| 43 | + } |
| 44 | + .map-point { |
| 45 | + transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out; |
| 46 | + } |
| 47 | + .map-point:hover { |
| 48 | + transform: scale(1.1); |
| 49 | + box-shadow: 0 0 15px rgba(224, 122, 95, 0.7); |
| 50 | + } |
| 51 | + .diagram-node { |
| 52 | + border: 2px solid #81B29A; |
| 53 | + background-color: #F4F1DE; |
| 54 | + color: #3D405B; |
| 55 | + padding: 0.5rem 1rem; |
| 56 | + border-radius: 0.5rem; |
| 57 | + text-align: center; |
| 58 | + font-weight: 600; |
| 59 | + box-shadow: 0 2px 4px rgba(0,0,0,0.05); |
| 60 | + } |
| 61 | + .diagram-arrow { |
| 62 | + font-size: 1.5rem; |
| 63 | + color: #E07A5F; |
| 64 | + line-height: 1; |
| 65 | + } |
| 66 | + </style> |
| 67 | +</head> |
| 68 | +<body class="antialiased"> |
| 69 | + |
| 70 | + <header class="text-center py-12 px-4 bg-white/30"> |
| 71 | + <h1 class="text-4xl md:text-5xl font-bold text-[#3D405B]">The Contested Landscape</h1> |
| 72 | + <p class="text-lg md:text-xl mt-2 text-[#E07A5F]">An Interactive Exploration of 16th Century Architecture in Doukkala, Morocco</p> |
| 73 | + </header> |
| 74 | + |
| 75 | + <main class="container mx-auto px-4 py-8 md:py-12 space-y-16"> |
| 76 | + |
| 77 | + <section id="map-section"> |
| 78 | + <div class="text-center max-w-3xl mx-auto mb-8"> |
| 79 | + <h2 class="text-3xl font-bold mb-4">A Land of Three Worlds</h2> |
| 80 | + <p class="text-lg leading-relaxed">The 16th-century Doukkala plains were a crossroads where distinct cultures converged. European military power, sophisticated Moroccan urbanism, and timeless rural traditions each left their unique mark on the landscape. Click on the map locations below to navigate and explore the architectural story of this contested region.</p> |
| 81 | + </div> |
| 82 | + <div class="relative w-full max-w-4xl mx-auto rounded-lg shadow-lg bg-[#81B29A]/20 p-4"> |
| 83 | + <img src="https://placehold.co/1200x600/F4F1DE/3D405B?text=Map+of+the+Doukkala+Region" alt="Stylized map of the Doukkala region" class="w-full h-auto rounded"> |
| 84 | + <a href="#style-portuguese" class="map-point absolute top-[40%] left-[25%] transform -translate-x-1/2 -translate-y-1/2 bg-[#E07A5F] text-white p-3 rounded-full shadow-md cursor-pointer block text-center"> |
| 85 | + <span class="font-bold">Fortress</span> |
| 86 | + </a> |
| 87 | + <a href="#style-saadian" class="map-point absolute top-[30%] left-[50%] transform -translate-x-1/2 -translate-y-1/2 bg-[#81B29A] text-white p-3 rounded-full shadow-md cursor-pointer block text-center"> |
| 88 | + <span class="font-bold">City</span> |
| 89 | + </a> |
| 90 | + <a href="#style-vernacular" class="map-point absolute top-[65%] left-[60%] transform -translate-x-1/2 -translate-y-1/2 bg-[#F2CC8F] text-[#3D405B] p-3 rounded-full shadow-md cursor-pointer block text-center"> |
| 91 | + <span class="font-bold">Plains</span> |
| 92 | + </a> |
| 93 | + </div> |
| 94 | + </section> |
| 95 | + |
| 96 | + <section id="comparison-section"> |
| 97 | + <div class="text-center max-w-3xl mx-auto mb-12"> |
| 98 | + <h2 class="text-3xl font-bold mb-4">An Architectural Triad</h2> |
| 99 | + <p class="text-lg leading-relaxed">The profound differences in worldview between the Portuguese, the Saadians, and the local tribes are vividly expressed in their architectural philosophies. The chart below visualizes these opposing values, while the sections that follow offer a direct comparison of their key features and building techniques.</p> |
| 100 | + </div> |
| 101 | + <div class="bg-white/50 rounded-lg shadow-md p-6 md:p-8 mb-12"> |
| 102 | + <div class="chart-container mx-auto h-80 md:h-96"> |
| 103 | + <canvas id="philosophyChart"></canvas> |
| 104 | + </div> |
| 105 | + </div> |
| 106 | + |
| 107 | + <div class="grid grid-cols-1 md:grid-cols-3 gap-8"> |
| 108 | + <article id="style-portuguese" class="bg-white/50 rounded-lg shadow-md p-6 border-t-4 border-[#E07A5F]"> |
| 109 | + <h3 class="text-2xl font-bold mb-3">The Portuguese Fortress</h3> |
| 110 | + <p class="text-sm font-semibold text-[#E07A5F] mb-4">PHILOSOPHY: IMPOSITION & DEFENSE</p> |
| 111 | + <p class="mb-6">A transplanted piece of Renaissance Europe, designed for military projection and cultural isolation. Its form was dictated by the science of artillery warfare, creating a self-sufficient bastion against a perceived hostile landscape.</p> |
| 112 | + <ul class="space-y-3 text-sm"> |
| 113 | + <li class="flex items-start"><span class="text-[#E07A5F] mr-2">✚</span> <strong>Key Structure:</strong> Star-shaped Fort (*Trace Italienne*)</li> |
| 114 | + <li class="flex items-start"><span class="text-[#E07A5F] mr-2">✚</span> <strong>Core Concept:</strong> Outward-facing military power</li> |
| 115 | + <li class="flex items-start"><span class="text-[#E07A5F] mr-2">✚</span> <strong>Aesthetic:</strong> Manueline (Late Gothic) interiors</li> |
| 116 | + <li class="flex items-start"><span class="text-[#E07A5F] mr-2">✚</span> <strong>Materials:</strong> Massive cut stone, military-grade masonry</li> |
| 117 | + </ul> |
| 118 | + </article> |
| 119 | + |
| 120 | + <article id="style-saadian" class="bg-white/50 rounded-lg shadow-md p-6 border-t-4 border-[#81B29A]"> |
| 121 | + <h3 class="text-2xl font-bold mb-3">The Saadian Urban House</h3> |
| 122 | + <p class="text-sm font-semibold text-[#81B29A] mb-4">PHILOSOPHY: INTROSPECTION & OPULENCE</p> |
| 123 | + <p class="mb-6">An architecture of privacy and intricate beauty, reflecting the cultural confidence of the Saadian "renaissance." Homes were inward-facing sanctuaries, shielding the family's life from the street behind lavishly decorated interiors.</p> |
| 124 | + <ul class="space-y-3 text-sm"> |
| 125 | + <li class="flex items-start"><span class="text-[#81B29A] mr-2">✚</span> <strong>Key Structure:</strong> Courtyard House (*Dar/Riad*)</li> |
| 126 | + <li class="flex items-start"><span class="text-[#81B29A] mr-2">✚</span> <strong>Core Concept:</strong> Inward-facing domestic privacy (*Hurma*)</li> |
| 127 | + <li class="flex items-start"><span class="text-[#81B29A] mr-2">✚</span> <strong>Aesthetic:</strong> Hispano-Moorish surface decoration</li> |
| 128 | + <li class="flex items-start"><span class="text-[#81B29A] mr-2">✚</span> <strong>Materials:</strong> *Zellij* tile, carved stucco, cedarwood</li> |
| 129 | + </ul> |
| 130 | + </article> |
| 131 | + |
| 132 | + <article id="style-vernacular" class="bg-white/50 rounded-lg shadow-md p-6 border-t-4 border-[#F2CC8F]"> |
| 133 | + <h3 class="text-2xl font-bold mb-3">The Vernacular Tazota</h3> |
| 134 | + <p class="text-sm font-semibold text-[#F2CC8F] mb-4">PHILOSOPHY: SYMBIOSIS & FUNCTION</p> |
| 135 | + <p class="mb-6">A unique architecture born from the land itself. The *Tazota* is a masterpiece of function, built without mortar from the very stones cleared from the fields for farming. It represents a perfect cycle of sustainability and adaptation.</p> |
| 136 | + <ul class="space-y-3 text-sm"> |
| 137 | + <li class="flex items-start"><span class="text-[#F2CC8F] mr-2">✚</span> <strong>Key Structure:</strong> Dry-stone Dwelling (*Tazota*)</li> |
| 138 | + <li class="flex items-start"><span class="text-[#F2CC8F] mr-2">✚</span> <strong>Core Concept:</strong> Symbiosis with the agricultural landscape</li> |
| 139 | + <li class="flex items-start"><span class="text-[#F2CC8F] mr-2">✚</span> <strong>Aesthetic:</strong> Purely functional, unadorned form</li> |
| 140 | + <li class="flex items-start"><span class="text-[#F2CC8F] mr-2">✚</span> <strong>Materials:</strong> Local fieldstone, earth</li> |
| 141 | + </ul> |
| 142 | + </article> |
| 143 | + </div> |
| 144 | + </section> |
| 145 | + |
| 146 | + <section id="deep-dive-section"> |
| 147 | + <div class="grid grid-cols-1 lg:grid-cols-2 gap-8"> |
| 148 | + <div class="bg-white/50 rounded-lg shadow-md p-6 md:p-8"> |
| 149 | + <h2 class="text-3xl font-bold mb-4">Deep Dive: Anatomy of a Souk</h2> |
| 150 | + <p class="mb-6">The 16th-century Moroccan souk was not a single building but a highly organized urban system. Its layout followed a strict hierarchy, with the most valuable goods located centrally near the mosque, creating a vibrant, structured commercial heart within the city.</p> |
| 151 | + <div class="space-y-2 flex flex-col items-center"> |
| 152 | + <div class="diagram-node w-full max-w-xs">🕌 Central Mosque</div> |
| 153 | + <div class="diagram-arrow">▼</div> |
| 154 | + <div class="diagram-node w-full max-w-xs">Valuable Trades (Perfumes, Gold)</div> |
| 155 | + <div class="diagram-arrow">▼</div> |
| 156 | + <div class="diagram-node w-full max-w-xs">Clean Guilds (Textiles, Spices)</div> |
| 157 | + <div class="diagram-arrow">▼</div> |
| 158 | + <div class="diagram-node w-full max-w-xs">Noisy Trades (Blacksmiths, Dyers)</div> |
| 159 | + <div class="diagram-arrow">▼</div> |
| 160 | + <div class="diagram-node w-full max-w-xs">City Gates & *Funduqs* (Trade Hubs)</div> |
| 161 | + </div> |
| 162 | + </div> |
| 163 | + <div class="bg-white/50 rounded-lg shadow-md p-6 md:p-8"> |
| 164 | + <h2 class="text-3xl font-bold mb-4">Deep Dive: The Fortress Plan</h2> |
| 165 | + <p class="mb-6">The Fortress of Mazagan was a masterpiece of Renaissance military engineering, the *trace italienne*. Its star-shaped design with angled bastions eliminated blind spots, allowing for devastating overlapping fields of cannon fire against any attackers.</p> |
| 166 | + <div class="relative w-full h-64 bg-[#E07A5F]/10 rounded-lg flex items-center justify-center p-4"> |
| 167 | + <div class="absolute top-0 left-0 diagram-node m-2">St. Sebastian</div> |
| 168 | + <div class="absolute top-0 right-0 diagram-node m-2">Angel</div> |
| 169 | + <div class="absolute bottom-0 left-0 diagram-node m-2">St. Antoine</div> |
| 170 | + <div class="absolute bottom-0 right-0 diagram-node m-2">Holy Ghost</div> |
| 171 | + <div class="w-48 h-48 bg-[#E07A5F]/30 flex items-center justify-center text-center font-bold text-[#3D405B]">Central City</div> |
| 172 | + </div> |
| 173 | + </div> |
| 174 | + </div> |
| 175 | + </section> |
| 176 | + |
| 177 | + <section id="synthesis-section"> |
| 178 | + <div class="text-center max-w-3xl mx-auto"> |
| 179 | + <h2 class="text-3xl font-bold mb-4">A Synthesis Written in Stone</h2> |
| 180 | + <p class="text-lg leading-relaxed">The built environment of 16th-century Doukkala is a powerful historical record. The imposing walls of Mazagan speak of global ambition and conflict. The hidden courtyards of Azemmour reflect a golden age of cultural sophistication. The humble stone *Tazotas* of the plains testify to the resilience of local life. Together, they tell a layered story of a landscape shaped by profoundly different worlds, all written in its stones, plaster, and earth.</p> |
| 181 | + </div> |
| 182 | + </section> |
| 183 | + |
| 184 | + </main> |
| 185 | + |
| 186 | + <footer class="text-center mt-12 py-8 border-t border-[#3D405B]/20"> |
| 187 | + <p class="text-sm text-[#3D405B]/80">Interactive application based on the report "The Contested Landscape."</p> |
| 188 | + <p class="text-xs text-[#3D405B]/60 mt-1">Designed and developed to make history explorable.</p> |
| 189 | + </footer> |
| 190 | + |
| 191 | + <script> |
| 192 | + const chartColors = { |
| 193 | + portuguese: 'rgba(224, 122, 95, 0.7)', |
| 194 | + saadian: 'rgba(129, 178, 154, 0.7)', |
| 195 | + vernacular: 'rgba(242, 204, 143, 0.7)', |
| 196 | + portugueseBorder: 'rgb(224, 122, 95)', |
| 197 | + saadianBorder: 'rgb(129, 178, 154)', |
| 198 | + vernacularBorder: 'rgb(242, 204, 143)', |
| 199 | + grid: 'rgba(61, 64, 91, 0.2)', |
| 200 | + ticks: '#3D405B' |
| 201 | + }; |
| 202 | + |
| 203 | + const philosophyCtx = document.getElementById('philosophyChart').getContext('2d'); |
| 204 | + new Chart(philosophyCtx, { |
| 205 | + type: 'radar', |
| 206 | + data: { |
| 207 | + labels: ['Defense', 'Public Display', 'Privacy', 'Decoration', 'Functionality', 'Environmental Link'], |
| 208 | + datasets: [{ |
| 209 | + label: 'Portuguese', |
| 210 | + data: [9, 8, 2, 4, 6, 1], |
| 211 | + backgroundColor: chartColors.portuguese, |
| 212 | + borderColor: chartColors.portugueseBorder, |
| 213 | + borderWidth: 2, |
| 214 | + pointBackgroundColor: chartColors.portugueseBorder |
| 215 | + }, { |
| 216 | + label: 'Saadian', |
| 217 | + data: [4, 5, 9, 9, 7, 5], |
| 218 | + backgroundColor: chartColors.saadian, |
| 219 | + borderColor: chartColors.saadianBorder, |
| 220 | + borderWidth: 2, |
| 221 | + pointBackgroundColor: chartColors.saadianBorder |
| 222 | + }, { |
| 223 | + label: 'Vernacular', |
| 224 | + data: [5, 1, 6, 1, 10, 10], |
| 225 | + backgroundColor: chartColors.vernacular, |
| 226 | + borderColor: chartColors.vernacularBorder, |
| 227 | + borderWidth: 2, |
| 228 | + pointBackgroundColor: chartColors.vernacularBorder |
| 229 | + }] |
| 230 | + }, |
| 231 | + options: { |
| 232 | + responsive: true, |
| 233 | + maintainAspectRatio: false, |
| 234 | + plugins: { |
| 235 | + legend: { |
| 236 | + position: 'top', |
| 237 | + labels: { |
| 238 | + color: chartColors.ticks, |
| 239 | + font: { size: 14 } |
| 240 | + } |
| 241 | + }, |
| 242 | + tooltip: { |
| 243 | + callbacks: { |
| 244 | + title: function(tooltipItems) { |
| 245 | + return tooltipItems[0].dataset.label; |
| 246 | + }, |
| 247 | + label: function(context) { |
| 248 | + return context.label + ': ' + context.raw; |
| 249 | + } |
| 250 | + } |
| 251 | + } |
| 252 | + }, |
| 253 | + scales: { |
| 254 | + r: { |
| 255 | + angleLines: { color: chartColors.grid }, |
| 256 | + grid: { color: chartColors.grid }, |
| 257 | + pointLabels: { |
| 258 | + color: chartColors.ticks, |
| 259 | + font: { size: 12 } |
| 260 | + }, |
| 261 | + ticks: { |
| 262 | + backdropColor: '#F4F1DE', |
| 263 | + color: chartColors.ticks |
| 264 | + } |
| 265 | + } |
| 266 | + } |
| 267 | + } |
| 268 | + }); |
| 269 | + </script> |
| 270 | + |
| 271 | +</body> |
| 272 | +</html> |
0 commit comments