1+ <!DOCTYPE html>
2+ < html lang ="es ">
3+ < head >
4+ <!-- Global site tag (gtag.js) - Google Analytics -->
5+ < script async src ="https://www.googletagmanager.com/gtag/js?id=UA-72294820-1 "> </ script >
6+ < script >
7+ window . dataLayer = window . dataLayer || [ ] ;
8+ function gtag ( ) { dataLayer . push ( arguments ) ; }
9+ gtag ( 'js' , new Date ( ) ) ;
10+ gtag ( 'config' , 'UA-72294820-1' ) ;
11+ </ script >
12+ < title > alhambra - zesameri</ title >
13+ < meta http-equiv ="Content-Type " content ="text/html; charset=UTF-8 ">
14+ < meta name ="viewport " content ="width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1, maximum-scale=1 ">
15+ < meta name ="author " content ="kvitka ">
16+ < meta name ="theme-color " content ="#111 ">
17+ <!-- Styles -->
18+ < link href ="../css/main.css " rel ="stylesheet ">
19+ < link href ="../css/crumple.css " rel ="stylesheet ">
20+ < link href ="../css/font.css " rel ="stylesheet ">
21+ < link href ="../css/mobile.css " rel ="stylesheet ">
22+ < link href ="../css/alhambra.css " rel ="stylesheet ">
23+ <!-- Webpage Icon -->
24+ < link rel ="shortcut icon " href ="../assets/images/icon.png " type ="image/png ">
25+ <!-- Fonts -->
26+ < link href ="https://fonts.googleapis.com/css?family=Roboto+Slab " rel ="stylesheet ">
27+ </ head >
28+ < body >
29+ < canvas id ="triangleCanvas "> </ canvas >
30+ < canvas id ="gridCanvas "> </ canvas >
31+
32+ < div class ="content-wrapper ">
33+ < section class ="hero ">
34+ < div class ="top-bar ">
35+ < h1 class ="header ">
36+ < a class ="simple-link " href ="./art.html "> arte </ a >
37+ < img class ="header-img " src ="../assets/images/flower.svg " alt ="Flower ">
38+ </ h1 >
39+ </ div >
40+ < div class ="bio ">
41+ < p >
42+ Visité los Palacios Nazaríes de la Alhambra el verano pasado.
43+ Después de quedarme despierta hasta tarde para conseguir una entrada temprana,
44+ me desperté antes del amanecer para subir a la entrada de la finca.
45+ Como alcanzar a Alá, se sintió sagrado.
46+ De niña, quería ser mosaicista,
47+ dando forma a cuadrados de vidrio en formas fluidas.
48+ Reavivé esa maravilla reconstruyendo estos patrones.
49+ Siglos de geometría desenredándose, puedo sentir su devoción.
50+
51+ </ p >
52+ </ div >
53+ </ section >
54+ < footer class ="footer " id ="footer ">
55+ < a href ="../ "> inicio</ a >
56+ < a data-pattern ="triangle "> noche estrellada</ a >
57+ < a data-pattern ="grid "> diamantes</ a >
58+ < div class ="lang-switcher "> < a href ="../alhambra.html "> EN</ a > · ES · < a href ="../uk/alhambra.html "> UK</ a > · < a href ="../zh/alhambra.html "> 中文</ a > </ div >
59+ </ footer >
60+ </ div >
61+
62+ < script >
63+ // Pattern controller for alhambra page
64+ const footerLinks = document . querySelectorAll ( '.footer a[data-pattern]' ) ;
65+ const triangleCanvas = document . getElementById ( 'triangleCanvas' ) ;
66+ const gridCanvas = document . getElementById ( 'gridCanvas' ) ;
67+
68+ // Load triangle pattern
69+ const triangleScript = document . createElement ( 'script' ) ;
70+ triangleScript . src = '../js/triangle.js' ;
71+
72+ // Load grid pattern
73+ const gridScript = document . createElement ( 'script' ) ;
74+ gridScript . src = '../js/alhambra-grid.js' ;
75+
76+ document . body . appendChild ( triangleScript ) ;
77+ document . body . appendChild ( gridScript ) ;
78+
79+ // Handle pattern switching
80+ footerLinks . forEach ( link => {
81+ link . addEventListener ( 'mouseenter' , ( e ) => {
82+ const pattern = e . target . dataset . pattern ;
83+
84+ if ( pattern === 'triangle' ) {
85+ triangleCanvas . classList . add ( 'visible' ) ;
86+ } else if ( pattern === 'grid' ) {
87+ gridCanvas . classList . add ( 'visible' ) ;
88+ }
89+
90+ document . querySelector ( '.bio' ) . style . display = 'none' ;
91+ } ) ;
92+
93+ link . addEventListener ( 'mouseleave' , ( ) => {
94+ triangleCanvas . classList . remove ( 'visible' ) ;
95+ gridCanvas . classList . remove ( 'visible' ) ;
96+ document . querySelector ( '.bio' ) . style . display = 'block' ;
97+ } ) ;
98+
99+ // Add mobile click functionality
100+ link . addEventListener ( 'click' , ( e ) => {
101+ e . preventDefault ( ) ;
102+ const pattern = link . getAttribute ( 'data-pattern' ) ;
103+
104+ if ( pattern === 'triangles' ) {
105+ triangleCanvas . classList . add ( 'visible' ) ;
106+ gridCanvas . classList . remove ( 'visible' ) ;
107+ } else if ( pattern === 'grid' ) {
108+ gridCanvas . classList . add ( 'visible' ) ;
109+ triangleCanvas . classList . remove ( 'visible' ) ;
110+ }
111+
112+ document . querySelector ( '.bio' ) . style . display = 'none' ;
113+
114+ // Auto-hide after 3 seconds on mobile
115+ setTimeout ( ( ) => {
116+ triangleCanvas . classList . remove ( 'visible' ) ;
117+ gridCanvas . classList . remove ( 'visible' ) ;
118+ document . querySelector ( '.bio' ) . style . display = 'block' ;
119+ } , 3000 ) ;
120+ } ) ;
121+ } ) ;
122+ </ script >
123+ </ body >
124+ </ html >
0 commit comments